forked from boostorg/regex
Merge branch 'de_fuzz' into develop
This commit is contained in:
@ -28,6 +28,8 @@ following special characters:
|
||||
|
||||
[pre .\[{}()\\\*+?|^$]
|
||||
|
||||
Other characters are special only in certain situations - for example `]` is special only after an opening `[`.
|
||||
|
||||
[h4 Wildcard]
|
||||
|
||||
The single character '.' when used outside of a character set will match
|
||||
|
@ -152,7 +152,7 @@
|
||||
# if defined(BOOST_REGEX_NO_W32) || BOOST_PLAT_WINDOWS_RUNTIME
|
||||
# define BOOST_REGEX_NO_FILEITER
|
||||
# endif
|
||||
#else // defined(_WIN32)
|
||||
#else /* defined(_WIN32) */
|
||||
# if !defined(BOOST_HAS_DIRENT_H)
|
||||
# define BOOST_REGEX_NO_FILEITER
|
||||
# endif
|
||||
|
@ -410,7 +410,7 @@ void copy_results(MR1& out, MR2 const& in)
|
||||
if(in[i].captures().size())
|
||||
{
|
||||
out[i].get_captures().assign(in[i].captures().size(), typename MR1::value_type());
|
||||
for(int j = 0; j < out[i].captures().size(); ++j)
|
||||
for(int j = 0; j < (int)out[i].captures().size(); ++j)
|
||||
{
|
||||
out[i].get_captures()[j].first = in[i].captures()[j].first.base();
|
||||
out[i].get_captures()[j].second = in[i].captures()[j].second.base();
|
||||
|
@ -117,7 +117,10 @@ inline unsigned utf8_trailing_byte_count(boost::uint8_t c)
|
||||
#pragma warning(push)
|
||||
#pragma warning(disable:4100)
|
||||
#endif
|
||||
BOOST_NORETURN inline void invalid_utf32_code_point(::boost::uint32_t val)
|
||||
#ifndef BOOST_NO_EXCEPTIONS
|
||||
BOOST_NORETURN
|
||||
#endif
|
||||
inline void invalid_utf32_code_point(::boost::uint32_t val)
|
||||
{
|
||||
#ifndef BOOST_NO_STD_LOCALE
|
||||
std::stringstream ss;
|
||||
|
@ -77,15 +77,15 @@ public:
|
||||
|
||||
void add_single(const digraph_type& s)
|
||||
{
|
||||
m_singles.insert(m_singles.end(), s);
|
||||
m_singles.insert(s);
|
||||
if(s.second)
|
||||
m_has_digraphs = true;
|
||||
m_empty = false;
|
||||
}
|
||||
void add_range(const digraph_type& first, const digraph_type& end)
|
||||
{
|
||||
m_ranges.insert(m_ranges.end(), first);
|
||||
m_ranges.insert(m_ranges.end(), end);
|
||||
m_ranges.push_back(first);
|
||||
m_ranges.push_back(end);
|
||||
if(first.second)
|
||||
{
|
||||
m_has_digraphs = true;
|
||||
@ -110,7 +110,7 @@ public:
|
||||
}
|
||||
void add_equivalent(const digraph_type& s)
|
||||
{
|
||||
m_equivalents.insert(m_equivalents.end(), s);
|
||||
m_equivalents.insert(s);
|
||||
if(s.second)
|
||||
{
|
||||
m_has_digraphs = true;
|
||||
@ -136,11 +136,12 @@ public:
|
||||
return m_negate;
|
||||
}
|
||||
typedef typename std::vector<digraph_type>::const_iterator list_iterator;
|
||||
list_iterator singles_begin()const
|
||||
typedef typename std::set<digraph_type>::const_iterator set_iterator;
|
||||
set_iterator singles_begin()const
|
||||
{
|
||||
return m_singles.begin();
|
||||
}
|
||||
list_iterator singles_end()const
|
||||
set_iterator singles_end()const
|
||||
{
|
||||
return m_singles.end();
|
||||
}
|
||||
@ -152,11 +153,11 @@ public:
|
||||
{
|
||||
return m_ranges.end();
|
||||
}
|
||||
list_iterator equivalents_begin()const
|
||||
set_iterator equivalents_begin()const
|
||||
{
|
||||
return m_equivalents.begin();
|
||||
}
|
||||
list_iterator equivalents_end()const
|
||||
set_iterator equivalents_end()const
|
||||
{
|
||||
return m_equivalents.end();
|
||||
}
|
||||
@ -173,14 +174,14 @@ public:
|
||||
return m_empty;
|
||||
}
|
||||
private:
|
||||
std::vector<digraph_type> m_singles; // a list of single characters to match
|
||||
std::set<digraph_type> m_singles; // a list of single characters to match
|
||||
std::vector<digraph_type> m_ranges; // a list of end points of our ranges
|
||||
bool m_negate; // true if the set is to be negated
|
||||
bool m_has_digraphs; // true if we have digraphs present
|
||||
m_type m_classes; // character classes to match
|
||||
m_type m_negated_classes; // negated character classes to match
|
||||
bool m_empty; // whether we've added anything yet
|
||||
std::vector<digraph_type> m_equivalents; // a list of equivalence classes
|
||||
std::set<digraph_type> m_equivalents; // a list of equivalence classes
|
||||
};
|
||||
|
||||
template <class charT, class traits>
|
||||
@ -239,7 +240,7 @@ protected:
|
||||
unsigned m_backrefs; // bitmask of permitted backrefs
|
||||
boost::uintmax_t m_bad_repeats; // bitmask of repeats we can't deduce a startmap for;
|
||||
bool m_has_recursions; // set when we have recursive expresisons to fixup
|
||||
std::vector<bool> m_recursion_checks; // notes which recursions we've followed while analysing this expression
|
||||
std::vector<unsigned char> m_recursion_checks; // notes which recursions we've followed while analysing this expression
|
||||
typename traits::char_class_type m_word_mask; // mask used to determine if a character is a word character
|
||||
typename traits::char_class_type m_mask_space; // mask used to determine if a character is a word character
|
||||
typename traits::char_class_type m_lower_mask; // mask used to determine if a character is a lowercase character
|
||||
@ -365,6 +366,7 @@ re_syntax_base* basic_regex_creator<charT, traits>::append_set(
|
||||
{
|
||||
typedef typename traits::string_type string_type;
|
||||
typedef typename basic_char_set<charT, traits>::list_iterator item_iterator;
|
||||
typedef typename basic_char_set<charT, traits>::set_iterator set_iterator;
|
||||
typedef typename traits::char_class_type m_type;
|
||||
|
||||
re_set_long<m_type>* result = static_cast<re_set_long<m_type>*>(append_state(syntax_element_long_set, sizeof(re_set_long<m_type>)));
|
||||
@ -395,20 +397,25 @@ re_syntax_base* basic_regex_creator<charT, traits>::append_set(
|
||||
// now extend with all the singles:
|
||||
//
|
||||
item_iterator first, last;
|
||||
first = char_set.singles_begin();
|
||||
last = char_set.singles_end();
|
||||
while(first != last)
|
||||
set_iterator sfirst, slast;
|
||||
sfirst = char_set.singles_begin();
|
||||
slast = char_set.singles_end();
|
||||
while(sfirst != slast)
|
||||
{
|
||||
charT* p = static_cast<charT*>(this->m_pdata->m_data.extend(sizeof(charT) * (first->second ? 3 : 2)));
|
||||
p[0] = m_traits.translate(first->first, m_icase);
|
||||
if(first->second)
|
||||
charT* p = static_cast<charT*>(this->m_pdata->m_data.extend(sizeof(charT) * (sfirst->first == static_cast<charT>(0) ? 1 : sfirst->second ? 3 : 2)));
|
||||
p[0] = m_traits.translate(sfirst->first, m_icase);
|
||||
if(sfirst->first == static_cast<charT>(0))
|
||||
{
|
||||
p[1] = m_traits.translate(first->second, m_icase);
|
||||
p[0] = 0;
|
||||
}
|
||||
else if(sfirst->second)
|
||||
{
|
||||
p[1] = m_traits.translate(sfirst->second, m_icase);
|
||||
p[2] = 0;
|
||||
}
|
||||
else
|
||||
p[1] = 0;
|
||||
++first;
|
||||
++sfirst;
|
||||
}
|
||||
//
|
||||
// now extend with all the ranges:
|
||||
@ -472,24 +479,24 @@ re_syntax_base* basic_regex_creator<charT, traits>::append_set(
|
||||
//
|
||||
// now process the equivalence classes:
|
||||
//
|
||||
first = char_set.equivalents_begin();
|
||||
last = char_set.equivalents_end();
|
||||
while(first != last)
|
||||
sfirst = char_set.equivalents_begin();
|
||||
slast = char_set.equivalents_end();
|
||||
while(sfirst != slast)
|
||||
{
|
||||
string_type s;
|
||||
if(first->second)
|
||||
if(sfirst->second)
|
||||
{
|
||||
charT cs[3] = { first->first, first->second, charT(0), };
|
||||
charT cs[3] = { sfirst->first, sfirst->second, charT(0), };
|
||||
s = m_traits.transform_primary(cs, cs+2);
|
||||
}
|
||||
else
|
||||
s = m_traits.transform_primary(&first->first, &first->first+1);
|
||||
s = m_traits.transform_primary(&sfirst->first, &sfirst->first+1);
|
||||
if(s.empty())
|
||||
return 0; // invalid or unsupported equivalence class
|
||||
charT* p = static_cast<charT*>(this->m_pdata->m_data.extend(sizeof(charT) * (s.size()+1) ) );
|
||||
BOOST_REGEX_DETAIL_NS::copy(s.begin(), s.end(), p);
|
||||
p[s.size()] = charT(0);
|
||||
++first;
|
||||
++sfirst;
|
||||
}
|
||||
//
|
||||
// finally reset the address of our last state:
|
||||
@ -518,7 +525,8 @@ re_syntax_base* basic_regex_creator<charT, traits>::append_set(
|
||||
{
|
||||
typedef typename traits::string_type string_type;
|
||||
typedef typename basic_char_set<charT, traits>::list_iterator item_iterator;
|
||||
|
||||
typedef typename basic_char_set<charT, traits>::set_iterator set_iterator;
|
||||
|
||||
re_set* result = static_cast<re_set*>(append_state(syntax_element_set, sizeof(re_set)));
|
||||
bool negate = char_set.is_negated();
|
||||
std::memset(result->_map, 0, sizeof(result->_map));
|
||||
@ -526,17 +534,18 @@ re_syntax_base* basic_regex_creator<charT, traits>::append_set(
|
||||
// handle singles first:
|
||||
//
|
||||
item_iterator first, last;
|
||||
first = char_set.singles_begin();
|
||||
last = char_set.singles_end();
|
||||
while(first != last)
|
||||
set_iterator sfirst, slast;
|
||||
sfirst = char_set.singles_begin();
|
||||
slast = char_set.singles_end();
|
||||
while(sfirst != slast)
|
||||
{
|
||||
for(unsigned int i = 0; i < (1 << CHAR_BIT); ++i)
|
||||
{
|
||||
if(this->m_traits.translate(static_cast<charT>(i), this->m_icase)
|
||||
== this->m_traits.translate(first->first, this->m_icase))
|
||||
== this->m_traits.translate(sfirst->first, this->m_icase))
|
||||
result->_map[i] = true;
|
||||
}
|
||||
++first;
|
||||
++sfirst;
|
||||
}
|
||||
//
|
||||
// OK now handle ranges:
|
||||
@ -623,13 +632,13 @@ re_syntax_base* basic_regex_creator<charT, traits>::append_set(
|
||||
//
|
||||
// now process the equivalence classes:
|
||||
//
|
||||
first = char_set.equivalents_begin();
|
||||
last = char_set.equivalents_end();
|
||||
while(first != last)
|
||||
sfirst = char_set.equivalents_begin();
|
||||
slast = char_set.equivalents_end();
|
||||
while(sfirst != slast)
|
||||
{
|
||||
string_type s;
|
||||
BOOST_ASSERT(static_cast<charT>(0) == first->second);
|
||||
s = m_traits.transform_primary(&first->first, &first->first+1);
|
||||
BOOST_ASSERT(static_cast<charT>(0) == sfirst->second);
|
||||
s = m_traits.transform_primary(&sfirst->first, &sfirst->first+1);
|
||||
if(s.empty())
|
||||
return 0; // invalid or unsupported equivalence class
|
||||
for(unsigned i = 0; i < (1u << CHAR_BIT); ++i)
|
||||
@ -639,7 +648,7 @@ re_syntax_base* basic_regex_creator<charT, traits>::append_set(
|
||||
if(s == s2)
|
||||
result->_map[i] = true;
|
||||
}
|
||||
++first;
|
||||
++sfirst;
|
||||
}
|
||||
if(negate)
|
||||
{
|
||||
@ -690,7 +699,7 @@ void basic_regex_creator<charT, traits>::finalize(const charT* p1, const charT*
|
||||
|
||||
m_bad_repeats = 0;
|
||||
if(m_has_recursions)
|
||||
m_recursion_checks.assign(1 + m_pdata->m_mark_count, false);
|
||||
m_recursion_checks.assign(1 + m_pdata->m_mark_count, 0u);
|
||||
create_startmap(m_pdata->m_first_state, m_pdata->m_startmap, &(m_pdata->m_can_be_null), mask_all);
|
||||
// get the restart type:
|
||||
m_pdata->m_restart_type = get_restart_type(m_pdata->m_first_state);
|
||||
@ -792,50 +801,57 @@ void basic_regex_creator<charT, traits>::fixup_recursions(re_syntax_base* state)
|
||||
//
|
||||
idx = m_pdata->get_id(static_cast<int>(idx));
|
||||
}
|
||||
while(p)
|
||||
if(idx < 0)
|
||||
{
|
||||
if((p->type == syntax_element_startmark) && (static_cast<re_brace*>(p)->index == idx))
|
||||
ok = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
while(p)
|
||||
{
|
||||
//
|
||||
// We've found the target of the recursion, set the jump target:
|
||||
//
|
||||
static_cast<re_jump*>(state)->alt.p = p;
|
||||
ok = true;
|
||||
//
|
||||
// Now scan the target for nested repeats:
|
||||
//
|
||||
p = p->next.p;
|
||||
int next_rep_id = 0;
|
||||
while(p)
|
||||
if((p->type == syntax_element_startmark) && (static_cast<re_brace*>(p)->index == idx))
|
||||
{
|
||||
switch(p->type)
|
||||
{
|
||||
case syntax_element_rep:
|
||||
case syntax_element_dot_rep:
|
||||
case syntax_element_char_rep:
|
||||
case syntax_element_short_set_rep:
|
||||
case syntax_element_long_set_rep:
|
||||
next_rep_id = static_cast<re_repeat*>(p)->state_id;
|
||||
break;
|
||||
case syntax_element_endmark:
|
||||
if(static_cast<const re_brace*>(p)->index == idx)
|
||||
next_rep_id = -1;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
if(next_rep_id)
|
||||
break;
|
||||
//
|
||||
// We've found the target of the recursion, set the jump target:
|
||||
//
|
||||
static_cast<re_jump*>(state)->alt.p = p;
|
||||
ok = true;
|
||||
//
|
||||
// Now scan the target for nested repeats:
|
||||
//
|
||||
p = p->next.p;
|
||||
}
|
||||
if(next_rep_id > 0)
|
||||
{
|
||||
static_cast<re_recurse*>(state)->state_id = next_rep_id - 1;
|
||||
}
|
||||
int next_rep_id = 0;
|
||||
while(p)
|
||||
{
|
||||
switch(p->type)
|
||||
{
|
||||
case syntax_element_rep:
|
||||
case syntax_element_dot_rep:
|
||||
case syntax_element_char_rep:
|
||||
case syntax_element_short_set_rep:
|
||||
case syntax_element_long_set_rep:
|
||||
next_rep_id = static_cast<re_repeat*>(p)->state_id;
|
||||
break;
|
||||
case syntax_element_endmark:
|
||||
if(static_cast<const re_brace*>(p)->index == idx)
|
||||
next_rep_id = -1;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
if(next_rep_id)
|
||||
break;
|
||||
p = p->next.p;
|
||||
}
|
||||
if(next_rep_id > 0)
|
||||
{
|
||||
static_cast<re_recurse*>(state)->state_id = next_rep_id - 1;
|
||||
}
|
||||
|
||||
break;
|
||||
break;
|
||||
}
|
||||
p = p->next.p;
|
||||
}
|
||||
p = p->next.p;
|
||||
}
|
||||
if(!ok)
|
||||
{
|
||||
@ -934,7 +950,7 @@ void basic_regex_creator<charT, traits>::create_startmaps(re_syntax_base* state)
|
||||
{
|
||||
// Initialize m_recursion_checks if we need it:
|
||||
if(m_has_recursions)
|
||||
m_recursion_checks.assign(1 + m_pdata->m_mark_count, false);
|
||||
m_recursion_checks.assign(1 + m_pdata->m_mark_count, 0u);
|
||||
|
||||
const std::pair<bool, re_syntax_base*>& p = v.back();
|
||||
m_icase = p.first;
|
||||
@ -947,7 +963,7 @@ void basic_regex_creator<charT, traits>::create_startmaps(re_syntax_base* state)
|
||||
m_bad_repeats = 0;
|
||||
|
||||
if(m_has_recursions)
|
||||
m_recursion_checks.assign(1 + m_pdata->m_mark_count, false);
|
||||
m_recursion_checks.assign(1 + m_pdata->m_mark_count, 0u);
|
||||
create_startmap(static_cast<re_alt*>(state)->alt.p, static_cast<re_alt*>(state)->_map, &static_cast<re_alt*>(state)->can_be_null, mask_skip);
|
||||
// adjust the type of the state to allow for faster matching:
|
||||
state->type = this->get_repeat_type(state);
|
||||
@ -1102,11 +1118,9 @@ void basic_regex_creator<charT, traits>::create_startmap(re_syntax_base* state,
|
||||
}
|
||||
case syntax_element_recurse:
|
||||
{
|
||||
if(state->type == syntax_element_startmark)
|
||||
recursion_sub = static_cast<re_brace*>(state)->index;
|
||||
else
|
||||
recursion_sub = 0;
|
||||
if(m_recursion_checks[recursion_sub])
|
||||
BOOST_ASSERT(static_cast<const re_jump*>(state)->alt.p->type == syntax_element_startmark);
|
||||
recursion_sub = static_cast<re_brace*>(static_cast<const re_jump*>(state)->alt.p)->index;
|
||||
if(m_recursion_checks[recursion_sub] & 1u)
|
||||
{
|
||||
// Infinite recursion!!
|
||||
if(0 == this->m_pdata->m_status) // update the error code if not already set
|
||||
@ -1131,10 +1145,10 @@ void basic_regex_creator<charT, traits>::create_startmap(re_syntax_base* state,
|
||||
recursion_start = state;
|
||||
recursion_restart = state->next.p;
|
||||
state = static_cast<re_jump*>(state)->alt.p;
|
||||
m_recursion_checks[recursion_sub] = true;
|
||||
m_recursion_checks[recursion_sub] |= 1u;
|
||||
break;
|
||||
}
|
||||
m_recursion_checks[recursion_sub] = true;
|
||||
m_recursion_checks[recursion_sub] |= 1u;
|
||||
// can't handle nested recursion here...
|
||||
BOOST_FALLTHROUGH;
|
||||
}
|
||||
@ -1328,8 +1342,9 @@ void basic_regex_creator<charT, traits>::create_startmap(re_syntax_base* state,
|
||||
}
|
||||
p = p->next.p;
|
||||
}
|
||||
if(ok)
|
||||
if(ok && ((m_recursion_checks[static_cast<re_brace*>(state)->index] & 2u) == 0))
|
||||
{
|
||||
m_recursion_checks[static_cast<re_brace*>(state)->index] |= 2u;
|
||||
create_startmap(p->next.p, l_map, pnull, mask);
|
||||
}
|
||||
}
|
||||
@ -1419,7 +1434,7 @@ bool basic_regex_creator<charT, traits>::is_bad_repeat(re_syntax_base* pt)
|
||||
case syntax_element_long_set_rep:
|
||||
{
|
||||
unsigned state_id = static_cast<re_repeat*>(pt)->state_id;
|
||||
if(state_id > sizeof(m_bad_repeats) * CHAR_BIT)
|
||||
if(state_id >= sizeof(m_bad_repeats) * CHAR_BIT)
|
||||
return true; // run out of bits, assume we can't traverse this one.
|
||||
static const boost::uintmax_t one = 1uL;
|
||||
return m_bad_repeats & (one << state_id);
|
||||
|
@ -511,7 +511,8 @@ bool basic_regex_parser<charT, traits>::parse_open_paren()
|
||||
this->fail(regex_constants::error_paren, ::boost::BOOST_REGEX_DETAIL_NS::distance(m_base, m_end));
|
||||
return false;
|
||||
}
|
||||
BOOST_ASSERT(this->m_traits.syntax_type(*m_position) == regex_constants::syntax_close_mark);
|
||||
if(this->m_traits.syntax_type(*m_position) != regex_constants::syntax_close_mark)
|
||||
return false;
|
||||
#ifndef BOOST_NO_STD_DISTANCE
|
||||
if(markid && (this->flags() & regbase::save_subexpression_location))
|
||||
this->m_pdata->m_subs.at(markid - 1).second = std::distance(m_base, m_position);
|
||||
@ -901,7 +902,7 @@ escape_type_class_jump:
|
||||
}
|
||||
if(negative)
|
||||
i = 1 + m_mark_count - i;
|
||||
if(((i > 0) && (this->m_backrefs & (1u << (i-1)))) || ((i > 10000) && (this->m_pdata->get_id(i) > 0) && (this->m_backrefs & (1u << (this->m_pdata->get_id(i)-1)))))
|
||||
if(((i > 0) && (i < std::numeric_limits<unsigned>::digits) && (i - 1 < static_cast<boost::intmax_t>(sizeof(unsigned) * CHAR_BIT)) && (this->m_backrefs & (1u << (i-1)))) || ((i > 10000) && (this->m_pdata->get_id(i) > 0) && (this->m_pdata->get_id(i)-1 < static_cast<boost::intmax_t>(sizeof(unsigned) * CHAR_BIT)) && (this->m_backrefs & (1u << (this->m_pdata->get_id(i)-1)))))
|
||||
{
|
||||
m_position = pc;
|
||||
re_brace* pb = static_cast<re_brace*>(this->append_state(syntax_element_backref, sizeof(re_brace)));
|
||||
@ -2596,7 +2597,7 @@ option_group_jump:
|
||||
re_alt* alt = static_cast<re_alt*>(this->insert_state(expected_alt_point, syntax_element_alt, sizeof(re_alt)));
|
||||
alt->alt.i = this->m_pdata->m_data.size() - this->getoffset(alt);
|
||||
}
|
||||
else if(this->getaddress(static_cast<re_alt*>(b)->alt.i, b)->type == syntax_element_alt)
|
||||
else if(((std::ptrdiff_t)this->m_pdata->m_data.size() > (static_cast<re_alt*>(b)->alt.i + this->getoffset(b))) && (static_cast<re_alt*>(b)->alt.i > 0) && this->getaddress(static_cast<re_alt*>(b)->alt.i, b)->type == syntax_element_alt)
|
||||
{
|
||||
// Can't have seen more than one alternative:
|
||||
// Rewind to start of (? sequence:
|
||||
@ -2860,6 +2861,10 @@ bool basic_regex_parser<charT, traits>::parse_perl_verb()
|
||||
}
|
||||
break;
|
||||
}
|
||||
// Rewind to start of (* sequence:
|
||||
--m_position;
|
||||
while(this->m_traits.syntax_type(*m_position) != regex_constants::syntax_open_mark) --m_position;
|
||||
fail(regex_constants::error_perl_extension, m_position - m_base);
|
||||
return false;
|
||||
}
|
||||
|
||||
|
@ -68,7 +68,18 @@ typedef enum _match_flags
|
||||
format_no_copy = format_all << 1, /* don't copy non-matching segments. */
|
||||
format_first_only = format_no_copy << 1, /* Only replace first occurance. */
|
||||
format_is_if = format_first_only << 1, /* internal use only. */
|
||||
format_literal = format_is_if << 1 /* treat string as a literal */
|
||||
format_literal = format_is_if << 1, /* treat string as a literal */
|
||||
|
||||
match_not_any = match_not_bol | match_not_eol | match_not_bob
|
||||
| match_not_eob | match_not_bow | match_not_eow | match_not_dot_newline
|
||||
| match_not_dot_null | match_prev_avail | match_init | match_not_null
|
||||
| match_continuous | match_partial | match_stop | match_not_initial_null
|
||||
| match_stop | match_all | match_perl | match_posix | match_nosubs
|
||||
| match_extra | match_single_line | match_unused1 | match_unused2
|
||||
| match_unused3 | match_max | format_perl | format_default | format_sed
|
||||
| format_all | format_no_copy | format_first_only | format_is_if
|
||||
| format_literal
|
||||
|
||||
|
||||
} match_flags;
|
||||
|
||||
|
@ -161,9 +161,9 @@ iterator BOOST_REGEX_CALL re_is_set_member(iterator next,
|
||||
if(*p == static_cast<charT>(0))
|
||||
{
|
||||
// treat null string as special case:
|
||||
if(traits_inst.translate(*ptr, icase) != *p)
|
||||
if(traits_inst.translate(*ptr, icase))
|
||||
{
|
||||
while(*p == static_cast<charT>(0))++p;
|
||||
++p;
|
||||
continue;
|
||||
}
|
||||
return set_->isnot ? next : (ptr == next) ? ++next : ptr;
|
||||
@ -348,6 +348,7 @@ struct recursion_info
|
||||
const re_syntax_base* preturn_address;
|
||||
Results results;
|
||||
repeater_count<iterator>* repeater_stack;
|
||||
iterator location_of_start;
|
||||
};
|
||||
|
||||
#ifdef BOOST_MSVC
|
||||
|
@ -90,7 +90,7 @@ void perl_matcher<BidiIterator, Allocator, traits>::construct_init(const basic_r
|
||||
match_any_mask = static_cast<unsigned char>((f & match_not_dot_newline) ? BOOST_REGEX_DETAIL_NS::test_not_newline : BOOST_REGEX_DETAIL_NS::test_newline);
|
||||
// Disable match_any if requested in the state machine:
|
||||
if(e.get_data().m_disable_match_any)
|
||||
m_match_flags &= ~regex_constants::match_any;
|
||||
m_match_flags &= regex_constants::match_not_any;
|
||||
}
|
||||
|
||||
template <class BidiIterator, class Allocator, class traits>
|
||||
|
@ -131,8 +131,7 @@ template <class Results>
|
||||
struct saved_recursion : public saved_state
|
||||
{
|
||||
saved_recursion(int idx, const re_syntax_base* p, Results* pr)
|
||||
: saved_state(14), recursion_id(idx), preturn_address(p), results(*pr)
|
||||
{}
|
||||
: saved_state(14), recursion_id(idx), preturn_address(p), results(*pr) {}
|
||||
int recursion_id;
|
||||
const re_syntax_base* preturn_address;
|
||||
Results results;
|
||||
@ -405,7 +404,11 @@ bool perl_matcher<BidiIterator, Allocator, traits>::match_startmark()
|
||||
m_independent = true;
|
||||
const re_syntax_base* next_pstate = static_cast<const re_jump*>(pstate->next.p)->alt.p->next.p;
|
||||
pstate = pstate->next.p->next.p;
|
||||
bool r = match_all_states();
|
||||
bool r = false;
|
||||
#if !defined(BOOST_NO_EXCEPTIONS)
|
||||
try{
|
||||
#endif
|
||||
r = match_all_states();
|
||||
if(!r && !m_independent)
|
||||
{
|
||||
// Must be unwinding from a COMMIT/SKIP/PRUNE and the independent
|
||||
@ -413,8 +416,20 @@ bool perl_matcher<BidiIterator, Allocator, traits>::match_startmark()
|
||||
while(unwind(false));
|
||||
return false;
|
||||
}
|
||||
#if !defined(BOOST_NO_EXCEPTIONS)
|
||||
}
|
||||
catch(...)
|
||||
{
|
||||
pstate = next_pstate;
|
||||
m_independent = old_independent;
|
||||
// unwind all pushed states, apart from anything else this
|
||||
// ensures that all the states are correctly destructed
|
||||
// not just the memory freed.
|
||||
while(unwind(true)) {}
|
||||
throw;
|
||||
}
|
||||
#endif
|
||||
pstate = next_pstate;
|
||||
m_independent = old_independent;
|
||||
#ifdef BOOST_REGEX_MATCH_EXTRA
|
||||
if(r && (m_match_flags & match_extra))
|
||||
{
|
||||
@ -428,8 +443,23 @@ bool perl_matcher<BidiIterator, Allocator, traits>::match_startmark()
|
||||
for(i = 0; i < temp_match.size(); ++i)
|
||||
(*m_presult)[i].get_captures().clear();
|
||||
// match everything else:
|
||||
r = match_all_states();
|
||||
// now place the stored captures back:
|
||||
#if !defined(BOOST_NO_EXCEPTIONS)
|
||||
try{
|
||||
#endif
|
||||
r = match_all_states();
|
||||
#if !defined(BOOST_NO_EXCEPTIONS)
|
||||
}
|
||||
catch(...)
|
||||
{
|
||||
pstate = next_pstate;
|
||||
// unwind all pushed states, apart from anything else this
|
||||
// ensures that all the states are correctly destructed
|
||||
// not just the memory freed.
|
||||
while(unwind(true)) {}
|
||||
throw;
|
||||
}
|
||||
#endif
|
||||
// now place the stored captures back:
|
||||
for(i = 0; i < temp_match.size(); ++i)
|
||||
{
|
||||
typedef typename sub_match<BidiIterator>::capture_sequence_type seq;
|
||||
@ -464,14 +494,29 @@ bool perl_matcher<BidiIterator, Allocator, traits>::match_startmark()
|
||||
BidiIterator saved_position = position;
|
||||
const re_syntax_base* next_pstate = static_cast<const re_jump*>(pstate->next.p)->alt.p->next.p;
|
||||
pstate = pstate->next.p->next.p;
|
||||
bool r = match_all_states();
|
||||
position = saved_position;
|
||||
if(negated)
|
||||
r = !r;
|
||||
if(r)
|
||||
#if !defined(BOOST_NO_EXCEPTIONS)
|
||||
try{
|
||||
#endif
|
||||
bool r = match_all_states();
|
||||
position = saved_position;
|
||||
if(negated)
|
||||
r = !r;
|
||||
if(r)
|
||||
pstate = next_pstate;
|
||||
else
|
||||
pstate = alt->alt.p;
|
||||
#if !defined(BOOST_NO_EXCEPTIONS)
|
||||
}
|
||||
catch(...)
|
||||
{
|
||||
pstate = next_pstate;
|
||||
else
|
||||
pstate = alt->alt.p;
|
||||
// unwind all pushed states, apart from anything else this
|
||||
// ensures that all the states are correctly destructed
|
||||
// not just the memory freed.
|
||||
while(unwind(true)){}
|
||||
throw;
|
||||
}
|
||||
#endif
|
||||
break;
|
||||
}
|
||||
}
|
||||
@ -953,6 +998,19 @@ bool perl_matcher<BidiIterator, Allocator, traits>::match_recursion()
|
||||
{
|
||||
BOOST_ASSERT(pstate->type == syntax_element_recurse);
|
||||
//
|
||||
// See if we've seen this recursion before at this location, if we have then
|
||||
// we need to prevent infinite recursion:
|
||||
//
|
||||
for(typename std::vector<recursion_info<results_type> >::const_reverse_iterator i = recursion_stack.rbegin(); i != recursion_stack.rend(); ++i)
|
||||
{
|
||||
if(i->idx == static_cast<const re_brace*>(static_cast<const re_jump*>(pstate)->alt.p)->index)
|
||||
{
|
||||
if(i->location_of_start == position)
|
||||
return false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
//
|
||||
// Backup call stack:
|
||||
//
|
||||
push_recursion_pop();
|
||||
@ -968,6 +1026,7 @@ bool perl_matcher<BidiIterator, Allocator, traits>::match_recursion()
|
||||
recursion_stack.back().results = *m_presult;
|
||||
pstate = static_cast<const re_jump*>(pstate)->alt.p;
|
||||
recursion_stack.back().idx = static_cast<const re_brace*>(pstate)->index;
|
||||
recursion_stack.back().location_of_start = position;
|
||||
//if(static_cast<const re_recurse*>(pstate)->state_id > 0)
|
||||
{
|
||||
push_repeater_count(-(2 + static_cast<const re_brace*>(pstate)->index), &next_count);
|
||||
@ -1705,6 +1764,7 @@ bool perl_matcher<BidiIterator, Allocator, traits>::unwind_recursion(bool r)
|
||||
recursion_stack.back().idx = pmp->recursion_id;
|
||||
recursion_stack.back().preturn_address = pmp->preturn_address;
|
||||
recursion_stack.back().results = pmp->results;
|
||||
recursion_stack.back().location_of_start = position;
|
||||
}
|
||||
boost::BOOST_REGEX_DETAIL_NS::inplace_destroy(pmp++);
|
||||
m_backup_state = pmp;
|
||||
|
@ -900,10 +900,27 @@ bool perl_matcher<BidiIterator, Allocator, traits>::match_recursion()
|
||||
{
|
||||
recursion_stack.reserve(50);
|
||||
}
|
||||
//
|
||||
// See if we've seen this recursion before at this location, if we have then
|
||||
// we need to prevent infinite recursion:
|
||||
//
|
||||
for(typename std::vector<recursion_info<results_type> >::const_reverse_iterator i = recursion_stack.rbegin(); i != recursion_stack.rend(); ++i)
|
||||
{
|
||||
if(i->idx == static_cast<const re_brace*>(static_cast<const re_jump*>(pstate)->alt.p)->index)
|
||||
{
|
||||
if(i->location_of_start == position)
|
||||
return false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
//
|
||||
// Now get on with it:
|
||||
//
|
||||
recursion_stack.push_back(recursion_info<results_type>());
|
||||
recursion_stack.back().preturn_address = pstate->next.p;
|
||||
recursion_stack.back().results = *m_presult;
|
||||
recursion_stack.back().repeater_stack = next_count;
|
||||
recursion_stack.back().location_of_start = position;
|
||||
pstate = static_cast<const re_jump*>(pstate)->alt.p;
|
||||
recursion_stack.back().idx = static_cast<const re_brace*>(pstate)->index;
|
||||
|
||||
@ -979,6 +996,7 @@ bool perl_matcher<BidiIterator, Allocator, traits>::match_match()
|
||||
recursion_stack.push_back(recursion_info<results_type>());
|
||||
recursion_stack.back().preturn_address = saved_state;
|
||||
recursion_stack.back().results = *m_presult;
|
||||
recursion_stack.back().location_of_start = position;
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
|
@ -33,6 +33,7 @@
|
||||
#include <algorithm>
|
||||
#include <iosfwd>
|
||||
#include <vector>
|
||||
#include <set>
|
||||
#include <map>
|
||||
#include <boost/limits.hpp>
|
||||
#include <boost/assert.hpp>
|
||||
|
@ -26,10 +26,10 @@ EX_SOURCES =
|
||||
winstances.cpp
|
||||
usinstances.cpp ;
|
||||
|
||||
lib boost_regex_extra : $(EX_SOURCES)
|
||||
lib boost_regex_extra : $(EX_SOURCES) ../../build//icu_options
|
||||
:
|
||||
<define>BOOST_REGEX_MATCH_EXTRA=1
|
||||
<link>shared:<define>BOOST_REGEX_DYN_LINK=1
|
||||
<link>shared:<define>BOOST_REGEX_DYN_LINK=1
|
||||
:
|
||||
;
|
||||
|
||||
|
37
test/de_fuzz/Jamfile.v2
Normal file
37
test/de_fuzz/Jamfile.v2
Normal file
@ -0,0 +1,37 @@
|
||||
# copyright John Maddock 2003
|
||||
# Distributed under the Boost Software License, Version 1.0.
|
||||
# (See accompanying file LICENSE_1_0.txt or copy at
|
||||
# http://www.boost.org/LICENSE_1_0.txt.
|
||||
|
||||
import testing ;
|
||||
|
||||
lib Fuzzer : : <search>. ;
|
||||
|
||||
run narrow.cpp [ glob ../../src/*.cpp ] Fuzzer
|
||||
: # additional args
|
||||
-dict=dictionary.txt -workers=3 corpus -runs=5000
|
||||
: # test-files
|
||||
: # requirements
|
||||
<toolset>clang <cxxflags>-fsanitize-coverage=trace-pc-guard
|
||||
<cxxflags>-fsanitize=address <cxxflags>-fsanitize=undefined
|
||||
<cxxflags>-fno-sanitize-recover=undefined <cxxflags>-fno-optimize-sibling-calls
|
||||
<cxxflags>-fno-omit-frame-pointer
|
||||
<include>../../../..
|
||||
<linkflags>-fsanitize=address <linkflags>-fsanitize=undefined
|
||||
debug
|
||||
;
|
||||
|
||||
run wide.cpp [ glob ../../src/*.cpp ] Fuzzer
|
||||
: # additional args
|
||||
-dict=dictionary.txt -workers=3 corpus -runs=5000
|
||||
: # test-files
|
||||
: # requirements
|
||||
<toolset>clang <cxxflags>-fsanitize-coverage=trace-pc-guard
|
||||
<cxxflags>-fsanitize=address <cxxflags>-fsanitize=undefined
|
||||
<cxxflags>-fno-sanitize-recover=undefined <cxxflags>-fno-optimize-sibling-calls
|
||||
<cxxflags>-fno-omit-frame-pointer
|
||||
<include>../../../..
|
||||
<linkflags>-fsanitize=address <linkflags>-fsanitize=undefined
|
||||
debug
|
||||
;
|
||||
|
BIN
test/de_fuzz/corpus/001ba32e9488b739cad5c47cf6743092c3e959ba
Normal file
BIN
test/de_fuzz/corpus/001ba32e9488b739cad5c47cf6743092c3e959ba
Normal file
Binary file not shown.
BIN
test/de_fuzz/corpus/0022cb33f1cee7a46b962b9531184db5c56061df
Normal file
BIN
test/de_fuzz/corpus/0022cb33f1cee7a46b962b9531184db5c56061df
Normal file
Binary file not shown.
BIN
test/de_fuzz/corpus/0024c001b45a2ff3eb568d8a0c3e461aceb73417
Normal file
BIN
test/de_fuzz/corpus/0024c001b45a2ff3eb568d8a0c3e461aceb73417
Normal file
Binary file not shown.
BIN
test/de_fuzz/corpus/008845a0cee378bad5ae87f276ce5f942febab66
Normal file
BIN
test/de_fuzz/corpus/008845a0cee378bad5ae87f276ce5f942febab66
Normal file
Binary file not shown.
BIN
test/de_fuzz/corpus/009a13687872382d9ea4ccb32d90583fcdbd43b7
Normal file
BIN
test/de_fuzz/corpus/009a13687872382d9ea4ccb32d90583fcdbd43b7
Normal file
Binary file not shown.
BIN
test/de_fuzz/corpus/00ebfa429dbb73ad5188bdb5956364b45e4b8c71
Normal file
BIN
test/de_fuzz/corpus/00ebfa429dbb73ad5188bdb5956364b45e4b8c71
Normal file
Binary file not shown.
BIN
test/de_fuzz/corpus/00f8a813a4079f137f5a7ba9ad2d8d759afe8fa6
Normal file
BIN
test/de_fuzz/corpus/00f8a813a4079f137f5a7ba9ad2d8d759afe8fa6
Normal file
Binary file not shown.
BIN
test/de_fuzz/corpus/01745b71bcf3c1f4763f1e0ac7b9ed8e55af4596
Normal file
BIN
test/de_fuzz/corpus/01745b71bcf3c1f4763f1e0ac7b9ed8e55af4596
Normal file
Binary file not shown.
BIN
test/de_fuzz/corpus/01ba758580a918e8dd905999396066804be057d3
Normal file
BIN
test/de_fuzz/corpus/01ba758580a918e8dd905999396066804be057d3
Normal file
Binary file not shown.
BIN
test/de_fuzz/corpus/01daae36295786b241b430e93bc27ecdb21d0e1c
Normal file
BIN
test/de_fuzz/corpus/01daae36295786b241b430e93bc27ecdb21d0e1c
Normal file
Binary file not shown.
BIN
test/de_fuzz/corpus/0214b13c2b40b2fe579aeaa2b803ebbfcd80effb
Normal file
BIN
test/de_fuzz/corpus/0214b13c2b40b2fe579aeaa2b803ebbfcd80effb
Normal file
Binary file not shown.
BIN
test/de_fuzz/corpus/0219a92fba5b22aad678f90c02fea5f718afbb81
Normal file
BIN
test/de_fuzz/corpus/0219a92fba5b22aad678f90c02fea5f718afbb81
Normal file
Binary file not shown.
BIN
test/de_fuzz/corpus/024349a474519deb9e508901eaf34ef39792ff8c
Normal file
BIN
test/de_fuzz/corpus/024349a474519deb9e508901eaf34ef39792ff8c
Normal file
Binary file not shown.
BIN
test/de_fuzz/corpus/024999955824849ef5de2856ee5e29a682bb0991
Normal file
BIN
test/de_fuzz/corpus/024999955824849ef5de2856ee5e29a682bb0991
Normal file
Binary file not shown.
BIN
test/de_fuzz/corpus/025bb14c5c3d27a0908f0bb363dc4988918ff67b
Normal file
BIN
test/de_fuzz/corpus/025bb14c5c3d27a0908f0bb363dc4988918ff67b
Normal file
Binary file not shown.
BIN
test/de_fuzz/corpus/02a5620461612a1944428314410762a948f95bb3
Normal file
BIN
test/de_fuzz/corpus/02a5620461612a1944428314410762a948f95bb3
Normal file
Binary file not shown.
BIN
test/de_fuzz/corpus/02d8400da629642911de8704c15e20932f0d7d38
Normal file
BIN
test/de_fuzz/corpus/02d8400da629642911de8704c15e20932f0d7d38
Normal file
Binary file not shown.
BIN
test/de_fuzz/corpus/02f33a351a3bbc21f6fb7f2f7fd980c730f32cb0
Normal file
BIN
test/de_fuzz/corpus/02f33a351a3bbc21f6fb7f2f7fd980c730f32cb0
Normal file
Binary file not shown.
BIN
test/de_fuzz/corpus/02f406876967292fa39f061dd1ec2ff0e3c53e74
Normal file
BIN
test/de_fuzz/corpus/02f406876967292fa39f061dd1ec2ff0e3c53e74
Normal file
Binary file not shown.
BIN
test/de_fuzz/corpus/031ca47c0959456d1f0dacd483cb3167dfb05aad
Normal file
BIN
test/de_fuzz/corpus/031ca47c0959456d1f0dacd483cb3167dfb05aad
Normal file
Binary file not shown.
@ -0,0 +1 @@
|
||||
Z(((((((a+)+)+)+)+)+)+)+|Y(((((((a+)+)+)+)+)+)+)+|X(((((((a+)+)+)+)+)+)+)+|W(((((((a+)+)+)+)+)+)+)+|V(((((((a+)+)+)+)+)+)+)+|CZ(((((((a+)+)+)+)+)+)+)+|CY(((((((a+)+)+)+)+)+)+;+|CX(((((((a+)+)+)+)+)+)+)+|CW(((((((a+)+)+)+)+)+)+)+|CV(((((((a+)+)+)+)+)+)+)+|(a+)+b)
|
BIN
test/de_fuzz/corpus/035e7ceca28af7af6a84062ab32fefa2c54b869f
Normal file
BIN
test/de_fuzz/corpus/035e7ceca28af7af6a84062ab32fefa2c54b869f
Normal file
Binary file not shown.
BIN
test/de_fuzz/corpus/0377c135f27099a908e16b2939f2576c76664cb6
Normal file
BIN
test/de_fuzz/corpus/0377c135f27099a908e16b2939f2576c76664cb6
Normal file
Binary file not shown.
BIN
test/de_fuzz/corpus/03a4aada6edc5cfd457ffe100222aa70fb632303
Normal file
BIN
test/de_fuzz/corpus/03a4aada6edc5cfd457ffe100222aa70fb632303
Normal file
Binary file not shown.
BIN
test/de_fuzz/corpus/03c11cdd4941456244521dbfdcc2c7e203cbf029
Normal file
BIN
test/de_fuzz/corpus/03c11cdd4941456244521dbfdcc2c7e203cbf029
Normal file
Binary file not shown.
BIN
test/de_fuzz/corpus/03ce080ad97029cfc9eef7522183313f1ca6c2d3
Normal file
BIN
test/de_fuzz/corpus/03ce080ad97029cfc9eef7522183313f1ca6c2d3
Normal file
Binary file not shown.
BIN
test/de_fuzz/corpus/045a1eefc4794466a95d88258d9ef04770d73185
Normal file
BIN
test/de_fuzz/corpus/045a1eefc4794466a95d88258d9ef04770d73185
Normal file
Binary file not shown.
BIN
test/de_fuzz/corpus/0493029275f5fd15bdbdeb0cecc75446e6129b5f
Normal file
BIN
test/de_fuzz/corpus/0493029275f5fd15bdbdeb0cecc75446e6129b5f
Normal file
Binary file not shown.
BIN
test/de_fuzz/corpus/04a5b0fee5ba00981cfa30fb43699627807c5cbc
Normal file
BIN
test/de_fuzz/corpus/04a5b0fee5ba00981cfa30fb43699627807c5cbc
Normal file
Binary file not shown.
BIN
test/de_fuzz/corpus/04aef19f0180da14df8d2bcc28635eed295c6af8
Normal file
BIN
test/de_fuzz/corpus/04aef19f0180da14df8d2bcc28635eed295c6af8
Normal file
Binary file not shown.
BIN
test/de_fuzz/corpus/04c166cc1bf6fc1f396da3060e44e2651d37fa50
Normal file
BIN
test/de_fuzz/corpus/04c166cc1bf6fc1f396da3060e44e2651d37fa50
Normal file
Binary file not shown.
BIN
test/de_fuzz/corpus/04ee7e168599133f68121b7560dc006209927d0e
Normal file
BIN
test/de_fuzz/corpus/04ee7e168599133f68121b7560dc006209927d0e
Normal file
Binary file not shown.
BIN
test/de_fuzz/corpus/04fc8bac2ae97c2f41cf8ba47deae7d2269d9ef5
Normal file
BIN
test/de_fuzz/corpus/04fc8bac2ae97c2f41cf8ba47deae7d2269d9ef5
Normal file
Binary file not shown.
BIN
test/de_fuzz/corpus/052e71789f1e90175615dfd24fe118b1a1158673
Normal file
BIN
test/de_fuzz/corpus/052e71789f1e90175615dfd24fe118b1a1158673
Normal file
Binary file not shown.
BIN
test/de_fuzz/corpus/0537a45a09b74990c25c0511657488fadefd84f6
Normal file
BIN
test/de_fuzz/corpus/0537a45a09b74990c25c0511657488fadefd84f6
Normal file
Binary file not shown.
BIN
test/de_fuzz/corpus/0548a644f332978b8d884616855535c6b8a503d9
Normal file
BIN
test/de_fuzz/corpus/0548a644f332978b8d884616855535c6b8a503d9
Normal file
Binary file not shown.
BIN
test/de_fuzz/corpus/055958c72de0a99f046371f1f0c86d99990c0729
Normal file
BIN
test/de_fuzz/corpus/055958c72de0a99f046371f1f0c86d99990c0729
Normal file
Binary file not shown.
BIN
test/de_fuzz/corpus/057bcec01e2afc4cae4d007ead424c189e2cebe3
Normal file
BIN
test/de_fuzz/corpus/057bcec01e2afc4cae4d007ead424c189e2cebe3
Normal file
Binary file not shown.
BIN
test/de_fuzz/corpus/05cb2c374cbbf2e671db840189026b71a3a4783c
Normal file
BIN
test/de_fuzz/corpus/05cb2c374cbbf2e671db840189026b71a3a4783c
Normal file
Binary file not shown.
BIN
test/de_fuzz/corpus/060d2fbcaf8334670802325e0dc9784379fb09a6
Normal file
BIN
test/de_fuzz/corpus/060d2fbcaf8334670802325e0dc9784379fb09a6
Normal file
Binary file not shown.
BIN
test/de_fuzz/corpus/065dc7b9683107bb0fdeee1ad147ca33421b4eda
Normal file
BIN
test/de_fuzz/corpus/065dc7b9683107bb0fdeee1ad147ca33421b4eda
Normal file
Binary file not shown.
BIN
test/de_fuzz/corpus/066a2cab0d331ac0605ded494bad5ce5c37f41be
Normal file
BIN
test/de_fuzz/corpus/066a2cab0d331ac0605ded494bad5ce5c37f41be
Normal file
Binary file not shown.
BIN
test/de_fuzz/corpus/06705f7adc42a06bfa772929ad0cf82b511cc653
Normal file
BIN
test/de_fuzz/corpus/06705f7adc42a06bfa772929ad0cf82b511cc653
Normal file
Binary file not shown.
BIN
test/de_fuzz/corpus/0676b9e95ffea4d9be47eb4c08b53f7e8232ec61
Normal file
BIN
test/de_fuzz/corpus/0676b9e95ffea4d9be47eb4c08b53f7e8232ec61
Normal file
Binary file not shown.
BIN
test/de_fuzz/corpus/06a24e5d1f0e7df307ebbb0b4008608ad03391b3
Normal file
BIN
test/de_fuzz/corpus/06a24e5d1f0e7df307ebbb0b4008608ad03391b3
Normal file
Binary file not shown.
BIN
test/de_fuzz/corpus/06b7a2445e03005d105a6b760d80ca7a0ac495ee
Normal file
BIN
test/de_fuzz/corpus/06b7a2445e03005d105a6b760d80ca7a0ac495ee
Normal file
Binary file not shown.
BIN
test/de_fuzz/corpus/0708c60582050542ce192567ee739c8dbe486f13
Normal file
BIN
test/de_fuzz/corpus/0708c60582050542ce192567ee739c8dbe486f13
Normal file
Binary file not shown.
BIN
test/de_fuzz/corpus/071134750dc8021e4baf15058fe2f9992a7ce222
Normal file
BIN
test/de_fuzz/corpus/071134750dc8021e4baf15058fe2f9992a7ce222
Normal file
Binary file not shown.
@ -0,0 +1 @@
|
||||
Z(((((((a+)+)+)+)+<2B><><EFBFBD><EFBFBD>)+|Y(((((((a+)+)+)+)+)++)+)|X(((((((a+)+)+)+)+)+)+)+|W((<28><>(((a+)+)+)+)+)+)+)+;|V((()++)+)+|CW(((((((a+)+)+)+((((a+)+)+)+)+)+)+)+|CZ(((((((a+)+)+)+)+)+)+)+|CY(((((((a+)+)+)+)+)+)+)+|CX(((((((a+)+)+)+)+)+)+)+|CW(((((((a+)+)+)+)+)+)+)+|CV,((((((a+)+)+)+)+)+)+)+|(a+)+bc
|
BIN
test/de_fuzz/corpus/073f4fc7f030f84f79bdc127e67339ae62070436
Normal file
BIN
test/de_fuzz/corpus/073f4fc7f030f84f79bdc127e67339ae62070436
Normal file
Binary file not shown.
BIN
test/de_fuzz/corpus/075ed1f68bdaff705e9ecfd624a98c583ac5e04f
Normal file
BIN
test/de_fuzz/corpus/075ed1f68bdaff705e9ecfd624a98c583ac5e04f
Normal file
Binary file not shown.
BIN
test/de_fuzz/corpus/076187a0bc2ed6e90aab84375d0deca711b61a91
Normal file
BIN
test/de_fuzz/corpus/076187a0bc2ed6e90aab84375d0deca711b61a91
Normal file
Binary file not shown.
BIN
test/de_fuzz/corpus/077ce191a9e857d7a3a3b4e53fbb50a08000ecf0
Normal file
BIN
test/de_fuzz/corpus/077ce191a9e857d7a3a3b4e53fbb50a08000ecf0
Normal file
Binary file not shown.
BIN
test/de_fuzz/corpus/07b2a1c92c817aae0a115bb15b33274cbaac308a
Normal file
BIN
test/de_fuzz/corpus/07b2a1c92c817aae0a115bb15b33274cbaac308a
Normal file
Binary file not shown.
BIN
test/de_fuzz/corpus/07c70aa5c262fdd076e5ec1e59e63d9f8cedaea8
Normal file
BIN
test/de_fuzz/corpus/07c70aa5c262fdd076e5ec1e59e63d9f8cedaea8
Normal file
Binary file not shown.
BIN
test/de_fuzz/corpus/07e5d0b2ec1cbc9040495889dde36395e3ce8a85
Normal file
BIN
test/de_fuzz/corpus/07e5d0b2ec1cbc9040495889dde36395e3ce8a85
Normal file
Binary file not shown.
BIN
test/de_fuzz/corpus/07f38543e3f8cb6ab88d497b0264801e4a5ff751
Normal file
BIN
test/de_fuzz/corpus/07f38543e3f8cb6ab88d497b0264801e4a5ff751
Normal file
Binary file not shown.
BIN
test/de_fuzz/corpus/08002fe03259270af10b36c8ddeacff162cf16b8
Normal file
BIN
test/de_fuzz/corpus/08002fe03259270af10b36c8ddeacff162cf16b8
Normal file
Binary file not shown.
BIN
test/de_fuzz/corpus/081858d1769f43413a1f09fedf1a0cf1c3f72b22
Normal file
BIN
test/de_fuzz/corpus/081858d1769f43413a1f09fedf1a0cf1c3f72b22
Normal file
Binary file not shown.
BIN
test/de_fuzz/corpus/082c2d2030263ff2b818ea7f0aaf98f7470283f6
Normal file
BIN
test/de_fuzz/corpus/082c2d2030263ff2b818ea7f0aaf98f7470283f6
Normal file
Binary file not shown.
BIN
test/de_fuzz/corpus/08549ccfa0aa75f14ca42c08197ca1e87e660823
Normal file
BIN
test/de_fuzz/corpus/08549ccfa0aa75f14ca42c08197ca1e87e660823
Normal file
Binary file not shown.
BIN
test/de_fuzz/corpus/0868c65e2e25e7360ebcd1719625fb0a361abfaa
Normal file
BIN
test/de_fuzz/corpus/0868c65e2e25e7360ebcd1719625fb0a361abfaa
Normal file
Binary file not shown.
BIN
test/de_fuzz/corpus/08691288da54da0cf22ea7d640ced09164743765
Normal file
BIN
test/de_fuzz/corpus/08691288da54da0cf22ea7d640ced09164743765
Normal file
Binary file not shown.
BIN
test/de_fuzz/corpus/087425b8873de5a19c59ed5467aa5de9ba7de6ca
Normal file
BIN
test/de_fuzz/corpus/087425b8873de5a19c59ed5467aa5de9ba7de6ca
Normal file
Binary file not shown.
BIN
test/de_fuzz/corpus/088d22d0e6de8af18ff45d377f04ff3658e0fc80
Normal file
BIN
test/de_fuzz/corpus/088d22d0e6de8af18ff45d377f04ff3658e0fc80
Normal file
Binary file not shown.
BIN
test/de_fuzz/corpus/08940162707893743187e4ab470ed1008612797a
Normal file
BIN
test/de_fuzz/corpus/08940162707893743187e4ab470ed1008612797a
Normal file
Binary file not shown.
BIN
test/de_fuzz/corpus/09180d4e440031e219479ca15da050462c00a908
Normal file
BIN
test/de_fuzz/corpus/09180d4e440031e219479ca15da050462c00a908
Normal file
Binary file not shown.
BIN
test/de_fuzz/corpus/093d19b2925541ea312fa2059f264124a35944b7
Normal file
BIN
test/de_fuzz/corpus/093d19b2925541ea312fa2059f264124a35944b7
Normal file
Binary file not shown.
BIN
test/de_fuzz/corpus/094d59eb83cc607c8c529c495210f83aa2887fbd
Normal file
BIN
test/de_fuzz/corpus/094d59eb83cc607c8c529c495210f83aa2887fbd
Normal file
Binary file not shown.
BIN
test/de_fuzz/corpus/0952b1e6ba0a9beaee02b92efa1990eb8fd855ed
Normal file
BIN
test/de_fuzz/corpus/0952b1e6ba0a9beaee02b92efa1990eb8fd855ed
Normal file
Binary file not shown.
BIN
test/de_fuzz/corpus/09692b8dcf066440274ea5d939aec16eccb10de8
Normal file
BIN
test/de_fuzz/corpus/09692b8dcf066440274ea5d939aec16eccb10de8
Normal file
Binary file not shown.
BIN
test/de_fuzz/corpus/098478e68695340652d4d2e9ed11fbbedad69e63
Normal file
BIN
test/de_fuzz/corpus/098478e68695340652d4d2e9ed11fbbedad69e63
Normal file
Binary file not shown.
BIN
test/de_fuzz/corpus/0985d13f526884e37b5074e8da192ba63f3ec18c
Normal file
BIN
test/de_fuzz/corpus/0985d13f526884e37b5074e8da192ba63f3ec18c
Normal file
Binary file not shown.
BIN
test/de_fuzz/corpus/098b4f661d78550dbe871aa6d2e5474910365a92
Normal file
BIN
test/de_fuzz/corpus/098b4f661d78550dbe871aa6d2e5474910365a92
Normal file
Binary file not shown.
BIN
test/de_fuzz/corpus/0996713c1213c4a3e8a8581bf0fc5cb43f0d9c84
Normal file
BIN
test/de_fuzz/corpus/0996713c1213c4a3e8a8581bf0fc5cb43f0d9c84
Normal file
Binary file not shown.
BIN
test/de_fuzz/corpus/09c39db7ced2e00411bd9bb69e27833c6aa2d47b
Normal file
BIN
test/de_fuzz/corpus/09c39db7ced2e00411bd9bb69e27833c6aa2d47b
Normal file
Binary file not shown.
BIN
test/de_fuzz/corpus/09d1332a1130a84c97303b9c0f8f5c1d22ccd335
Normal file
BIN
test/de_fuzz/corpus/09d1332a1130a84c97303b9c0f8f5c1d22ccd335
Normal file
Binary file not shown.
@ -0,0 +1 @@
|
||||
8^\l*(?:((.<2E>*?)\W*(?1)\<5C>*\2[abc]| |((.)\)W*(?1)\W*\4|\ZZZZZZZZZZZZZZZZZZZZZZ<1B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>\pd\)W*(?1)\W*\4|\ZZZZZZZZZZZZZZZZZZZZZZ<1B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><1B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>\pd<1B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><1B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>\pdquick brown )ox
|
BIN
test/de_fuzz/corpus/09f341b84c20552c905d21c138b184697fab337d
Normal file
BIN
test/de_fuzz/corpus/09f341b84c20552c905d21c138b184697fab337d
Normal file
Binary file not shown.
BIN
test/de_fuzz/corpus/0a04d9267fb8188a0920d5941c62dfcaa392b697
Normal file
BIN
test/de_fuzz/corpus/0a04d9267fb8188a0920d5941c62dfcaa392b697
Normal file
Binary file not shown.
BIN
test/de_fuzz/corpus/0a232c490b266ab32e15a6092c70ebc3dfda6ecc
Normal file
BIN
test/de_fuzz/corpus/0a232c490b266ab32e15a6092c70ebc3dfda6ecc
Normal file
Binary file not shown.
BIN
test/de_fuzz/corpus/0a34e1a8ea9da61a014714961b9818082c4f84be
Normal file
BIN
test/de_fuzz/corpus/0a34e1a8ea9da61a014714961b9818082c4f84be
Normal file
Binary file not shown.
BIN
test/de_fuzz/corpus/0a6ddeb7f27dec9f32913eed61df082aa928c8e7
Normal file
BIN
test/de_fuzz/corpus/0a6ddeb7f27dec9f32913eed61df082aa928c8e7
Normal file
Binary file not shown.
BIN
test/de_fuzz/corpus/0a6f08a511f7fbfe66ca6cf7f98bb5af2f7ef5b8
Normal file
BIN
test/de_fuzz/corpus/0a6f08a511f7fbfe66ca6cf7f98bb5af2f7ef5b8
Normal file
Binary file not shown.
BIN
test/de_fuzz/corpus/0a87a305f83262f88a9e826ca5aa22780faf0f6e
Normal file
BIN
test/de_fuzz/corpus/0a87a305f83262f88a9e826ca5aa22780faf0f6e
Normal file
Binary file not shown.
BIN
test/de_fuzz/corpus/0aae4febecef099e54707b7f8d59b50e70b1cd7c
Normal file
BIN
test/de_fuzz/corpus/0aae4febecef099e54707b7f8d59b50e70b1cd7c
Normal file
Binary file not shown.
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user