From 6a049dd755a5c2c4c20669c8b4c9895d63ea2c15 Mon Sep 17 00:00:00 2001 From: Guy Harris Date: Mon, 17 Apr 2017 22:54:04 -0700 Subject: Check the result of localtime(). Unlikely to fail, but it squelches CID 1398219. Change-Id: Ibdabd2d71bdc2c09549f27f1ffe528005383ee3e Reviewed-on: https://code.wireshark.org/review/21178 Reviewed-by: Guy Harris --- ringbuffer.c | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) (limited to 'ringbuffer.c') diff --git a/ringbuffer.c b/ringbuffer.c index 099e8c4783..0ba365c25f 100644 --- a/ringbuffer.c +++ b/ringbuffer.c @@ -87,6 +87,7 @@ static int ringbuf_open_file(rb_file *rfile, int *err) char filenum[5+1]; char timestr[14+1]; time_t current_time; + struct tm *tm; if (rfile->name != NULL) { if (rb_data.unlimited == FALSE) { @@ -102,13 +103,11 @@ static int ringbuf_open_file(rb_file *rfile, int *err) current_time = time(NULL); g_snprintf(filenum, sizeof(filenum), "%05u", (rb_data.curr_file_num + 1) % RINGBUFFER_MAX_NUM_FILES); - /* - * XXX - We trust Windows not to return a time before the Epoch, so - * localtime() doesn't return a null pointer. localtime() can probably - * handle pre-Epoch times on most UN*X systems, and we trust them not - * to return a time before the Epoch in any case. - */ - strftime(timestr, sizeof(timestr), "%Y%m%d%H%M%S", localtime(¤t_time)); + tm = localtime(¤t_time); + if (tm != NULL) + strftime(timestr, sizeof(timestr), "%Y%m%d%H%M%S", tm); + else + g_strlcpy(timestr, "196912312359", sizeof(timestr)); /* second before the Epoch */ rfile->name = g_strconcat(rb_data.fprefix, "_", filenum, "_", timestr, rb_data.fsuffix, NULL); -- cgit v1.2.1