summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorSzabolcs Nagy <nsz@port70.net>2026-03-23 17:33:20 +0000
committerRich Felker <dalias@aerifal.cx>2026-03-30 15:59:35 -0400
commit40acb04b2c1291f7d3091c61080109da11eea48b (patch)
tree06a95e4fed688e1bc3d1f254a7e2a9c0769f65f0 /include
parent0572555dab1d1e10b5f7351a005ec588cab41e25 (diff)
downloadmusl-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 'include')
0 files changed, 0 insertions, 0 deletions