aboutsummaryrefslogtreecommitdiffstats
path: root/wiretap
diff options
context:
space:
mode:
authorGerald Combs <gerald@wireshark.org>2020-07-13 12:20:58 -0700
committerAnders Broman <a.broman58@gmail.com>2020-07-14 04:02:35 +0000
commit4a4c8bdfeafba4833bdcb99fc1617e19fc65e950 (patch)
tree88df7c74d12165915982f536dad15dfdd437277b /wiretap
parent73f24f5ad8dcd207c3ebcbd848ba2303d1a6f977 (diff)
Systemd journal: Fix timestamp conversions.
Use ws_strtou64 to convert __REALTIME_TIMESTAMP= and other timestamps, which should work across platforms. Bug: 16664 Change-Id: I371f2b60e1957e57dbbdbbc3ded5ad49e8eb79d1 Reviewed-on: https://code.wireshark.org/review/37849 Reviewed-by: Gerald Combs <gerald@wireshark.org> Petri-Dish: Gerald Combs <gerald@wireshark.org> Tested-by: Petri Dish Buildbot Reviewed-by: Anders Broman <a.broman58@gmail.com>
Diffstat (limited to 'wiretap')
-rw-r--r--wiretap/pcapng.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/wiretap/pcapng.c b/wiretap/pcapng.c
index b89ef4658b..45e83a970c 100644
--- a/wiretap/pcapng.c
+++ b/wiretap/pcapng.c
@@ -22,6 +22,7 @@
#include <errno.h>
#include <wsutil/ws_printf.h>
+#include <wsutil/strtoi.h>
#include "wtap-int.h"
#include "file_wrappers.h"
@@ -2509,8 +2510,10 @@ pcapng_read_systemd_journal_export_block(wtap *wth, FILE_T fh, pcapng_block_head
}
errno = 0;
- rt_ts = strtoul(ts_pos+rt_ts_len, NULL, 10);
- if (errno) {
+ const char *ts_end;
+ gboolean ok = ws_strtou64(ts_pos+rt_ts_len, &ts_end, &rt_ts);
+
+ if (!ok) {
*err = WTAP_ERR_BAD_FILE;
*err_info = g_strdup_printf("%s: invalid timestamp", G_STRFUNC);
return FALSE;
@@ -2522,7 +2525,7 @@ pcapng_read_systemd_journal_export_block(wtap *wth, FILE_T fh, pcapng_block_head
wblock->rec->presence_flags = WTAP_HAS_TS|WTAP_HAS_CAP_LEN;
wblock->rec->tsprec = WTAP_TSPREC_USEC;
- wblock->rec->ts.secs = (time_t) rt_ts / 1000000;
+ wblock->rec->ts.secs = (time_t) (rt_ts / 1000000);
wblock->rec->ts.nsecs = (rt_ts % 1000000) * 1000;
/*