diff --git a/xkb/xkb.c b/xkb/xkb.c index 49c69a933..7ee11bcd8 100644 --- a/xkb/xkb.c +++ b/xkb/xkb.c @@ -1621,6 +1621,11 @@ CheckKeyTypes(ClientPtr client, *nMapsRtrn = _XkbErrCode4(0x02, req->firstType, req->nTypes, 4); return 0; } + if (nMaps > XkbMaxLegalKeyCode + 1) { + *nMapsRtrn = _XkbErrCode4(0x02, req->firstType, req->nTypes, + XkbMaxLegalKeyCode + 1); + return 0; + } } else if (req->present & XkbKeyTypesMask) { nMaps = xkb->map->num_types;