From 9dcf2397219ca796f0fafce2a703770d6fd09920 Mon Sep 17 00:00:00 2001 From: Martin Storsjö Date: Fri, 24 Oct 2014 10:43:20 +0300 Subject: lavf: Check the return value of strftime MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit If the buffer provided to strftime is too small, the buffer contents are indeterminate - it does not guarantee actually null terminating the buffer. Signed-off-by: Martin Storsjö --- libavformat/wtv.c | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) (limited to 'libavformat/wtv.c') diff --git a/libavformat/wtv.c b/libavformat/wtv.c index fa864e840a..90984cfda0 100644 --- a/libavformat/wtv.c +++ b/libavformat/wtv.c @@ -429,9 +429,10 @@ static void filetime_to_iso8601(char *buf, int buf_size, int64_t value) { time_t t = (value / 10000000LL) - 11644473600LL; struct tm *tm = gmtime(&t); - if (tm) - strftime(buf, buf_size, "%Y-%m-%d %H:%M:%S", tm); - else + if (tm) { + if (!strftime(buf, buf_size, "%Y-%m-%d %H:%M:%S", tm)) + buf[0] = '\0'; + } else buf[0] = '\0'; } @@ -442,9 +443,10 @@ static void crazytime_to_iso8601(char *buf, int buf_size, int64_t value) { time_t t = (value / 10000000LL) - 719162LL*86400LL; struct tm *tm = gmtime(&t); - if (tm) - strftime(buf, buf_size, "%Y-%m-%d %H:%M:%S", tm); - else + if (tm) { + if (!strftime(buf, buf_size, "%Y-%m-%d %H:%M:%S", tm)) + buf[0] = '\0'; + } else buf[0] = '\0'; } @@ -455,9 +457,10 @@ static void oledate_to_iso8601(char *buf, int buf_size, int64_t value) { time_t t = 631112400LL + 86400*av_int2double(value); struct tm *tm = gmtime(&t); - if (tm) - strftime(buf, buf_size, "%Y-%m-%d %H:%M:%S", tm); - else + if (tm) { + if (!strftime(buf, buf_size, "%Y-%m-%d %H:%M:%S", tm)) + buf[0] = '\0'; + } else buf[0] = '\0'; } -- cgit v1.2.3