MXS-2785: Report PCRE2 errors
The substitution string could cause errors.
This commit is contained in:
@ -30,6 +30,7 @@ struct BinlogConfig
|
||||
, exclude(pParams->get_compiled_regex("exclude", 0, nullptr).release())
|
||||
, md_exclude(exclude ? pcre2_match_data_create_from_pattern(exclude, nullptr) : nullptr)
|
||||
, rewrite_src(pParams->get_compiled_regex(REWRITE_SRC, 0, nullptr).release())
|
||||
, rewrite_src_pattern(pParams->get_string(REWRITE_SRC))
|
||||
, rewrite_dest(pParams->get_string(REWRITE_DEST))
|
||||
{
|
||||
}
|
||||
@ -39,6 +40,7 @@ struct BinlogConfig
|
||||
pcre2_code* exclude;
|
||||
pcre2_match_data* md_exclude;
|
||||
pcre2_code* rewrite_src;
|
||||
std::string rewrite_src_pattern;
|
||||
std::string rewrite_dest;
|
||||
};
|
||||
|
||||
|
@ -851,10 +851,17 @@ void BinlogFilterSession::checkStatement(GWBUF** buffer, const REP_HEADER& hdr)
|
||||
|
||||
if (!m_skip && config.rewrite_src)
|
||||
{
|
||||
auto new_db = mxs::pcre2_substitute(config.rewrite_src, db, config.rewrite_dest);
|
||||
auto new_sql = mxs::pcre2_substitute(config.rewrite_src, sql, config.rewrite_dest);
|
||||
std::string err;
|
||||
auto new_db = mxs::pcre2_substitute(config.rewrite_src, db, config.rewrite_dest, &err);
|
||||
auto new_sql = mxs::pcre2_substitute(config.rewrite_src, sql, config.rewrite_dest, &err);
|
||||
|
||||
if (db != new_db || sql != new_sql)
|
||||
if (new_db.empty() || new_sql.empty())
|
||||
{
|
||||
MXS_ERROR("PCRE2 error on pattern '%s' with replacement '%s': %s",
|
||||
config.rewrite_src_pattern.c_str(),
|
||||
config.rewrite_dest.c_str(), err.c_str());
|
||||
}
|
||||
else if (db != new_db || sql != new_sql)
|
||||
{
|
||||
db = new_db;
|
||||
sql = new_sql;
|
||||
|
Reference in New Issue
Block a user