diff options
| author | Dipen Somani <dipen.somani@samsung.com> | 2018-04-19 09:01:56 -0500 |
|---|---|---|
| committer | Derek Foreman <derekf@osg.samsung.com> | 2018-04-20 13:05:09 -0500 |
| commit | 685f9a09097a7c598dd737eb83ea419f6a21b260 (patch) | |
| tree | 40020967498a18349a7d2497920012550c9fd79b /src | |
| parent | configure.ac: Reopen master for regular development (diff) | |
| download | wayland-685f9a09097a7c598dd737eb83ea419f6a21b260.tar wayland-685f9a09097a7c598dd737eb83ea419f6a21b260.tar.gz wayland-685f9a09097a7c598dd737eb83ea419f6a21b260.tar.bz2 wayland-685f9a09097a7c598dd737eb83ea419f6a21b260.tar.lz wayland-685f9a09097a7c598dd737eb83ea419f6a21b260.tar.xz wayland-685f9a09097a7c598dd737eb83ea419f6a21b260.tar.zst wayland-685f9a09097a7c598dd737eb83ea419f6a21b260.zip | |
wayland-server: Properly handle EAGAIN from wl_connection_read()
commit 3cddb3c692acd3536a7cc8542a29f0cc3c0ac3d6 casted len to an
unsigned value to compare to sizeof results. However,
wl_connection_read() can fail, setting errno to EAGAIN and returning
a value of -1.
When cast to an unsigned type this leads to a loop condition of true
when it should be false.
Signed-off-by: Dipen Somani <dipen.somani@samsung.com>
Signed-off-by: Derek Foreman <derekf@osg.samsung.com>
Reviewed-by: Derek Foreman <derekf@osg.samsung.com>
Diffstat (limited to 'src')
| -rw-r--r-- | src/wayland-server.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/src/wayland-server.c b/src/wayland-server.c index eb1e500..eab2ee4 100644 --- a/src/wayland-server.c +++ b/src/wayland-server.c @@ -353,7 +353,7 @@ wl_client_connection_data(int fd, uint32_t mask, void *data) } } - while ((size_t) len >= sizeof p) { + while (len >= 0 && (size_t) len >= sizeof p) { wl_connection_copy(connection, p, sizeof p); opcode = p[1] & 0xffff; size = p[1] >> 16; |
