mirror of https://git.ffmpeg.org/ffmpeg.git
rtpenc_mpegts: Set chain->rtp_ctx only after avformat_write_header succeeded
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. Signed-off-by: Martin Storsjö <martin@martin.st>
This commit is contained in:
parent
c83dd2d2a4
commit
cf402d6fa8
|
@ -88,11 +88,10 @@ static int rtp_mpegts_write_header(AVFormatContext *s)
|
||||||
st->time_base.num = 1;
|
st->time_base.num = 1;
|
||||||
st->time_base.den = 90000;
|
st->time_base.den = 90000;
|
||||||
st->codec->codec_id = AV_CODEC_ID_MPEG2TS;
|
st->codec->codec_id = AV_CODEC_ID_MPEG2TS;
|
||||||
chain->rtp_ctx = rtp_ctx;
|
|
||||||
rtp_ctx->pb = s->pb;
|
rtp_ctx->pb = s->pb;
|
||||||
if ((ret = avformat_write_header(rtp_ctx, NULL)) < 0)
|
if ((ret = avformat_write_header(rtp_ctx, NULL)) < 0)
|
||||||
goto fail;
|
goto fail;
|
||||||
rtp_ctx = NULL;
|
chain->rtp_ctx = rtp_ctx;
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue