diff options
author | Dario Lombardo <lomato@gmail.com> | 2017-07-21 00:22:47 +0200 |
---|---|---|
committer | Michael Mann <mmann78@netscape.net> | 2017-07-21 12:41:52 +0000 |
commit | 3e9b25623877afb9854b2f3cae84e47ffb52c9a8 (patch) | |
tree | f8a80ddcf251e3451eb8d7c05b013b0fcb41285b /extcap | |
parent | 9ea364c389fc92bcd8efc800c9b8e852958c169a (diff) |
androiddump: check return value of localtime() before dereference (CID 1400829).
Change-Id: I03c851e56f5bd967a35c668bcbc4e98170251b2c
Reviewed-on: https://code.wireshark.org/review/22750
Petri-Dish: Dario Lombardo <lomato@gmail.com>
Tested-by: Petri Dish Buildbot <buildbot-no-reply@wireshark.org>
Reviewed-by: Michael Mann <mmann78@netscape.net>
Diffstat (limited to 'extcap')
-rw-r--r-- | extcap/androiddump.c | 14 |
1 files changed, 8 insertions, 6 deletions
diff --git a/extcap/androiddump.c b/extcap/androiddump.c index 1076b89e46..168df1d95d 100644 --- a/extcap/androiddump.c +++ b/extcap/androiddump.c @@ -2091,7 +2091,7 @@ static int capture_android_logcat_text(char *interface, char *fifo, while (used_buffer_length > 0 && (pos = (char *) memchr(packet + exported_pdu_headers_size, '\n', used_buffer_length))) { int ms; - struct tm date; + struct tm* date; time_t seconds; time_t secs = 0; int nsecs = 0; @@ -2100,11 +2100,13 @@ static int capture_android_logcat_text(char *interface, char *fifo, length = (gssize)(pos - packet) + 1; t = time(NULL); - date = *localtime(&t); - if (6 == sscanf(packet + exported_pdu_headers_size, "%d-%d %d:%d:%d.%d", &date.tm_mon, &date.tm_mday, &date.tm_hour, - &date.tm_min, &date.tm_sec, &ms)) { - date.tm_mon -= 1; - seconds = mktime(&date); + date = localtime(&t); + if (!date) + continue; + if (6 == sscanf(packet + exported_pdu_headers_size, "%d-%d %d:%d:%d.%d", &date->tm_mon, &date->tm_mday, &date->tm_hour, + &date->tm_min, &date->tm_sec, &ms)) { + date->tm_mon -= 1; + seconds = mktime(date); secs = (time_t) seconds; nsecs = (int) (ms * 1e6); } |