From ee6c0cc56304467061f9a60f3f96d07d741f327f Mon Sep 17 00:00:00 2001 From: Li Xiaoming Date: Mon, 26 Aug 2019 21:29:31 +0800 Subject: tsrecorder.c:Fix return value check of read() MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit If read() fails, it returns -1. It will generate unpredictable result when compare -1 and sizeof()'s size_t(unsigned) value. By the way, cast “ssize_t” to “size_t” to slience the warning. Bug-AGL:SPEC-2422 Change-Id: Ib56c1ebbcaaac48600a6747d5cc013c407dc14dd Signed-off-by: Li Xiaoming --- tsutils/tsrecorder/tsrecorder.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/tsutils/tsrecorder/tsrecorder.c b/tsutils/tsrecorder/tsrecorder.c index 9c2e466..82beccb 100644 --- a/tsutils/tsrecorder/tsrecorder.c +++ b/tsutils/tsrecorder/tsrecorder.c @@ -32,16 +32,20 @@ extern char* getTouchScreenInfo(); static int handle_event() { - int i, rd; + size_t i; + ssize_t rd; char str[256]; float x = 0, y = 0; rd = read(eventFd, ev0, sizeof(struct input_event)* 64); - if(rd < sizeof(struct input_event)) + if(rd < 0) + return -1; + + if((size_t)rd < sizeof(struct input_event)) return 0; - for(i=0;i