summaryrefslogtreecommitdiff
path: root/src/regex/regcomp.c
diff options
context:
space:
mode:
authorSzabolcs Nagy <[email protected]>2015-03-22 18:32:55 +0000
committerRich Felker <[email protected]>2015-03-23 12:28:49 -0400
commit32dee9b9b1e557a73cc4427455cd00cb2571436c (patch)
tree4a449ad0502c4591e977e8e982a0adc8d1633bf0 /src/regex/regcomp.c
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.
Diffstat (limited to 'src/regex/regcomp.c')
-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);