summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorDaniel Stone <daniels@collabora.com>2017-06-26 17:21:45 +0100
committerDaniel Stone <daniels@collabora.com>2018-08-03 16:14:16 +0100
commit38e1766bc6e20108948aec8a0b222a4bad0254e9 (patch)
treee3e23e9bdb234dbfb0ab43893c5dd8ea02025125 /src
parent4e2ee9c3f6050d773f8bbe05bc0edb17f1ff8371 (diff)
downloadxorg-lib-libxkbcommon-38e1766bc6e20108948aec8a0b222a4bad0254e9.tar.gz
xkbcomp: Don't falsely promise from ExprResolveLhs
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>
Diffstat (limited to 'src')
-rw-r--r--src/xkbcomp/expr.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/src/xkbcomp/expr.c b/src/xkbcomp/expr.c
index 91713da..b5ab717 100644
--- a/src/xkbcomp/expr.c
+++ b/src/xkbcomp/expr.c
@@ -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);