From 5e440203e5a68c1a685b69196a314d3b88e0c861 Mon Sep 17 00:00:00 2001 From: Ralph Boehme Date: Mon, 4 Mar 2013 21:40:17 +0100 Subject: [PATCH] Fix check for unsupported attributes --- etc/spotlight/slmod_sparql_parser.c | 7 +++++-- etc/spotlight/slmod_sparql_parser.y | 7 +++++-- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/etc/spotlight/slmod_sparql_parser.c b/etc/spotlight/slmod_sparql_parser.c index 252514d4..9772b9ee 100644 --- a/etc/spotlight/slmod_sparql_parser.c +++ b/etc/spotlight/slmod_sparql_parser.c @@ -1932,7 +1932,11 @@ static const char *map_expr(const char *attr, char op, const char *val) bstring q = NULL, search = NULL, replace = NULL; for (p = spotlight_sparql_map; p->ssm_spotlight_attr; p++) { - if (p->ssm_sparql_attr && strcmp(p->ssm_spotlight_attr, attr) == 0) { + if (strcmp(p->ssm_spotlight_attr, attr) == 0) { + if (p->ssm_type != ssmt_type && p->ssm_sparql_attr == NULL) { + yyerror("unsupported Spotlight attribute"); + EC_FAIL; + } switch (p->ssm_type) { case ssmt_bool: result = talloc_asprintf(ssp_slq, "?obj %s '%s'", p->ssm_sparql_attr, val); @@ -1978,7 +1982,6 @@ static const char *map_expr(const char *attr, char op, const char *val) result = map_type_search(attr, op, val); break; default: - yyerror("unknown Spotlight attribute type"); EC_FAIL; } break; diff --git a/etc/spotlight/slmod_sparql_parser.y b/etc/spotlight/slmod_sparql_parser.y index 30112969..68d3d101 100644 --- a/etc/spotlight/slmod_sparql_parser.y +++ b/etc/spotlight/slmod_sparql_parser.y @@ -206,7 +206,11 @@ static const char *map_expr(const char *attr, char op, const char *val) bstring q = NULL, search = NULL, replace = NULL; for (p = spotlight_sparql_map; p->ssm_spotlight_attr; p++) { - if (p->ssm_sparql_attr && strcmp(p->ssm_spotlight_attr, attr) == 0) { + if (strcmp(p->ssm_spotlight_attr, attr) == 0) { + if (p->ssm_type != ssmt_type && p->ssm_sparql_attr == NULL) { + yyerror("unsupported Spotlight attribute"); + EC_FAIL; + } switch (p->ssm_type) { case ssmt_bool: result = talloc_asprintf(ssp_slq, "?obj %s '%s'", p->ssm_sparql_attr, val); @@ -252,7 +256,6 @@ static const char *map_expr(const char *attr, char op, const char *val) result = map_type_search(attr, op, val); break; default: - yyerror("unknown Spotlight attribute type"); EC_FAIL; } break; -- 2.39.2