From: Satya Prakash Gupta Date: Tue, 11 Jul 2017 06:04:03 +0000 (+0530) Subject: avdemux/mux: Memory leak and possible crash in avio_alloc_context X-Git-Tag: 1.16.2~141 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=98cf1a7e2d27d84041bd4d9a9252d55c1252d010;p=platform%2Fupstream%2Fgst-libav.git avdemux/mux: Memory leak and possible crash in avio_alloc_context https://bugzilla.gnome.org/show_bug.cgi?id=784735 --- diff --git a/ext/libav/gstavprotocol.c b/ext/libav/gstavprotocol.c index 5d01eaa..d106f9b 100644 --- a/ext/libav/gstavprotocol.c +++ b/ext/libav/gstavprotocol.c @@ -205,6 +205,9 @@ gst_ffmpegdata_close (AVIOContext * h) { GstProtocolInfo *info; + if (h == NULL) + return 0; + info = (GstProtocolInfo *) h->opaque; if (info == NULL) return 0; @@ -265,6 +268,11 @@ gst_ffmpegdata_open (GstPad * pad, int flags, AVIOContext ** context) *context = avio_alloc_context (buffer, buffer_size, flags, (void *) info, gst_ffmpegdata_read, gst_ffmpegdata_write, gst_ffmpegdata_seek); + if (*context == NULL) { + GST_WARNING ("Failed to allocate memory"); + av_free (buffer); + return -ENOMEM; + } (*context)->seekable = AVIO_SEEKABLE_NORMAL; if (!(flags & AVIO_FLAG_WRITE)) { (*context)->buf_ptr = (*context)->buf_end; @@ -318,6 +326,9 @@ gst_ffmpeg_pipe_close (AVIOContext * h) { GST_LOG ("Closing pipe"); + if (h == NULL) + return 0; + h->opaque = NULL; av_freep (&h->buffer); av_free (h); @@ -343,6 +354,11 @@ gst_ffmpeg_pipe_open (GstFFMpegPipe * ffpipe, int flags, AVIOContext ** context) *context = avio_alloc_context (buffer, buffer_size, 0, (void *) ffpipe, gst_ffmpeg_pipe_read, NULL, NULL); + if (*context == NULL) { + GST_WARNING ("Failed to allocate memory"); + av_free (buffer); + return -ENOMEM; + } (*context)->seekable = 0; (*context)->buf_ptr = (*context)->buf_end;