From: David Herrmann Date: Tue, 23 Sep 2014 11:51:42 +0000 (+0200) Subject: terminal: verify kernel-returned DRM events are not truncated X-Git-Tag: v217~448 X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=commitdiff_plain;h=a908d213557cfbe874b7bd1ae3a1b0d3c05c29e9;p=elogind.git terminal: verify kernel-returned DRM events are not truncated Make sure the kernel always returns events properly. This is guaranteed right now, otherwise, we do something really wrong. But lets be sure and verify the received values properly. This also silences some coverity warnings. --- diff --git a/src/libsystemd-terminal/grdev-drm.c b/src/libsystemd-terminal/grdev-drm.c index 5c65c096d..5393ebf98 100644 --- a/src/libsystemd-terminal/grdev-drm.c +++ b/src/libsystemd-terminal/grdev-drm.c @@ -2223,7 +2223,7 @@ static int grdrm_card_io_fn(sd_event_source *s, int fd, uint32_t revents, void * for (i = 0; i < l; i += event->length) { event = (void*)&buf[i]; - if (i + event->length > l) { + if (i + (ssize_t)sizeof(*event) > l || i + (ssize_t)event->length > l) { log_debug("grdrm: %s/%s: truncated event", card->base.session->name, card->base.name); break; }