[FFmpeg-cvslog] mxfdec: Validate parameters to strftime
Martin Storsjö
git at videolan.org
Mon Mar 10 12:03:17 CET 2014
ffmpeg | branch: master | Martin Storsjö <martin at martin.st> | Sun Mar 9 22:44:10 2014 +0200| [8cafeb8bca5d079041739dbd72ccec0ead138eaf] | committer: Martin Storsjö
mxfdec: Validate parameters to strftime
The MSVCRT version of strftime calls the invalid parameter handler
if the struct values in struct tm are invalid. In case no invalid
parameter handler is set for the process, the process is aborted.
This fixes fate failures on MSVC builds since 570af382.
Based on a patch by Hendrik Leppkes.
Signed-off-by: Martin Storsjö <martin at martin.st>
> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=8cafeb8bca5d079041739dbd72ccec0ead138eaf
---
libavformat/mxfdec.c | 9 +++++++++
1 file changed, 9 insertions(+)
diff --git a/libavformat/mxfdec.c b/libavformat/mxfdec.c
index 27f996f..d6e2155 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);
More information about the ffmpeg-cvslog
mailing list