diff options
author | Guy Harris <guy@alum.mit.edu> | 2016-10-21 19:18:15 -0700 |
---|---|---|
committer | Guy Harris <guy@alum.mit.edu> | 2016-10-22 02:27:32 +0000 |
commit | 10ca4c7527122efde0300205deaa6c0143f07219 (patch) | |
tree | 5352128043afff3b586c4a314ab2d240aec36f6a /ui/cli | |
parent | 49cf42c571f3f94632957371ccd99533e71764ff (diff) | |
download | wireshark-10ca4c7527122efde0300205deaa6c0143f07219.tar.gz |
More checks for localtime() and gmtime() returning NULL.
And some comments in the case where we're converting the result of
time() - if your machine's idea of time predates January 1, 1970,
00:00:00 UTC, it'll crash on Windows, but that's not a case where a
*file* can cause the problem due either to a bad file time stamp or bad
time stamps in the file.
Change-Id: I837a438e4b875dd8c4f3ec2137df7a16ee4e9498
Reviewed-on: https://code.wireshark.org/review/18369
Reviewed-by: Guy Harris <guy@alum.mit.edu>
Diffstat (limited to 'ui/cli')
-rw-r--r-- | ui/cli/tap-iostat.c | 86 | ||||
-rw-r--r-- | ui/cli/tap-iousers.c | 100 |
2 files changed, 108 insertions, 78 deletions
diff --git a/ui/cli/tap-iostat.c b/ui/cli/tap-iostat.c index c23eb63bcb..1ff9b38b00 100644 --- a/ui/cli/tap-iostat.c +++ b/ui/cli/tap-iostat.c @@ -1013,60 +1013,78 @@ iostat_draw(void *arg) switch (timestamp_get_type()) { case TS_ABSOLUTE: tm_time = localtime(&the_time); - printf("| %02d:%02d:%02d |", - tm_time->tm_hour, - tm_time->tm_min, - tm_time->tm_sec); + if (tm_time != NULL) { + printf("| %02d:%02d:%02d |", + tm_time->tm_hour, + tm_time->tm_min, + tm_time->tm_sec); + } else + printf("| XX:XX:XX |"); break; case TS_ABSOLUTE_WITH_YMD: tm_time = localtime(&the_time); - printf("| %04d-%02d-%02d %02d:%02d:%02d |", - tm_time->tm_year + 1900, - tm_time->tm_mon + 1, - tm_time->tm_mday, - tm_time->tm_hour, - tm_time->tm_min, - tm_time->tm_sec); + if (tm_time != NULL) { + printf("| %04d-%02d-%02d %02d:%02d:%02d |", + tm_time->tm_year + 1900, + tm_time->tm_mon + 1, + tm_time->tm_mday, + tm_time->tm_hour, + tm_time->tm_min, + tm_time->tm_sec); + } else + printf("| XXXX-XX-XX XX:XX:XX |"); break; case TS_ABSOLUTE_WITH_YDOY: tm_time = localtime(&the_time); - printf("| %04d/%03d %02d:%02d:%02d |", - tm_time->tm_year + 1900, - tm_time->tm_yday + 1, - tm_time->tm_hour, - tm_time->tm_min, - tm_time->tm_sec); + if (tm_time != NULL) { + printf("| %04d/%03d %02d:%02d:%02d |", + tm_time->tm_year + 1900, + tm_time->tm_yday + 1, + tm_time->tm_hour, + tm_time->tm_min, + tm_time->tm_sec); + } else + printf("| XXXX/XXX XX:XX:XX |"); break; case TS_UTC: tm_time = gmtime(&the_time); - printf("| %02d:%02d:%02d |", - tm_time->tm_hour, - tm_time->tm_min, - tm_time->tm_sec); + if (tm_time != NULL) { + printf("| %02d:%02d:%02d |", + tm_time->tm_hour, + tm_time->tm_min, + tm_time->tm_sec); + } else + printf("| XX:XX:XX |"); break; case TS_UTC_WITH_YMD: tm_time = gmtime(&the_time); - printf("| %04d-%02d-%02d %02d:%02d:%02d |", - tm_time->tm_year + 1900, - tm_time->tm_mon + 1, - tm_time->tm_mday, - tm_time->tm_hour, - tm_time->tm_min, - tm_time->tm_sec); + if (tm_time != NULL) { + printf("| %04d-%02d-%02d %02d:%02d:%02d |", + tm_time->tm_year + 1900, + tm_time->tm_mon + 1, + tm_time->tm_mday, + tm_time->tm_hour, + tm_time->tm_min, + tm_time->tm_sec); + } else + printf("| XXXX-XX-XX XX:XX:XX |"); break; case TS_UTC_WITH_YDOY: tm_time = gmtime(&the_time); - printf("| %04d/%03d %02d:%02d:%02d |", - tm_time->tm_year + 1900, - tm_time->tm_yday + 1, - tm_time->tm_hour, - tm_time->tm_min, - tm_time->tm_sec); + if (tm_time != NULL) { + printf("| %04d/%03d %02d:%02d:%02d |", + tm_time->tm_year + 1900, + tm_time->tm_yday + 1, + tm_time->tm_hour, + tm_time->tm_min, + tm_time->tm_sec); + } else + printf("| XXXX/XXX XX:XX:XX |"); break; case TS_RELATIVE: diff --git a/ui/cli/tap-iousers.c b/ui/cli/tap-iousers.c index 06f02697ac..129b56e580 100644 --- a/ui/cli/tap-iousers.c +++ b/ui/cli/tap-iousers.c @@ -140,71 +140,83 @@ iousers_draw(void *arg) switch (timestamp_get_type()) { case TS_ABSOLUTE: tm_time = localtime(&iui->start_abs_time.secs); - printf("%02d:%02d:%02d %12.4f\n", - tm_time->tm_hour, - tm_time->tm_min, - tm_time->tm_sec, - nstime_to_sec(&iui->stop_time) - nstime_to_sec(&iui->start_time)); + if (tm_time != NULL) { + printf("%02d:%02d:%02d", + tm_time->tm_hour, + tm_time->tm_min, + tm_time->tm_sec); + } else + printf("XX:XX:XX"); break; case TS_ABSOLUTE_WITH_YMD: tm_time = localtime(&iui->start_abs_time.secs); - printf("%04d-%02d-%02d %02d:%02d:%02d %12.4f\n", - tm_time->tm_year + 1900, - tm_time->tm_mon + 1, - tm_time->tm_mday, - tm_time->tm_hour, - tm_time->tm_min, - tm_time->tm_sec, - nstime_to_sec(&iui->stop_time) - nstime_to_sec(&iui->start_time)); + if (tm_time != NULL) { + printf("%04d-%02d-%02d %02d:%02d:%02d", + tm_time->tm_year + 1900, + tm_time->tm_mon + 1, + tm_time->tm_mday, + tm_time->tm_hour, + tm_time->tm_min, + tm_time->tm_sec); + } else + printf("XXXX-XX-XX XX:XX:XX"); break; case TS_ABSOLUTE_WITH_YDOY: tm_time = localtime(&iui->start_abs_time.secs); - printf("%04d/%03d %02d:%02d:%02d %12.4f\n", - tm_time->tm_year + 1900, - tm_time->tm_yday + 1, - tm_time->tm_hour, - tm_time->tm_min, - tm_time->tm_sec, - nstime_to_sec(&iui->stop_time) - nstime_to_sec(&iui->start_time)); + if (tm_time != NULL) { + printf("%04d/%03d %02d:%02d:%02d", + tm_time->tm_year + 1900, + tm_time->tm_yday + 1, + tm_time->tm_hour, + tm_time->tm_min, + tm_time->tm_sec); + } else + printf("XXXX/XXX XX:XX:XX"); break; case TS_UTC: tm_time = gmtime(&iui->start_abs_time.secs); - printf("%02d:%02d:%02d %12.4f\n", - tm_time->tm_hour, - tm_time->tm_min, - tm_time->tm_sec, - nstime_to_sec(&iui->stop_time) - nstime_to_sec(&iui->start_time)); + if (tm_time != NULL) { + printf("%02d:%02d:%02d", + tm_time->tm_hour, + tm_time->tm_min, + tm_time->tm_sec); + } else + printf("XX:XX:XX"); break; case TS_UTC_WITH_YMD: tm_time = gmtime(&iui->start_abs_time.secs); - printf("%04d-%02d-%02d %02d:%02d:%02d %12.4f\n", - tm_time->tm_year + 1900, - tm_time->tm_mon + 1, - tm_time->tm_mday, - tm_time->tm_hour, - tm_time->tm_min, - tm_time->tm_sec, - nstime_to_sec(&iui->stop_time) - nstime_to_sec(&iui->start_time)); + if (tm_time != NULL) { + printf("%04d-%02d-%02d %02d:%02d:%02d", + tm_time->tm_year + 1900, + tm_time->tm_mon + 1, + tm_time->tm_mday, + tm_time->tm_hour, + tm_time->tm_min, + tm_time->tm_sec); + } else + printf("XXXX-XX-XX XX:XX:XX"); break; case TS_UTC_WITH_YDOY: tm_time = gmtime(&iui->start_abs_time.secs); - printf("%04d/%03d %02d:%02d:%02d %12.4f\n", - tm_time->tm_year + 1900, - tm_time->tm_yday + 1, - tm_time->tm_hour, - tm_time->tm_min, - tm_time->tm_sec, - nstime_to_sec(&iui->stop_time) - nstime_to_sec(&iui->start_time)); + if (tm_time != NULL) { + printf("%04d/%03d %02d:%02d:%02d", + tm_time->tm_year + 1900, + tm_time->tm_yday + 1, + tm_time->tm_hour, + tm_time->tm_min, + tm_time->tm_sec); + } else + printf("XXXX/XXX XX:XX:XX"); break; case TS_RELATIVE: case TS_NOT_SET: default: - printf("%14.9f %12.4f\n", - nstime_to_sec(&iui->start_time), - nstime_to_sec(&iui->stop_time) - nstime_to_sec(&iui->start_time) - ); + printf("%14.9f", + nstime_to_sec(&iui->start_time)); break; } + printf(" %12.4f\n", + nstime_to_sec(&iui->stop_time) - nstime_to_sec(&iui->start_time)); } } max_frames = last_frames; |