Keysyms: improve generator (#364)
[platform/upstream/libxkbcommon.git] / src / keysym.c
index 989ae7c..ef811bd 100644 (file)
@@ -64,7 +64,7 @@ get_name(const struct name_keysym *entry)
 XKB_EXPORT int
 xkb_keysym_get_name(xkb_keysym_t ks, char *buffer, size_t size)
 {
-    if ((ks & ((unsigned long) ~0x1fffffff)) != 0) {
+    if (ks > XKB_KEYSYM_MAX) {
         snprintf(buffer, size, "Invalid");
         return -1;
     }
@@ -208,6 +208,8 @@ xkb_keysym_from_name(const char *name, enum xkb_keysym_flags flags)
     else if (name[0] == '0' && (name[1] == 'x' || (icase && name[1] == 'X'))) {
         if (!parse_keysym_hex(&name[2], &val))
             return XKB_KEY_NoSymbol;
+        if (val > XKB_KEYSYM_MAX)
+            return XKB_KEY_NoSymbol;
         return (xkb_keysym_t) val;
     }