diff options
author | Alexander Barkov <bar@mariadb.org> | 2017-06-15 15:27:11 +0400 |
---|---|---|
committer | Alexander Barkov <bar@mariadb.org> | 2017-06-15 15:27:11 +0400 |
commit | 765347384af7fd3393ad37567a612d93ed8b3d92 (patch) | |
tree | a2c0a08596142312ec38f33e4e02f353a2730fe1 /sql/item_cmpfunc.h | |
parent | 3b1921c714fcb4415cea9058408fb5a626e93b62 (diff) | |
parent | e813fe862226554cfe31754b3dfeafbb2b9a7159 (diff) | |
download | mariadb-git-765347384af7fd3393ad37567a612d93ed8b3d92.tar.gz |
Merge remote-tracking branch 'origin/10.2' into bb-10.2-ext
Diffstat (limited to 'sql/item_cmpfunc.h')
-rw-r--r-- | sql/item_cmpfunc.h | 14 |
1 files changed, 8 insertions, 6 deletions
diff --git a/sql/item_cmpfunc.h b/sql/item_cmpfunc.h index e21e074a7a3..f19cae72cb5 100644 --- a/sql/item_cmpfunc.h +++ b/sql/item_cmpfunc.h @@ -2554,6 +2554,7 @@ public: class Regexp_processor_pcre { pcre *m_pcre; + pcre_extra m_pcre_extra; bool m_conversion_is_needed; bool m_is_const; int m_library_flags; @@ -2562,7 +2563,6 @@ class Regexp_processor_pcre String m_prev_pattern; int m_pcre_exec_rc; int m_SubStrVec[30]; - uint m_subpatterns_needed; void pcre_exec_warn(int rc) const; int pcre_exec_with_warn(const pcre *code, const pcre_extra *extra, const char *subject, int length, int startoffset, @@ -2576,11 +2576,14 @@ public: m_pcre(NULL), m_conversion_is_needed(true), m_is_const(0), m_library_flags(0), m_data_charset(&my_charset_utf8_general_ci), - m_library_charset(&my_charset_utf8_general_ci), - m_subpatterns_needed(0) - {} + m_library_charset(&my_charset_utf8_general_ci) + { + m_pcre_extra.flags= PCRE_EXTRA_MATCH_LIMIT_RECURSION; + m_pcre_extra.match_limit_recursion= 100L; + } int default_regex_flags(); - void init(CHARSET_INFO *data_charset, int extra_flags, uint nsubpatterns_arg) + void set_recursion_limit(THD *); + void init(CHARSET_INFO *data_charset, int extra_flags) { m_library_flags= default_regex_flags() | extra_flags | (data_charset != &my_charset_bin ? @@ -2594,7 +2597,6 @@ public: m_conversion_is_needed= (data_charset != &my_charset_bin) && !my_charset_same(data_charset, m_library_charset); - m_subpatterns_needed= nsubpatterns_arg; } void fix_owner(Item_func *owner, Item *subject_arg, Item *pattern_arg); bool compile(String *pattern, bool send_error); |