regex: treat \+, \? as repetitions in BRE

These are undefined escape sequences by the standard, but often
used in sed scripts.
This commit is contained in:
Szabolcs Nagy 2015-04-18 17:28:49 +00:00 committed by Rich Felker
parent 03498ec22a
commit 25160f1c08
1 changed files with 5 additions and 1 deletions

View File

@ -838,6 +838,9 @@ static reg_errcode_t parse_atom(tre_parse_ctx_t *ctx, const char *s)
s--;
break;
case '{':
case '+':
case '?':
/* extension: treat \+, \? as repetitions in BRE */
/* reject repetitions after empty expression in BRE */
if (!ere)
return REG_BADRPT;
@ -993,7 +996,8 @@ static reg_errcode_t tre_parse(tre_parse_ctx_t *ctx)
}
if (*s=='\\' && ere)
break;
if (*s=='\\' && s[1]!='{')
/* extension: treat \+, \? as repetitions in BRE */
if (*s=='\\' && s[1]!='+' && s[1]!='?' && s[1]!='{')
break;
if (*s=='\\')
s++;