From 685f9a09097a7c598dd737eb83ea419f6a21b260 Mon Sep 17 00:00:00 2001 From: Dipen Somani Date: Thu, 19 Apr 2018 09:01:56 -0500 Subject: [PATCH] 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 Signed-off-by: Derek Foreman Reviewed-by: Derek Foreman --- src/wayland-server.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/wayland-server.c b/src/wayland-server.c index eb1e5000..eab2ee45 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;