You've already forked FFmpeg
							
							
				mirror of
				https://github.com/FFmpeg/FFmpeg.git
				synced 2025-10-30 23:18:11 +02:00 
			
		
		
		
	avformat/audiointerleave: Check before dereferencing
In order to use ff_audio_rechunk_interleave() (a special interleavement function for situations where the ordinary "interleave by dts" is not appropriate), the AVStreams must have private data and this private data must begin with an AudioInterleaveContext which contains a fifo that may need to be freed and when ff_audio_interleave_close() was called, it just assumed that everything has been properly set up, i.e. that every streams priv_data exists. This implies that this function can not be called from the deinit function of a muxer, because such functions might be called if the private data has not been successfully allocated. In order to change this, add a check for whether the private data exists before trying to free the fifo in it. Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com> Reviewed-by: Paul B Mahol <onemda@gmail.com> Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
This commit is contained in:
		
				
					committed by
					
						 Michael Niedermayer
						Michael Niedermayer
					
				
			
			
				
	
			
			
			
						parent
						
							556c4e38d5
						
					
				
				
					commit
					f1d46db926
				
			| @@ -33,7 +33,7 @@ void ff_audio_interleave_close(AVFormatContext *s) | ||||
|         AVStream *st = s->streams[i]; | ||||
|         AudioInterleaveContext *aic = st->priv_data; | ||||
|  | ||||
|         if (st->codecpar->codec_type == AVMEDIA_TYPE_AUDIO) | ||||
|         if (aic && st->codecpar->codec_type == AVMEDIA_TYPE_AUDIO) | ||||
|             av_fifo_freep(&aic->fifo); | ||||
|     } | ||||
| } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user