diff options
author | Luca Barbato <lu_zero@gentoo.org> | 2012-04-27 11:09:30 -0700 |
---|---|---|
committer | Luca Barbato <lu_zero@gentoo.org> | 2012-04-27 14:03:43 -0700 |
commit | 3b52e9da10158029edbd01bafe2235e653e6eaec (patch) | |
tree | 2cbd8fa69ff315fb5ba15ae6ebe350b43fa88fa5 /libavformat/segment.c | |
parent | e1e146a2d139bbc7e10b6ade68bf99abf285d6ad (diff) | |
download | ffmpeg-3b52e9da10158029edbd01bafe2235e653e6eaec.tar.gz |
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.c | 14 |
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) { |