On 09.03.2015 22:15, Martin Storsjö wrote:
By making sure we at each time only have one pointer set, either a
local variable or one in the context, we avoid potential double frees
in the cleanup routines. If chain->rtp_ctx is set, it is closed by
calling avformat_write_trailer, but that shouldn't be called unless
avformat_write_header succeeded.

This issue was pointed out by Andreas Cadhalpun.
---
Andreas, does this seem to fix the issue for you as well?

Yes, it does.

---
  libavformat/rtpenc_mpegts.c | 3 +--
  1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/libavformat/rtpenc_mpegts.c b/libavformat/rtpenc_mpegts.c
index 8ced6a9..585d1ad 100644
--- a/libavformat/rtpenc_mpegts.c
+++ b/libavformat/rtpenc_mpegts.c
@@ -88,11 +88,10 @@ static int rtp_mpegts_write_header(AVFormatContext *s)
      st->time_base.num   = 1;
      st->time_base.den   = 90000;
      st->codec->codec_id = AV_CODEC_ID_MPEG2TS;
-    chain->rtp_ctx = rtp_ctx;
      rtp_ctx->pb = s->pb;
      if ((ret = avformat_write_header(rtp_ctx, NULL)) < 0)
          goto fail;
-    rtp_ctx = NULL;
+    chain->rtp_ctx = rtp_ctx;

      return 0;



This looks like the proper fix.

Best regards,
Andreas
_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel

Reply via email to