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)