xfixes: Fix out of bounds access in *ProcXFixesCreatePointerBarrier()
ZDI-CAN-14950, CVE-2021-4009
This vulnerability was discovered and the fix was suggested by:
Jan-Niklas Sohn working with Trend Micro Zero Day Initiative
Signed-off-by: Povilas Kanapickas <povilas@radix.lt>
(cherry picked from commit b519675009
)
This commit is contained in:
parent
a82d523edb
commit
6f09e7d391
|
@ -1010,7 +1010,8 @@ ProcXFixesCreatePointerBarrier(ClientPtr client)
|
||||||
{
|
{
|
||||||
REQUEST(xXFixesCreatePointerBarrierReq);
|
REQUEST(xXFixesCreatePointerBarrierReq);
|
||||||
|
|
||||||
REQUEST_FIXED_SIZE(xXFixesCreatePointerBarrierReq, pad_to_int32(stuff->num_devices));
|
REQUEST_FIXED_SIZE(xXFixesCreatePointerBarrierReq,
|
||||||
|
pad_to_int32(stuff->num_devices * sizeof(CARD16)));
|
||||||
LEGAL_NEW_RESOURCE(stuff->barrier, client);
|
LEGAL_NEW_RESOURCE(stuff->barrier, client);
|
||||||
|
|
||||||
return XICreatePointerBarrier(client, stuff);
|
return XICreatePointerBarrier(client, stuff);
|
||||||
|
@ -1027,7 +1028,8 @@ SProcXFixesCreatePointerBarrier(ClientPtr client)
|
||||||
|
|
||||||
swaps(&stuff->length);
|
swaps(&stuff->length);
|
||||||
swaps(&stuff->num_devices);
|
swaps(&stuff->num_devices);
|
||||||
REQUEST_FIXED_SIZE(xXFixesCreatePointerBarrierReq, pad_to_int32(stuff->num_devices));
|
REQUEST_FIXED_SIZE(xXFixesCreatePointerBarrierReq,
|
||||||
|
pad_to_int32(stuff->num_devices * sizeof(CARD16)));
|
||||||
|
|
||||||
swapl(&stuff->barrier);
|
swapl(&stuff->barrier);
|
||||||
swapl(&stuff->window);
|
swapl(&stuff->window);
|
||||||
|
|
Loading…
Reference in New Issue