summaryrefslogtreecommitdiff
path: root/libavformat/webmdashenc.c
diff options
context:
space:
mode:
authorVignesh Venkatasubramanian <vigneshv@google.com>2015-05-14 10:32:24 -0700
committerMichael Niedermayer <michaelni@gmx.at>2015-05-15 00:56:43 +0200
commitb5508f74b9cd5ce6f22b6581501b7557bfbc4bd4 (patch)
treebe61bf6ddbfd66169de2fef4e0b0d51206b6b8e9 /libavformat/webmdashenc.c
parent47cbcf20d6f2e37293a059ff6ac300f86c4c346f (diff)
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.c22
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)