From dc5385806339f90b4eb074d9002205ebb4010cc2 Mon Sep 17 00:00:00 2001 From: Martin Storsjö Date: Sat, 23 Jun 2012 21:46:26 +0300 Subject: wtv: Check the return value from gmtime MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit On MSVC, gmtime returns NULL for values outside of their supported range (and these show up in our fate test). This doesn't seem to affect the actual fate test result. Signed-off-by: Martin Storsjö --- libavformat/wtv.c | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) (limited to 'libavformat/wtv.c') diff --git a/libavformat/wtv.c b/libavformat/wtv.c index 07549b2cc5..83f1bc17eb 100644 --- a/libavformat/wtv.c +++ b/libavformat/wtv.c @@ -443,7 +443,11 @@ static int read_probe(AVProbeData *p) static void filetime_to_iso8601(char *buf, int buf_size, int64_t value) { time_t t = (value / 10000000LL) - 11644473600LL; - strftime(buf, buf_size, "%Y-%m-%d %H:%M:%S", gmtime(&t)); + struct tm *tm = gmtime(&t); + if (tm) + strftime(buf, buf_size, "%Y-%m-%d %H:%M:%S", gmtime(&t)); + else + buf[0] = '\0'; } /** @@ -452,7 +456,11 @@ static void filetime_to_iso8601(char *buf, int buf_size, int64_t value) static void crazytime_to_iso8601(char *buf, int buf_size, int64_t value) { time_t t = (value / 10000000LL) - 719162LL*86400LL; - strftime(buf, buf_size, "%Y-%m-%d %H:%M:%S", gmtime(&t)); + struct tm *tm = gmtime(&t); + if (tm) + strftime(buf, buf_size, "%Y-%m-%d %H:%M:%S", gmtime(&t)); + else + buf[0] = '\0'; } /** @@ -461,7 +469,11 @@ static void crazytime_to_iso8601(char *buf, int buf_size, int64_t value) static void oledate_to_iso8601(char *buf, int buf_size, int64_t value) { time_t t = 631112400LL + 86400*av_int2double(value); - strftime(buf, buf_size, "%Y-%m-%d %H:%M:%S", gmtime(&t)); + struct tm *tm = gmtime(&t); + if (tm) + strftime(buf, buf_size, "%Y-%m-%d %H:%M:%S", gmtime(&t)); + else + buf[0] = '\0'; } static void get_attachment(AVFormatContext *s, AVIOContext *pb, int length) -- cgit v1.2.3