From c05bb3593a8dd55e39321b53277b967d9058c97a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Markus=20M=C3=A4kel=C3=A4?= Date: Wed, 23 Aug 2017 13:17:02 +0300 Subject: [PATCH] MXS-1346: Take the new query classifier features into use The function usage by column is now used by the dbfwfilter. This finishes the implementation of blocking function usage per column. --- server/modules/filter/dbfwfilter/dbfwfilter.c | 21 +++++++++++-------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/server/modules/filter/dbfwfilter/dbfwfilter.c b/server/modules/filter/dbfwfilter/dbfwfilter.c index 17adac405..8b43105f8 100644 --- a/server/modules/filter/dbfwfilter/dbfwfilter.c +++ b/server/modules/filter/dbfwfilter/dbfwfilter.c @@ -2166,17 +2166,20 @@ void match_function_usage(RULE *rule, GWBUF *queue, enum fw_actions mode, for (size_t i = 0; i < n_infos; ++i) { - const char* tok = "TODO: Use the actual function values"; - - for (STRLINK* s = (STRLINK*)rule->data; s; s = s->next) + for (size_t j = 0; j < infos[i].n_fields; j++) { - if (strcasecmp(tok, s->value) == 0) + const char* tok = infos[i].fields[j].column; + + for (STRLINK* s = (STRLINK*)rule->data; s; s = s->next) { - MXS_NOTICE("rule '%s': query uses a function with forbidden column: %s", - rule->name, s->value); - *msg = create_error("Permission denied to column '%s' with function.", s->value); - *matches = true; - return; + if (strcasecmp(tok, s->value) == 0) + { + MXS_NOTICE("rule '%s': query uses a function with forbidden column: %s", + rule->name, s->value); + *msg = create_error("Permission denied to column '%s' with function.", s->value); + *matches = true; + return; + } } } }