Added error message for multi-statements to dbfwfilter.
This commit is contained in:
@ -830,11 +830,17 @@ int modutil_count_statements(GWBUF* buffer)
|
||||
char* end = ((char*)(buffer)->end);
|
||||
int num = 1;
|
||||
|
||||
while((ptr = strnchr_esc(ptr,';', end - ptr)))
|
||||
while(ptr < end && (ptr = strnchr_esc(ptr,';', end - ptr)))
|
||||
{
|
||||
num++;
|
||||
while(*ptr == ';')
|
||||
ptr++;
|
||||
}
|
||||
|
||||
if(*(end - 1) == ';')
|
||||
{
|
||||
num--;
|
||||
}
|
||||
|
||||
return num;
|
||||
}
|
@ -1983,6 +1983,15 @@ routeQuery(FILTER *instance, void *session, GWBUF *queue)
|
||||
ipaddr = strdup(dcb->remote);
|
||||
sprintf(uname_addr,"%s@%s",dcb->user,ipaddr);
|
||||
|
||||
if(modutil_is_SQL(queue) && modutil_count_statements(queue) > 1)
|
||||
{
|
||||
if(my_session->errmsg)
|
||||
free(my_session->errmsg);
|
||||
|
||||
my_session->errmsg = strdup("This filter does not support multi-statements.");
|
||||
accept = false;
|
||||
goto queryresolved;
|
||||
}
|
||||
|
||||
if((user = (USER*)hashtable_fetch(my_instance->htable, uname_addr)) == NULL){
|
||||
while(user == NULL && next_ip_class(ipaddr)){
|
||||
|
Reference in New Issue
Block a user