diff options
author | Michael Niedermayer <michaelni@gmx.at> | 2014-02-04 16:01:02 +0100 |
---|---|---|
committer | Michael Niedermayer <michaelni@gmx.at> | 2014-02-04 16:01:02 +0100 |
commit | c18cfd1001e012135211630612be6079ba627ace (patch) | |
tree | 3e90e627da312490f1acfb0803072260c9dbf5a5 /ffserver.c | |
parent | 073e771c9c5330216bdb3def5bd3ab671930b27f (diff) | |
download | ffmpeg-c18cfd1001e012135211630612be6079ba627ace.tar.gz |
ffserver: use avformat_alloc_context()
Fixes null pointer dereference
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
Diffstat (limited to 'ffserver.c')
-rw-r--r-- | ffserver.c | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/ffserver.c b/ffserver.c index e3053d5eff..61e0d1180d 100644 --- a/ffserver.c +++ b/ffserver.c @@ -2275,7 +2275,9 @@ static int http_prepare_data(HTTPContext *c) av_freep(&c->pb_buffer); switch(c->state) { case HTTPSTATE_SEND_DATA_HEADER: - memset(&c->fmt_ctx, 0, sizeof(c->fmt_ctx)); + ctx = avformat_alloc_context(); + c->fmt_ctx = *ctx; + av_freep(&ctx); av_dict_copy(&(c->fmt_ctx.metadata), c->stream->metadata, 0); c->fmt_ctx.streams = av_mallocz(sizeof(AVStream *) * c->stream->nb_streams); @@ -3818,7 +3820,7 @@ static void build_feed_streams(void) } } if (avio_check(feed->feed_filename, AVIO_FLAG_WRITE) <= 0) { - AVFormatContext s1 = {0}, *s = &s1; + AVFormatContext *s = avformat_alloc_context(); if (feed->readonly) { http_log("Unable to create feed file '%s' as it is marked readonly\n", @@ -3842,6 +3844,9 @@ static void build_feed_streams(void) /* XXX: need better api */ av_freep(&s->priv_data); avio_close(s->pb); + s->streams = NULL; + s->nb_streams = 0; + avformat_free_context(s); } /* get feed size and write index */ fd = open(feed->feed_filename, O_RDONLY); |