summaryrefslogtreecommitdiff
path: root/ui/cli
diff options
context:
space:
mode:
authorGuy Harris <guy@alum.mit.edu>2016-10-21 19:18:15 -0700
committerGuy Harris <guy@alum.mit.edu>2016-10-22 02:27:32 +0000
commit10ca4c7527122efde0300205deaa6c0143f07219 (patch)
tree5352128043afff3b586c4a314ab2d240aec36f6a /ui/cli
parent49cf42c571f3f94632957371ccd99533e71764ff (diff)
downloadwireshark-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.c86
-rw-r--r--ui/cli/tap-iousers.c100
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;