summaryrefslogtreecommitdiff
path: root/src/xkbcomp/expr.c
diff options
context:
space:
mode:
authorDaniel Stone <daniels@collabora.com>2017-10-30 11:21:55 +0000
committerDaniel Stone <daniels@collabora.com>2018-08-03 16:24:50 +0100
commitbb4909d2d8fa6b08155e449986a478101e2b2634 (patch)
tree79e063a947a43a6eb3370219b998861ffd6133ac /src/xkbcomp/expr.c
parent5440aaa5222b02275b4fd982f5326c92c072982b (diff)
downloadxorg-lib-libxkbcommon-bb4909d2d8fa6b08155e449986a478101e2b2634.tar.gz
Fail expression lookup on invalid atoms
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>
Diffstat (limited to 'src/xkbcomp/expr.c')
-rw-r--r--src/xkbcomp/expr.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/src/xkbcomp/expr.c b/src/xkbcomp/expr.c
index b5ab717..b2567de 100644
--- a/src/xkbcomp/expr.c
+++ b/src/xkbcomp/expr.c
@@ -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;