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.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;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user