fix integer overflow when parsing Perl-extended named backrefs

This commit is contained in:
Christian Mazakas
2025-02-27 09:00:12 -08:00
parent 34b1c2f615
commit f0ae2d8f57
3 changed files with 60 additions and 0 deletions

View File

@ -898,6 +898,11 @@ escape_type_class_jump:
}
const charT* pc = m_position;
std::intmax_t i = this->m_traits.toi(pc, m_end, 10);
if(i < 0 && !syn_end)
{
fail(regex_constants::error_backref, m_position - m_base);
return false;
}
if((i < 0) && syn_end)
{
// Check for a named capture, get the leftmost one if there is more than one: