Fail expression lookup on invalid atoms
authorDaniel Stone <daniels@collabora.com>
Mon, 30 Oct 2017 11:21:55 +0000 (11:21 +0000)
committerDaniel Stone <daniels@collabora.com>
Fri, 3 Aug 2018 15:24:50 +0000 (16:24 +0100)
If we fail atom lookup, then we should not claim that we successfully
looked up the expression.

Signed-off-by: Daniel Stone <daniels@collabora.com>
src/xkbcomp/expr.c

index b5ab717..b2567de 100644 (file)
@@ -47,11 +47,15 @@ ExprResolveLhs(struct xkb_context *ctx, const ExprDef *expr,
         *elem_rtrn = xkb_atom_text(ctx, expr->field_ref.element);
         *field_rtrn = xkb_atom_text(ctx, expr->field_ref.field);
         *index_rtrn = NULL;
-        return true;
+        return (*elem_rtrn != NULL && *field_rtrn != NULL);
     case EXPR_ARRAY_REF:
         *elem_rtrn = xkb_atom_text(ctx, expr->array_ref.element);
         *field_rtrn = xkb_atom_text(ctx, expr->array_ref.field);
         *index_rtrn = expr->array_ref.entry;
+       if (expr->array_ref.element != XKB_ATOM_NONE && *elem_rtrn == NULL)
+               return false;
+       if (*field_rtrn == NULL)
+               return false;
         return true;
     default:
         break;