diff options
author | Li Xiaoming <lixm.fnst@cn.fujitsu.com> | 2019-08-26 21:29:31 +0800 |
---|---|---|
committer | Jan-Simon Moeller <jsmoeller@linuxfoundation.org> | 2019-08-28 14:51:39 +0000 |
commit | ee6c0cc56304467061f9a60f3f96d07d741f327f (patch) | |
tree | 0f0fc61742662bdb603cde448dd6e93db3c89788 | |
parent | 9423094e94babea121d39cdb66123ccac48a2c65 (diff) |
tsrecorder.c:Fix return value check of read()needlefish_13.93.0needlefish/13.93.0marlin_12.93.0marlin_12.92.0marlin_12.91.0marlin_12.90.1marlin_12.90.0marlin/12.93.0marlin/12.92.0marlin/12.91.0marlin/12.90.1marlin/12.90.0lamprey_11.92.0lamprey_11.91.0lamprey/11.92.0lamprey/11.91.0koi_10.93.0koi_10.92.0koi_10.91.0koi/10.93.0koi/10.92.0koi/10.91.0jellyfish_9.99.4jellyfish_9.99.3jellyfish_9.99.2jellyfish_9.99.1jellyfish/9.99.4jellyfish/9.99.3jellyfish/9.99.2jellyfish/9.99.1icefish_8.99.5icefish_8.99.4icefish_8.99.3icefish_8.99.2icefish_8.99.1icefish/8.99.5icefish/8.99.4icefish/8.99.3icefish/8.99.2icefish/8.99.19.99.49.99.39.99.29.99.18.99.58.99.48.99.38.99.28.99.113.93.012.93.012.92.012.91.012.90.112.90.011.92.011.91.010.93.010.92.010.91.0
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 <lixm.fnst@cn.fujitsu.com>
-rw-r--r-- | tsutils/tsrecorder/tsrecorder.c | 10 |
1 files 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<rd/sizeof(struct input_event); i++) + for(i = 0; i < ((size_t)rd) / sizeof(struct input_event); i++) { memset(str, 0, sizeof(str)); |