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ö <martin@martin.st>
This commit is contained in:
parent
851ace79a3
commit
9dcf239721
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -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;
|
||||
}
|
||||
|
@ -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';
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user