From 5547a82f2a6ed752fea3ce9a531b13801be3a54a Mon Sep 17 00:00:00 2001 From: Ran Benita Date: Fri, 7 Feb 2014 21:12:53 +0200 Subject: [PATCH] parser: fix unrecognized keysym handling Integer may be negative, so also need to test >= 0. Also, $$ was left uninitialized if the keysym wasn't recognized. Signed-off-by: Ran Benita --- src/xkbcomp/parser.y | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/src/xkbcomp/parser.y b/src/xkbcomp/parser.y index 20ece28..5652ddf 100644 --- a/src/xkbcomp/parser.y +++ b/src/xkbcomp/parser.y @@ -710,14 +710,20 @@ KeySym : IDENT | SECTION { $$ = XKB_KEY_section; } | Integer { - if ($1 < 10) { /* XKB_KEY_0 .. XKB_KEY_9 */ - $$ = XKB_KEY_0 + $1; + if ($1 < 0) { + parser_warn(param, "unrecognized keysym"); + $$ = XKB_KEY_NoSymbol; + } + else if ($1 < 10) { /* XKB_KEY_0 .. XKB_KEY_9 */ + $$ = XKB_KEY_0 + (xkb_keysym_t) $1; } else { char buf[17]; snprintf(buf, sizeof(buf), "0x%x", $1); - if (!resolve_keysym(buf, &$$)) + if (!resolve_keysym(buf, &$$)) { parser_warn(param, "unrecognized keysym"); + $$ = XKB_KEY_NoSymbol; + } } } ;