xkbcomp: Don't falsely promise from ExprResolveLhs
authorDaniel Stone <daniels@collabora.com>
Mon, 26 Jun 2017 16:21:45 +0000 (17:21 +0100)
committerDaniel Stone <daniels@collabora.com>
Fri, 3 Aug 2018 15:14:16 +0000 (16:14 +0100)
Every user of ExprReturnLhs goes on to unconditionally dereference the
field return, which can be NULL if xkb_intern_atom fails. Return false
if this is the case, so we fail safely.

testcase: splice geometry data into interp

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

index 91713da..b5ab717 100644 (file)
@@ -42,7 +42,7 @@ ExprResolveLhs(struct xkb_context *ctx, const ExprDef *expr,
         *elem_rtrn = NULL;
         *field_rtrn = xkb_atom_text(ctx, expr->ident.ident);
         *index_rtrn = NULL;
-        return true;
+        return (*field_rtrn != NULL);
     case EXPR_FIELD_REF:
         *elem_rtrn = xkb_atom_text(ctx, expr->field_ref.element);
         *field_rtrn = xkb_atom_text(ctx, expr->field_ref.field);