diff options
| author | Szabolcs Nagy <nsz@port70.net> | 2026-03-23 17:33:20 +0000 |
|---|---|---|
| committer | Rich Felker <dalias@aerifal.cx> | 2026-03-30 15:59:35 -0400 |
| commit | 40acb04b2c1291f7d3091c61080109da11eea48b (patch) | |
| tree | 06a95e4fed688e1bc3d1f254a7e2a9c0769f65f0 /src/fenv/armhf | |
| parent | 0572555dab1d1e10b5f7351a005ec588cab41e25 (diff) | |
| download | musl-40acb04b2c1291f7d3091c61080109da11eea48b.tar.gz | |
regex: reject invalid \digit back reference in BRE
in BRE \n matches the nth subexpression, but regcomp did not check if
the nth subexpression was complete or not, only that there were more
subexpressions overall than the largest backref.
fix regcomp to error if the referenced subexpression is incomplete.
the bug could cause an infinite loop in regexec:
regcomp(&re, "\\(^a*\\1\\)*", 0);
regexec(&re, "aa", 0, 0, 0);
since BRE has backreferences, any application accepting a BRE from
untrusted sources is already vulnerable to an attacker-controlled
near-infinite (exponential-time) loop, but this particular case where
the loop is actually infinite can and should be avoided.
ERE is not affected since the language an ERE describes is actually
regular.
Reported-by: Simon Resch <simon.resch@code-intelligence.com>
Diffstat (limited to 'src/fenv/armhf')
0 files changed, 0 insertions, 0 deletions
