mirror of
https://github.com/boostorg/regex.git
synced 2025-07-17 06:12:10 +02:00
Fix buffer over-run error when parsing invalid regex.
See: https://svn.boost.org/trac/boost/ticket/12222.
This commit is contained in:
@ -543,7 +543,11 @@ bool basic_regex_parser<charT, traits>::parse_open_paren()
|
||||
template <class charT, class traits>
|
||||
bool basic_regex_parser<charT, traits>::parse_basic_escape()
|
||||
{
|
||||
++m_position;
|
||||
if(++m_position == m_end)
|
||||
{
|
||||
fail(regex_constants::error_paren, m_position - m_base);
|
||||
return false;
|
||||
}
|
||||
bool result = true;
|
||||
switch(this->m_traits.escape_syntax_type(*m_position))
|
||||
{
|
||||
|
@ -61,6 +61,7 @@ void basic_tests()
|
||||
TEST_REGEX_SEARCH("\\(\\)", basic, "", match_default, make_array(0, 0, 0, 0, -2, -2));
|
||||
TEST_INVALID_REGEX("\\(", basic);
|
||||
TEST_INVALID_REGEX("\\)", basic);
|
||||
TEST_INVALID_REGEX("\\", basic);
|
||||
TEST_INVALID_REGEX("\\(aa", basic);
|
||||
TEST_INVALID_REGEX("aa\\)", basic);
|
||||
TEST_REGEX_SEARCH("()", basic, "()", match_default, make_array(0, 2, -2, -2));
|
||||
|
Reference in New Issue
Block a user