Browse Source

segment: reorder seg_write_header allocation

As pointed by Paul B Mahol <onemda@gmail.com> the previous code could
lead to null pointer dereference.
tags/n0.11
Luca Barbato 13 years ago
parent
commit
3b52e9da10
1 changed files with 6 additions and 8 deletions
  1. +6
    -8
      libavformat/segment.c

+ 6
- 8
libavformat/segment.c View File

@@ -113,10 +113,15 @@ static int seg_write_header(AVFormatContext *s)
seg->offset_time = 0; seg->offset_time = 0;
seg->recording_time = seg->time * 1000000; seg->recording_time = seg->time * 1000000;


oc = avformat_alloc_context();

if (!oc)
return AVERROR(ENOMEM);

if (seg->list) if (seg->list)
if ((ret = avio_open2(&seg->pb, seg->list, AVIO_FLAG_WRITE, if ((ret = avio_open2(&seg->pb, seg->list, AVIO_FLAG_WRITE,
&s->interrupt_callback, NULL)) < 0) &s->interrupt_callback, NULL)) < 0)
return ret;
goto fail;


for (i = 0; i< s->nb_streams; i++) for (i = 0; i< s->nb_streams; i++)
seg->has_video += seg->has_video +=
@@ -127,13 +132,6 @@ static int seg_write_header(AVFormatContext *s)
"More than a single video stream present, " "More than a single video stream present, "
"expect issues decoding it.\n"); "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); oc->oformat = av_guess_format(seg->format, s->filename, NULL);


if (!oc->oformat) { if (!oc->oformat) {


Loading…
Cancel
Save