xkb: Drop check for XkbSetMapResizeTypes
Commit446ff2d317
added checks to prevalidate the size of incoming SetMap requests. That commit checks for the XkbSetMapResizeTypes flag to be set before allowing key types data to be processed. key types data can be changed or even just sent wholesale unchanged without the number of key types changing, however. The check for XkbSetMapResizeTypes rejects those legitimate requests. In particular, XkbChangeMap never sets XkbSetMapResizeTypes and so always fails now any time XkbKeyTypesMask is in the changed mask. This commit drops the check for XkbSetMapResizeTypes in flags when prevalidating the request length. (cherry picked from commit8b7f4d3259
)
This commit is contained in:
parent
b87536682c
commit
bc1327e6de
26
xkb/xkb.c
26
xkb/xkb.c
|
@ -2405,21 +2405,19 @@ _XkbSetMapCheckLength(xkbSetMapReq *req)
|
|||
keytype = (xkbKeyTypeWireDesc *)(req + 1);
|
||||
for (i = 0; i < req->nTypes; i++) {
|
||||
_add_check_len(XkbPaddedSize(sz_xkbKeyTypeWireDesc));
|
||||
if (req->flags & XkbSetMapResizeTypes) {
|
||||
_add_check_len(keytype->nMapEntries
|
||||
* sz_xkbKTSetMapEntryWireDesc);
|
||||
preserve = keytype->preserve;
|
||||
map_count = keytype->nMapEntries;
|
||||
if (preserve) {
|
||||
_add_check_len(map_count * sz_xkbModsWireDesc);
|
||||
}
|
||||
keytype += 1;
|
||||
keytype = (xkbKeyTypeWireDesc *)
|
||||
((xkbKTSetMapEntryWireDesc *)keytype + map_count);
|
||||
if (preserve)
|
||||
keytype = (xkbKeyTypeWireDesc *)
|
||||
((xkbModsWireDesc *)keytype + map_count);
|
||||
_add_check_len(keytype->nMapEntries
|
||||
* sz_xkbKTSetMapEntryWireDesc);
|
||||
preserve = keytype->preserve;
|
||||
map_count = keytype->nMapEntries;
|
||||
if (preserve) {
|
||||
_add_check_len(map_count * sz_xkbModsWireDesc);
|
||||
}
|
||||
keytype += 1;
|
||||
keytype = (xkbKeyTypeWireDesc *)
|
||||
((xkbKTSetMapEntryWireDesc *)keytype + map_count);
|
||||
if (preserve)
|
||||
keytype = (xkbKeyTypeWireDesc *)
|
||||
((xkbModsWireDesc *)keytype + map_count);
|
||||
}
|
||||
}
|
||||
/* syms */
|
||||
|
|
Loading…
Reference in New Issue