mirror of
https://gitlab.freedesktop.org/xorg/lib/libx11.git
synced 2026-05-07 19:08:11 +02:00
assert() that we will not infinite loop or read uninitialized memory.
This commit is contained in:
parent
d3512ef3aa
commit
f9afb5a544
1 changed files with 5 additions and 0 deletions
|
|
@ -158,6 +158,7 @@ static inline int issue_complete_request(Display *dpy, int veclen, struct iovec
|
|||
size_t len;
|
||||
|
||||
/* skip empty iovecs. if no iovecs remain, we're done. */
|
||||
assert(veclen >= 0);
|
||||
while(veclen > 0 && vec[0].iov_len == 0)
|
||||
--veclen, ++vec;
|
||||
if(!veclen)
|
||||
|
|
@ -166,10 +167,14 @@ static inline int issue_complete_request(Display *dpy, int veclen, struct iovec
|
|||
/* we have at least part of a request. dig out the length field.
|
||||
* note that length fields are always in vec[0]: Xlib doesn't split
|
||||
* fixed-length request parts. */
|
||||
assert(vec[0].iov_len >= 4);
|
||||
len = ((CARD16 *) vec[0].iov_base)[1];
|
||||
if(len == 0)
|
||||
{
|
||||
/* it's a bigrequest. dig out the *real* length field. */
|
||||
assert(vec[0].iov_len >= 8);
|
||||
len = ((CARD32 *) vec[0].iov_base)[1];
|
||||
}
|
||||
len <<= 2;
|
||||
|
||||
/* do we have enough data for a complete request? how many iovec
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue