[PATCH] hotkey: only process reads of hotkey events that are at least the correct length
Colin King
colin.king at canonical.com
Thu May 14 11:33:17 UTC 2015
From: Colin Ian King <colin.king at canonical.com>
Coverity Scan found an issue where the comparison to the event structure was
incorrect when reads were too short in size.
Signed-off-by: Colin Ian King <colin.king at canonical.com>
---
src/hotkey/hotkey/hotkey.c | 22 +++++++++++-----------
1 file changed, 11 insertions(+), 11 deletions(-)
diff --git a/src/hotkey/hotkey/hotkey.c b/src/hotkey/hotkey/hotkey.c
index 6e40df1..28d3ef1 100644
--- a/src/hotkey/hotkey/hotkey.c
+++ b/src/hotkey/hotkey/hotkey.c
@@ -90,20 +90,20 @@ static int hotkey_test(fwts_framework *fw, char *dev, fwts_list *hotkeys)
}
while (do_test) {
- switch (read(fd, &ev, sizeof(ev))) {
- case -1:
- case 0:
+ ssize_t ret = read(fd, &ev, sizeof(ev));
+
+ if (ret < (ssize_t)sizeof(ev)) {
do_test = 0;
break;
- default:
- if ((ev.type == EV_KEY) &&
- (ev.code == KEY_ESC) &&
- (ev.value == 0))
- do_test = 0;
- else
- hotkey_check_key(fw, &ev, hotkeys);
- break;
}
+
+ if ((ev.type == EV_KEY) &&
+ (ev.code == KEY_ESC) &&
+ (ev.value == 0))
+ do_test = 0;
+ else
+ hotkey_check_key(fw, &ev, hotkeys);
+ break;
}
if (ioctl(fd, EVIOCGRAB, (void*)0)) { /* Release */
--
2.1.4
More information about the fwts-devel
mailing list