H.264: Don't set data_partitioning for invalid NAL_DPA.
Before, the decoder could interpret a corrupt frame as a NAL_DPA and NAL_DPC, and then start decoding even if decode_slice_header() returned an error. This frequently caused crashes. Fixes issue1228, issue1229, and partially issue1238. Originally committed as revision 19328 to svn://svn.ffmpeg.org/ffmpeg/trunk
This commit is contained in:
		
							parent
							
								
									bda1ad1e73
								
							
						
					
					
						commit
						0410ee8f86
					
				@ -7603,9 +7603,12 @@ static int decode_nal_units(H264Context *h, const uint8_t *buf, int buf_size){
 | 
				
			|||||||
            init_get_bits(&hx->s.gb, ptr, bit_length);
 | 
					            init_get_bits(&hx->s.gb, ptr, bit_length);
 | 
				
			||||||
            hx->intra_gb_ptr=
 | 
					            hx->intra_gb_ptr=
 | 
				
			||||||
            hx->inter_gb_ptr= NULL;
 | 
					            hx->inter_gb_ptr= NULL;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            if ((err = decode_slice_header(hx, h)) < 0)
 | 
				
			||||||
 | 
					                break;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            hx->s.data_partitioning = 1;
 | 
					            hx->s.data_partitioning = 1;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            err = decode_slice_header(hx, h);
 | 
					 | 
				
			||||||
            break;
 | 
					            break;
 | 
				
			||||||
        case NAL_DPB:
 | 
					        case NAL_DPB:
 | 
				
			||||||
            init_get_bits(&hx->intra_gb, ptr, bit_length);
 | 
					            init_get_bits(&hx->intra_gb, ptr, bit_length);
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user