summaryrefslogtreecommitdiff
path: root/libavformat/segment.c
diff options
context:
space:
mode:
authorLuca Barbato <lu_zero@gentoo.org>2012-04-27 11:09:30 -0700
committerLuca Barbato <lu_zero@gentoo.org>2012-04-27 14:03:43 -0700
commit3b52e9da10158029edbd01bafe2235e653e6eaec (patch)
tree2cbd8fa69ff315fb5ba15ae6ebe350b43fa88fa5 /libavformat/segment.c
parente1e146a2d139bbc7e10b6ade68bf99abf285d6ad (diff)
segment: reorder seg_write_header allocation
As pointed by Paul B Mahol <onemda@gmail.com> the previous code could lead to null pointer dereference.
Diffstat (limited to 'libavformat/segment.c')
-rw-r--r--libavformat/segment.c14
1 files changed, 6 insertions, 8 deletions
diff --git a/libavformat/segment.c b/libavformat/segment.c
index 1af412ad53..8274792bf3 100644
--- a/libavformat/segment.c
+++ b/libavformat/segment.c
@@ -113,10 +113,15 @@ static int seg_write_header(AVFormatContext *s)
seg->offset_time = 0;
seg->recording_time = seg->time * 1000000;
+ oc = avformat_alloc_context();
+
+ if (!oc)
+ return AVERROR(ENOMEM);
+
if (seg->list)
if ((ret = avio_open2(&seg->pb, seg->list, AVIO_FLAG_WRITE,
&s->interrupt_callback, NULL)) < 0)
- return ret;
+ goto fail;
for (i = 0; i< s->nb_streams; i++)
seg->has_video +=
@@ -127,13 +132,6 @@ static int seg_write_header(AVFormatContext *s)
"More than a single video stream present, "
"expect issues decoding it.\n");
- oc = avformat_alloc_context();
-
- if (!oc) {
- ret = AVERROR(ENOMEM);
- goto fail;
- }
-
oc->oformat = av_guess_format(seg->format, s->filename, NULL);
if (!oc->oformat) {