Projects
openEuler:20.03:LTS:SP1
boost
_service:tar_scm_kernel_repo:regex-fix-dead-loo...
Sign Up
Log In
Username
Password
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File _service:tar_scm_kernel_repo:regex-fix-dead-loop-in-parse_repeat.patch of Package boost
From 91107fe78a290a7d25a042fec09ea89f14f480d9 Mon Sep 17 00:00:00 2001 From: xuhuijie <xuhuijie2@huawei.com> Date: Wed, 16 Jun 2021 15:47:22 +0800 Subject: [PATCH] regex: fix dead loop in parse_repea There is a bug in parse_repeat(), after deal with comment the contin value will be always true. So we enter a dead loop. To deal with this, we assign contin to false each time we enter the loop. Testcase: boost::regex(std::string("1?+(?#)1")) Signed-off-by: Xu Huijie <xuhuijie2@huawei.com> --- boost/regex/v4/basic_regex_parser.hpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/boost/regex/v4/basic_regex_parser.hpp b/boost/regex/v4/basic_regex_parser.hpp index 6c7065f05..de22f7000 100644 --- a/boost/regex/v4/basic_regex_parser.hpp +++ b/boost/regex/v4/basic_regex_parser.hpp @@ -1080,9 +1080,10 @@ bool basic_regex_parser<charT, traits>::parse_repeat(std::size_t low, std::size_ // Check for illegal following quantifier, we have to do this here, because // the extra states we insert below circumvents our usual error checking :-( // - bool contin = false; + bool contin; do { + contin = false; if ((this->flags() & (regbase::main_option_type | regbase::mod_x | regbase::no_perl_ex)) == regbase::mod_x) { // whitespace skip: -- 2.23.0
Locations
Projects
Search
Status Monitor
Help
Open Build Service
OBS Manuals
API Documentation
OBS Portal
Reporting a Bug
Contact
Mailing List
Forums
Chat (IRC)
Twitter
Open Build Service (OBS)
is an
openSUSE project
.