summaryrefslogtreecommitdiff
path: root/libavformat/mxfdec.c
diff options
context:
space:
mode:
Diffstat (limited to 'libavformat/mxfdec.c')
-rw-r--r--libavformat/mxfdec.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/libavformat/mxfdec.c b/libavformat/mxfdec.c
index 27f996fa82..d6e2155887 100644
--- a/libavformat/mxfdec.c
+++ b/libavformat/mxfdec.c
@@ -1669,6 +1669,15 @@ static int mxf_timestamp_to_str(uint64_t timestamp, char **str)
time.tm_min = (timestamp >> 16 & 0xFF);
time.tm_sec = (timestamp >> 8 & 0xFF);
+ /* msvcrt versions of strftime calls the invalid parameter handler
+ * (aborting the process if one isn't set) if the parameters are out
+ * of range. */
+ time.tm_mon = av_clip(time.tm_mon, 0, 11);
+ time.tm_mday = av_clip(time.tm_mday, 1, 31);
+ time.tm_hour = av_clip(time.tm_hour, 0, 23);
+ time.tm_min = av_clip(time.tm_min, 0, 59);
+ time.tm_sec = av_clip(time.tm_sec, 0, 59);
+
*str = av_mallocz(32);
if (!*str)
return AVERROR(ENOMEM);