From 732aa600986ef007568e917ffaf552dce7ce05f5 Mon Sep 17 00:00:00 2001 From: Jakub Adam Date: Wed, 22 Jan 2020 12:57:24 +0100 Subject: [PATCH] proto: fix get_time_value() for ENC_TIME_CLASSIC_MAC_OS_SECS Times before 1970-01-01 should be represented as a negative number of seconds in nstime_t. e.g. MP4 creation_time of 0x00000000 (which appears frequently as the default in mp4 files) was rendered as Feb 6, 2040 07:28:16 CET Change-Id: I979aeeb8a625caad3dfbce114cff6f9967d59d6e Reviewed-on: https://code.wireshark.org/review/35904 Petri-Dish: Alexis La Goutte Tested-by: Petri Dish Buildbot Reviewed-by: Anders Broman --- epan/proto.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/epan/proto.c b/epan/proto.c index 1a6bfeac4b..f3675c9a38 100644 --- a/epan/proto.c +++ b/epan/proto.c @@ -2354,11 +2354,11 @@ get_time_value(proto_tree *tree, tvbuff_t *tvb, const gint start, if (length == 8) { tmp64secs = tvb_get_ntoh64(tvb, start); - time_stamp->secs = (time_t)(tmp64secs - EPOCH_DELTA_1904_01_01_00_00_00_UTC); + time_stamp->secs = (time_t)(gint64)(tmp64secs - EPOCH_DELTA_1904_01_01_00_00_00_UTC); time_stamp->nsecs = 0; } else if (length == 4) { tmpsecs = tvb_get_ntohl(tvb, start); - time_stamp->secs = (time_t)(tmpsecs - EPOCH_DELTA_1904_01_01_00_00_00_UTC); + time_stamp->secs = (time_t)(gint32)(tmpsecs - EPOCH_DELTA_1904_01_01_00_00_00_UTC); time_stamp->nsecs = 0; } else { time_stamp->secs = 0;