diff options
author | NIIBE Yutaka <[email protected]> | 2020-02-12 03:51:16 +0000 |
---|---|---|
committer | NIIBE Yutaka <[email protected]> | 2020-02-12 03:51:16 +0000 |
commit | 29eb843fa52242627dec79840e6bc5be5ed98cc7 (patch) | |
tree | e0028ed51bb7273502eae9463aa84950cec9e9e2 | |
parent | regexp: Fix use of regexp in g10/trustdb.c. (diff) | |
download | gnupg-29eb843fa52242627dec79840e6bc5be5ed98cc7.tar.gz gnupg-29eb843fa52242627dec79840e6bc5be5ed98cc7.zip |
regexp: Check if ->pmatch != NULL.
Signed-off-by: NIIBE Yutaka <[email protected]>
-rw-r--r-- | regexp/jimregexp.c | 16 | ||||
-rw-r--r-- | regexp/jimregexp.h | 6 |
2 files changed, 13 insertions, 9 deletions
diff --git a/regexp/jimregexp.c b/regexp/jimregexp.c index 2ea3a7d13..cab83b920 100644 --- a/regexp/jimregexp.c +++ b/regexp/jimregexp.c @@ -1214,12 +1214,16 @@ static int regtry( regex_t *preg, const char *string ) preg->reginput = string; for (i = 0; i < preg->nmatch; i++) { - preg->pmatch[i].rm_so = -1; - preg->pmatch[i].rm_eo = -1; + if (preg->pmatch) { + preg->pmatch[i].rm_so = -1; + preg->pmatch[i].rm_eo = -1; + } } if (regmatch(preg, 1)) { - preg->pmatch[0].rm_so = string - preg->start; - preg->pmatch[0].rm_eo = preg->reginput - preg->start; + if (preg->pmatch) { + preg->pmatch[0].rm_so = string - preg->start; + preg->pmatch[0].rm_eo = preg->reginput - preg->start; + } return(1); } else return(0); @@ -1569,13 +1573,13 @@ static int regmatch(regex_t *preg, int prog) if (regmatch(preg, next)) { if (OP(preg, scan) < CLOSE) { int no = OP(preg, scan) - OPEN; - if (no < preg->nmatch && preg->pmatch[no].rm_so == -1) { + if (no < preg->nmatch && preg->pmatch && preg->pmatch[no].rm_so == -1) { preg->pmatch[no].rm_so = save - preg->start; } } else { int no = OP(preg, scan) - CLOSE; - if (no < preg->nmatch && preg->pmatch[no].rm_eo == -1) { + if (no < preg->nmatch && preg->pmatch && preg->pmatch[no].rm_eo == -1) { preg->pmatch[no].rm_eo = save - preg->start; } } diff --git a/regexp/jimregexp.h b/regexp/jimregexp.h index b7598d4b3..581b7104c 100644 --- a/regexp/jimregexp.h +++ b/regexp/jimregexp.h @@ -37,7 +37,7 @@ typedef struct { * it anyway. */ -typedef struct regexp { +struct regexp { /* -- public -- */ int re_nsub; /* number of parenthesized subexpressions */ @@ -64,9 +64,9 @@ typedef struct regexp { /* Input to regexec() */ regmatch_t *pmatch; /* submatches will be stored here */ int nmatch; /* size of pmatch[] */ -} regexp; +}; -typedef regexp regex_t; +typedef struct regexp regex_t; #define REG_EXTENDED 0 #define REG_NEWLINE 1 |