fix * at the start of a BRE subexpression
authorSzabolcs Nagy <nsz@port70.net>
Mon, 29 Feb 2016 15:04:46 +0000 (15:04 +0000)
committerRich Felker <dalias@aerifal.cx>
Wed, 2 Mar 2016 05:47:19 +0000 (00:47 -0500)
commit 7eaa76fc2e7993582989d3838b1ac32dd8abac09 made * invalid at
the start of a BRE subexpression, but it should be accepted as
literal * there according to the standard.

This patch does not fix subexpressions starting with ^*.

src/regex/regcomp.c

index da6abd18580116206c70c7a8e4a91152f2ab50e9..7a2864cd1458c6abc084a570a3731c77068d8d9d 100644 (file)
@@ -889,7 +889,6 @@ static reg_errcode_t parse_atom(tre_parse_ctx_t *ctx, const char *s)
                s++;
                break;
        case '*':
-               return REG_BADPAT;
        case '{':
        case '+':
        case '?':
@@ -978,9 +977,6 @@ static reg_errcode_t tre_parse(tre_parse_ctx_t *ctx)
                }
 
        parse_iter:
-               /* extension: repetitions are rejected after an empty node
-                  eg. (+), |*, {2}, but assertions are not treated as empty
-                  so ^* or $? are accepted currently. */
                for (;;) {
                        int min, max;