aboutsummaryrefslogtreecommitdiffstats
path: root/extcap
diff options
context:
space:
mode:
authorDario Lombardo <lomato@gmail.com>2017-07-21 00:22:47 +0200
committerMichael Mann <mmann78@netscape.net>2017-07-21 12:41:52 +0000
commit3e9b25623877afb9854b2f3cae84e47ffb52c9a8 (patch)
treef8a80ddcf251e3451eb8d7c05b013b0fcb41285b /extcap
parent9ea364c389fc92bcd8efc800c9b8e852958c169a (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.c14
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);
}