diff options
author | Matthieu Herrb <matthieu@herrb.eu> | 2020-08-18 14:52:29 +0200 |
---|---|---|
committer | Matthieu Herrb <matthieu@herrb.eu> | 2020-08-25 17:01:29 +0200 |
commit | 144849ea27230962227e62a943b399e2ab304787 (patch) | |
tree | ff01cb01673a93066b26fccad1b83f1a8641fd5f | |
parent | c940cc8b6c0a2983c1ec974f1b3f019795dd4cff (diff) |
Fix XkbSelectEvents() integer underflow
CVE-2020-14361 ZDI-CAN 11573
This vulnerability was discovered by:
Jan-Niklas Sohn working with Trend Micro Zero Day Initiative
Signed-off-by: Matthieu Herrb <matthieu@herrb.eu>
-rw-r--r-- | xkb/xkbSwap.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/xkb/xkbSwap.c b/xkb/xkbSwap.c index 1c1ed5ff4..50cabb90e 100644 --- a/xkb/xkbSwap.c +++ b/xkb/xkbSwap.c @@ -76,7 +76,7 @@ SProcXkbSelectEvents(ClientPtr client) register unsigned bit, ndx, maskLeft, dataLeft, size; from.c8 = (CARD8 *) &stuff[1]; - dataLeft = (stuff->length * 4) - SIZEOF(xkbSelectEventsReq); + dataLeft = (client->req_len * 4) - SIZEOF(xkbSelectEventsReq); maskLeft = (stuff->affectWhich & (~XkbMapNotifyMask)); for (ndx = 0, bit = 1; (maskLeft != 0); ndx++, bit <<= 1) { if (((bit & maskLeft) == 0) || (ndx == XkbMapNotify)) |