(submit/fixup-req-len) Xext: security: fix length checking with bigreq
The authorative source of the request frame size is client->req_len, especially with big requests larger than 2^18 bytes. Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
This commit is contained in:
		
							parent
							
								
									a5f0f51d1e
								
							
						
					
					
						commit
						3b0db0df71
					
				| 
						 | 
					@ -637,10 +637,10 @@ SProcSecurityGenerateAuthorization(ClientPtr client)
 | 
				
			||||||
    values_offset = bytes_to_int32(stuff->nbytesAuthProto) +
 | 
					    values_offset = bytes_to_int32(stuff->nbytesAuthProto) +
 | 
				
			||||||
        bytes_to_int32(stuff->nbytesAuthData);
 | 
					        bytes_to_int32(stuff->nbytesAuthData);
 | 
				
			||||||
    if (values_offset >
 | 
					    if (values_offset >
 | 
				
			||||||
        stuff->length - bytes_to_int32(sz_xSecurityGenerateAuthorizationReq))
 | 
					        client->req_len - bytes_to_int32(sz_xSecurityGenerateAuthorizationReq))
 | 
				
			||||||
        return BadLength;
 | 
					        return BadLength;
 | 
				
			||||||
    values = (CARD32 *) (&stuff[1]) + values_offset;
 | 
					    values = (CARD32 *) (&stuff[1]) + values_offset;
 | 
				
			||||||
    nvalues = (((CARD32 *) stuff) + stuff->length) - values;
 | 
					    nvalues = (((CARD32 *) stuff) + client->req_len) - values;
 | 
				
			||||||
    SwapLongs(values, nvalues);
 | 
					    SwapLongs(values, nvalues);
 | 
				
			||||||
    return ProcSecurityGenerateAuthorization(client);
 | 
					    return ProcSecurityGenerateAuthorization(client);
 | 
				
			||||||
}                               /* SProcSecurityGenerateAuthorization */
 | 
					}                               /* SProcSecurityGenerateAuthorization */
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue