diff options
author | Daniel Stone <daniels@collabora.com> | 2017-10-30 11:21:55 +0000 |
---|---|---|
committer | Daniel Stone <daniels@collabora.com> | 2018-08-03 16:24:50 +0100 |
commit | bb4909d2d8fa6b08155e449986a478101e2b2634 (patch) | |
tree | 79e063a947a43a6eb3370219b998861ffd6133ac /src/xkbcomp/expr.c | |
parent | 5440aaa5222b02275b4fd982f5326c92c072982b (diff) | |
download | xorg-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.c | 6 |
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; |