From: Sebastian Harl Date: Wed, 20 May 2015 08:32:37 +0000 (+0200) Subject: parser: Skip context-specific checks if the context is unspecified. X-Git-Tag: sysdb-0.8.0~76 X-Git-Url: https://git.tokkee.org/?a=commitdiff_plain;h=fcc75b2e7b54733d006bf460a67393842aa71cf0;p=sysdb.git parser: Skip context-specific checks if the context is unspecified. Else, the analyzer may reject valid queries. It's up to the caller to run the analyzer using the right context once it's known. --- diff --git a/src/parser/analyzer.c b/src/parser/analyzer.c index f352a0d..28d3121 100644 --- a/src/parser/analyzer.c +++ b/src/parser/analyzer.c @@ -319,10 +319,15 @@ analyze_value(int context, sdb_ast_value_t *v, sdb_strbuf_t *errbuf) return -1; } - if ((context != SDB_ATTRIBUTE) && (v->type == SDB_FIELD_VALUE)) { - sdb_strbuf_sprintf(errbuf, "Invalid expression %s.value", - SDB_FIELD_TO_NAME(v->type)); - return -1; + if (context != UNSPEC_CONTEXT) { + /* skip this check if we don't know the context; it's up to the + * caller to check again once the right context information is + * available */ + if ((context != SDB_ATTRIBUTE) && (v->type == SDB_FIELD_VALUE)) { + sdb_strbuf_sprintf(errbuf, "Invalid expression %s.value", + SDB_FIELD_TO_NAME(context)); + return -1; + } } return 0; } /* analyze_value */