diff --git a/xkb/xkb.c b/xkb/xkb.c index b5d601dcb..ae6a4c09e 100644 --- a/xkb/xkb.c +++ b/xkb/xkb.c @@ -1616,6 +1616,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;