Module: libav Branch: master Commit: 9dcf2397219ca796f0fafce2a703770d6fd09920
Author: Martin Storsjö <[email protected]> Committer: Martin Storsjö <[email protected]> Date: Fri Oct 24 10:43:20 2014 +0300 lavf: Check the return value of strftime 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ö <[email protected]> --- libavformat/mov.c | 4 ++-- libavformat/mxfdec.c | 3 ++- libavformat/wtv.c | 21 ++++++++++++--------- 3 files changed, 16 insertions(+), 12 deletions(-) diff --git a/libavformat/mov.c b/libavformat/mov.c index efc9314..a5b39f2 100644 --- a/libavformat/mov.c +++ b/libavformat/mov.c @@ -743,8 +743,8 @@ static void mov_metadata_creation_time(AVDictionary **metadata, time_t time) time -= 2082844800; /* seconds between 1904-01-01 and Epoch */ ptm = gmtime(&time); if (!ptm) return; - strftime(buffer, sizeof(buffer), "%Y-%m-%d %H:%M:%S", ptm); - av_dict_set(metadata, "creation_time", buffer, 0); + if (strftime(buffer, sizeof(buffer), "%Y-%m-%d %H:%M:%S", ptm)) + av_dict_set(metadata, "creation_time", buffer, 0); } } diff --git a/libavformat/mxfdec.c b/libavformat/mxfdec.c index 9aedd47..ff88f91 100644 --- a/libavformat/mxfdec.c +++ b/libavformat/mxfdec.c @@ -1735,7 +1735,8 @@ static int mxf_timestamp_to_str(uint64_t timestamp, char **str) *str = av_mallocz(32); if (!*str) return AVERROR(ENOMEM); - strftime(*str, 32, "%Y-%m-%d %H:%M:%S", &time); + if (!strftime(*str, 32, "%Y-%m-%d %H:%M:%S", &time)) + str[0] = '\0'; return 0; } diff --git a/libavformat/wtv.c b/libavformat/wtv.c index fa864e8..90984cf 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'; } _______________________________________________ libav-commits mailing list [email protected] https://lists.libav.org/mailman/listinfo/libav-commits
