tools/target_dec_fuzzer: Call avcodec_flush_buffers() in a fuzzer choosen pattern
This should increase coverage Signed-off-by: Michael Niedermayer <michael@niedermayer.cc> Signed-off-by: James Almer <jamrial@gmail.com>
This commit is contained in:
		
							parent
							
								
									40dfb4328d
								
							
						
					
					
						commit
						cb59cd3466
					
				@ -110,6 +110,7 @@ int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
 | 
			
		||||
                          const AVPacket *avpkt) = NULL;
 | 
			
		||||
    AVCodecParserContext *parser = NULL;
 | 
			
		||||
    uint64_t keyframes = 0;
 | 
			
		||||
    uint64_t flushpattern = -1;
 | 
			
		||||
    AVDictionary *opts = NULL;
 | 
			
		||||
 | 
			
		||||
    if (!c) {
 | 
			
		||||
@ -239,6 +240,7 @@ int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
 | 
			
		||||
        ctx->request_channel_layout             = bytestream2_get_le64(&gbc);
 | 
			
		||||
 | 
			
		||||
        ctx->idct_algo                          = bytestream2_get_byte(&gbc) % 25;
 | 
			
		||||
        flushpattern                            = bytestream2_get_le64(&gbc);
 | 
			
		||||
 | 
			
		||||
        if (flags & 0x20) {
 | 
			
		||||
            switch (ctx->codec_id) {
 | 
			
		||||
@ -332,6 +334,10 @@ int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
 | 
			
		||||
                av_packet_move_ref(&avpkt, &parsepkt);
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
          if (!(flushpattern & 7))
 | 
			
		||||
              avcodec_flush_buffers(ctx);
 | 
			
		||||
          flushpattern = (flushpattern >> 3) + (flushpattern << 61);
 | 
			
		||||
 | 
			
		||||
          // Iterate through all data
 | 
			
		||||
          while (avpkt.size > 0 && it++ < maxiteration) {
 | 
			
		||||
            av_frame_unref(frame);
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user