fraps: fix version 0/1 input data size check.
Fixes array overread. Fixes Ticket1371 Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
This commit is contained in:
		
							parent
							
								
									f23a2418fb
								
							
						
					
					
						commit
						0bae6661cd
					
				@ -161,17 +161,17 @@ static int decode_frame(AVCodecContext *avctx,
 | 
			
		||||
        unsigned needed_size = avctx->width*avctx->height*3;
 | 
			
		||||
        if (version == 0) needed_size /= 2;
 | 
			
		||||
        needed_size += header_size;
 | 
			
		||||
        if (buf_size != needed_size && buf_size != header_size) {
 | 
			
		||||
            av_log(avctx, AV_LOG_ERROR,
 | 
			
		||||
                   "Invalid frame length %d (should be %d)\n",
 | 
			
		||||
                   buf_size, needed_size);
 | 
			
		||||
            return -1;
 | 
			
		||||
        }
 | 
			
		||||
        /* bit 31 means same as previous pic */
 | 
			
		||||
        if (header & (1U<<31)) {
 | 
			
		||||
            *data_size = 0;
 | 
			
		||||
            return buf_size;
 | 
			
		||||
        }
 | 
			
		||||
        if (buf_size != needed_size) {
 | 
			
		||||
            av_log(avctx, AV_LOG_ERROR,
 | 
			
		||||
                   "Invalid frame length %d (should be %d)\n",
 | 
			
		||||
                   buf_size, needed_size);
 | 
			
		||||
            return -1;
 | 
			
		||||
        }
 | 
			
		||||
    } else {
 | 
			
		||||
        /* skip frame */
 | 
			
		||||
        if (buf_size == 8) {
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user