Prevent prepared statement use with dbfwfilter
Since the prepared statements can't be processed, they should not be allowed.
This commit is contained in:
parent
1ceafb9723
commit
67894b2c7b
@ -2310,6 +2310,8 @@ routeQuery(FILTER *instance, void *session, GWBUF *queue)
|
||||
thr_rule_version = rule_version;
|
||||
}
|
||||
|
||||
uint32_t type = qc_get_type(queue);
|
||||
|
||||
if (modutil_is_SQL(queue) && modutil_count_statements(queue) > 1)
|
||||
{
|
||||
GWBUF* err = gen_dummy_error(my_session, "This filter does not support "
|
||||
@ -2319,6 +2321,17 @@ routeQuery(FILTER *instance, void *session, GWBUF *queue)
|
||||
my_session->errmsg = NULL;
|
||||
rval = dcb->func.write(dcb, err);
|
||||
}
|
||||
else if (qc_query_is_type(type, QUERY_TYPE_PREPARE_STMT) ||
|
||||
qc_query_is_type(type, QUERY_TYPE_PREPARE_NAMED_STMT) ||
|
||||
modutil_is_SQL_prepare(queue))
|
||||
{
|
||||
GWBUF* err = gen_dummy_error(my_session, "This filter does not support "
|
||||
"prepared statements.");
|
||||
gwbuf_free(queue);
|
||||
MXS_FREE(my_session->errmsg);
|
||||
my_session->errmsg = NULL;
|
||||
rval = dcb->func.write(dcb, err);
|
||||
}
|
||||
else
|
||||
{
|
||||
DBFW_USER *user = find_user_data(thr_users, dcb->user, dcb->remote);
|
||||
|
Loading…
x
Reference in New Issue
Block a user