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;
}
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;
}