xkb: Avoid length-check failure on empty strings.

_XkbCheckRequestBounds assumes that from..to is at least one byte.
However, request strings can be empty, causing spurious failures in
XkbGetKbdByName calls. To avoid this, before checking bounds make
sure that the length is nonzero.

(cherry picked from commit 79c572fbd3)
This commit is contained in:
FeepingCreature 2022-08-20 20:12:31 +02:00 committed by Olivier Fourdan
parent 6e61cdc095
commit be614dbfa6

View file

@ -5818,11 +5818,11 @@ GetComponentSpec(ClientPtr client, xkbGetKbdByNameReq *stuff,
return NULL;
}
len = (*(unsigned char *) wire++);
if (!_XkbCheckRequestBounds(client, stuff, wire, wire + len)) {
*errRtrn = BadLength;
return NULL;
}
if (len > 0) {
if (!_XkbCheckRequestBounds(client, stuff, wire, wire + len)) {
*errRtrn = BadLength;
return NULL;
}
str = calloc(1, len + 1);
if (str) {
tmp = str;