summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSzabolcs Nagy <nsz@port70.net>2015-03-22 18:32:55 +0000
committerRich Felker <dalias@aerifal.cx>2015-03-23 12:28:49 -0400
commit32dee9b9b1e557a73cc4427455cd00cb2571436c (patch)
tree4a449ad0502c4591e977e8e982a0adc8d1633bf0
parent11d1e2e2ded07673411ba872c1e3d0096dc79439 (diff)
downloadmusl-32dee9b9b1e557a73cc4427455cd00cb2571436c.tar.gz
do not treat \0 as a backref in BRE
The valid BRE backref tokens are \1 .. \9, and 0 is not a special character either so \0 is undefined by the standard. Such undefined escaped characters are treated as literal characters currently, following existing practice, so \0 is the same as 0.
-rw-r--r--src/regex/regcomp.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/src/regex/regcomp.c b/src/regex/regcomp.c
index 4d80cb1c..dfa9727c 100644
--- a/src/regex/regcomp.c
+++ b/src/regex/regcomp.c
@@ -839,7 +839,7 @@ static reg_errcode_t parse_atom(tre_parse_ctx_t *ctx, const char *s)
s--;
break;
default:
- if (!ere && isdigit(*s)) {
+ if (!ere && (unsigned)*s-'1' < 9) {
/* back reference */
int val = *s - '0';
node = tre_ast_new_literal(ctx->mem, BACKREF, val, ctx->position);