smacker: validate channels and sample format.
(cherry picked from commit ff1f89de2d)
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
			
			
This commit is contained in:
		
				
					committed by
					
						
						Michael Niedermayer
					
				
			
			
				
	
			
			
			
						parent
						
							e6b2255329
						
					
				
				
					commit
					800ab099e3
				
			@@ -607,6 +607,14 @@ static int smka_decode_frame(AVCodecContext *avctx, void *data, int *data_size,
 | 
				
			|||||||
        av_log(avctx, AV_LOG_ERROR, "Frame is too large to fit in buffer\n");
 | 
					        av_log(avctx, AV_LOG_ERROR, "Frame is too large to fit in buffer\n");
 | 
				
			||||||
        return -1;
 | 
					        return -1;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					    if (stereo ^ (avctx->channels != 1)) {
 | 
				
			||||||
 | 
					        av_log(avctx, AV_LOG_ERROR, "channels mismatch\n");
 | 
				
			||||||
 | 
					        return AVERROR(EINVAL);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    if (bits && avctx->sample_fmt == AV_SAMPLE_FMT_U8) {
 | 
				
			||||||
 | 
					        av_log(avctx, AV_LOG_ERROR, "sample format mismatch\n");
 | 
				
			||||||
 | 
					        return AVERROR(EINVAL);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    memset(vlc, 0, sizeof(VLC) * 4);
 | 
					    memset(vlc, 0, sizeof(VLC) * 4);
 | 
				
			||||||
    memset(h, 0, sizeof(HuffContext) * 4);
 | 
					    memset(h, 0, sizeof(HuffContext) * 4);
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user