diff options
author | Vignesh Venkatasubramanian <vigneshv@google.com> | 2015-05-14 10:32:24 -0700 |
---|---|---|
committer | Michael Niedermayer <michaelni@gmx.at> | 2015-05-15 00:56:43 +0200 |
commit | b5508f74b9cd5ce6f22b6581501b7557bfbc4bd4 (patch) | |
tree | be61bf6ddbfd66169de2fef4e0b0d51206b6b8e9 /libavformat/webmdashenc.c | |
parent | 47cbcf20d6f2e37293a059ff6ac300f86c4c346f (diff) | |
download | ffmpeg-b5508f74b9cd5ce6f22b6581501b7557bfbc4bd4.tar.gz |
lavf/webmdashenc: fix unchecked strftime
Fix unchecked strftime return value. This patch fixes Coverity
CID 1295086.
Signed-off-by: Vignesh Venkatasubramanian <vigneshv@google.com>
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
Diffstat (limited to 'libavformat/webmdashenc.c')
-rw-r--r-- | libavformat/webmdashenc.c | 22 |
1 files changed, 14 insertions, 8 deletions
diff --git a/libavformat/webmdashenc.c b/libavformat/webmdashenc.c index 17df1b6a64..76ea4237e2 100644 --- a/libavformat/webmdashenc.c +++ b/libavformat/webmdashenc.c @@ -88,7 +88,7 @@ static double get_duration(AVFormatContext *s) return max / 1000; } -static void write_header(AVFormatContext *s) +static int write_header(AVFormatContext *s) { WebMDashMuxContext *w = s->priv_data; double min_buffer_time = 1.0; @@ -111,7 +111,9 @@ static void write_header(AVFormatContext *s) struct tm gmt_buffer; struct tm *gmt = gmtime_r(&local_time, &gmt_buffer); char gmt_iso[21]; - strftime(gmt_iso, 21, "%Y-%m-%dT%H:%M:%SZ", gmt); + if (!strftime(gmt_iso, 21, "%Y-%m-%dT%H:%M:%SZ", gmt)) { + return AVERROR_UNKNOWN; + } if (w->debug_mode) { av_strlcpy(gmt_iso, "", 1); } @@ -125,6 +127,7 @@ static void write_header(AVFormatContext *s) avio_printf(s->pb, " value=\"%s\"/>\n", w->utc_timing_url); } } + return 0; } static void write_footer(AVFormatContext *s) @@ -474,10 +477,12 @@ static int webm_dash_manifest_write_header(AVFormatContext *s) WebMDashMuxContext *w = s->priv_data; ret = parse_adaptation_sets(s); if (ret < 0) { - free_adaptation_sets(s); - return ret; + goto fail; + } + ret = write_header(s); + if (ret < 0) { + goto fail; } - write_header(s); avio_printf(s->pb, "<Period id=\"0\""); avio_printf(s->pb, " start=\"PT%gS\"", start); if (!w->is_live) { @@ -488,14 +493,15 @@ static int webm_dash_manifest_write_header(AVFormatContext *s) for (i = 0; i < w->nb_as; i++) { ret = write_adaptation_set(s, i); if (ret < 0) { - free_adaptation_sets(s); - return ret; + goto fail; } } avio_printf(s->pb, "</Period>\n"); write_footer(s); - return 0; +fail: + free_adaptation_sets(s); + return ret < 0 ? ret : 0; } static int webm_dash_manifest_write_packet(AVFormatContext *s, AVPacket *pkt) |