diff --git a/Xi/xichangehierarchy.c b/Xi/xichangehierarchy.c index ba18ac721..2a3a439a1 100644 --- a/Xi/xichangehierarchy.c +++ b/Xi/xichangehierarchy.c @@ -454,8 +454,10 @@ ProcXIChangeHierarchy(ClientPtr client) SWAPIF(swaps(&any->type)); SWAPIF(swaps(&any->length)); - if (len < ((size_t)any->length << 2)) - return BadLength; + if (any->length == 0 || len < ((size_t)any->length << 2)) { + rc = BadLength; + goto unwind; + } #define CHANGE_SIZE_MATCH(type) \ do { \