diff --git a/os/io.c b/os/io.c index b0402912a..955c24924 100644 --- a/os/io.c +++ b/os/io.c @@ -441,6 +441,11 @@ ReadRequestFromClient(ClientPtr client) if (!gotnow) AvailableInput = oc; if (move_header) { + if (client->req_len < bytes_to_int32(sizeof(xBigReq) - sizeof(xReq))) { + YieldControlDeath(); + return -1; + } + request = (xReq *) oci->bufptr; oci->bufptr += (sizeof(xBigReq) - sizeof(xReq)); *(xReq *) oci->bufptr = *request;