diff options
author | Gerald Combs <gerald@wireshark.org> | 2020-07-13 12:20:58 -0700 |
---|---|---|
committer | Anders Broman <a.broman58@gmail.com> | 2020-07-14 04:02:35 +0000 |
commit | 4a4c8bdfeafba4833bdcb99fc1617e19fc65e950 (patch) | |
tree | 88df7c74d12165915982f536dad15dfdd437277b /wiretap | |
parent | 73f24f5ad8dcd207c3ebcbd848ba2303d1a6f977 (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.c | 9 |
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; /* |