From patchwork Fri Dec 6 19:16:23 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: James Almer X-Patchwork-Id: 16643 Return-Path: X-Original-To: patchwork@ffaux-bg.ffmpeg.org Delivered-To: patchwork@ffaux-bg.ffmpeg.org Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by ffaux.localdomain (Postfix) with ESMTP id EE3CD4492B1 for ; Fri, 6 Dec 2019 21:16:48 +0200 (EET) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id C989968B66B; Fri, 6 Dec 2019 21:16:48 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-vs1-f67.google.com (mail-vs1-f67.google.com [209.85.217.67]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id E733368B5A1 for ; Fri, 6 Dec 2019 21:16:42 +0200 (EET) Received: by mail-vs1-f67.google.com with SMTP id g15so5855358vsf.1 for ; Fri, 06 Dec 2019 11:16:42 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:subject:date:message-id:mime-version :content-transfer-encoding; bh=aAVfiqd1MJSyCfHPbjllrOVLEzGjapiH/pcQpx15aIo=; b=Cg7UtugE6qIyGAOOWTG5KRPrCT5FI5hLOAiMQoy9MRmn03YE6uPXy/8c18dzULF/ok +uD3CnITXgo3whgcT2eFm1tt6AnJY0eyBSpcs9xbkjpAwgeEAuK9JAADxWs/RMclTezz yMv4FgTb+/UoI84/zw1u3LkcJTiCwQcjVCzzRbjxoh1yTnrUkiPMEebQtdIlur4kt4dY kSNOpZYR7aEtI46zsWWrgxMsdQzihFO3+OFR+vuUPAVduAVEP1i04/IAYlWjk0L8NsXq xnIENAmaOfE8Nq8PlyH53BKp7bmBtDr5uSyguxvwS6eTCDQQJffP+77W//+WtsM6lmeF Gw8Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:subject:date:message-id:mime-version :content-transfer-encoding; bh=aAVfiqd1MJSyCfHPbjllrOVLEzGjapiH/pcQpx15aIo=; b=OxzhR5CmLr3lJALYA7Jafl3EwutiubWPPg1FswtmToYuJkEe24Va6ElFZHFhTobJif BNcjyHLOD/YNIQmskgFzoN1e8+VydDQLqXNnbo1IOhGLoc2NHmJ6ry+sUeT32KRSETN/ d90h1DD5MIlEOHrq00Gahoxa0Dp/MLxZFLSUev4UeVWwUSgk5Dh68kF5wMfMGVH47Kgi TgZKUL9XHhdLUEYmMMEZMn1NO15WxJ+ofUUrzuklQg5dJ1GE+blb18yfAfu34tK57oFU mMikuoUF6Bs+CBW5qQyJsJEhjywKw5U80jRgrRVkknVsHQ2y6hbrNuO5Z1A4CRAnpTek n70Q== X-Gm-Message-State: APjAAAUdMDG4itjNrb9zc+Ef4ORUon93ZaFS27TPZJHM0RdZxP8HFwPh jUGPwY81gBgZ4y8q6SsprLZz0KQs X-Google-Smtp-Source: APXvYqwCuOGC3W7Tm7dLtXtoUzWQuYG8Ih1+UGt5gnhMR/DKByVP9Mj6XS8QKuFoye3QvKUSqTCGew== X-Received: by 2002:a05:6102:98:: with SMTP id t24mr11004142vsp.136.1575659801401; Fri, 06 Dec 2019 11:16:41 -0800 (PST) Received: from localhost.localdomain ([181.23.68.111]) by smtp.gmail.com with ESMTPSA id r67sm3567712vkr.55.2019.12.06.11.16.40 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 06 Dec 2019 11:16:40 -0800 (PST) From: James Almer To: ffmpeg-devel@ffmpeg.org Date: Fri, 6 Dec 2019 16:16:23 -0300 Message-Id: <20191206191623.2669-1-jamrial@gmail.com> X-Mailer: git-send-email 2.24.0 MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH] tools/target_dec_bsf: call avcodec_flush_buffers() on random keyframes X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: FFmpeg development discussions and patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: FFmpeg development discussions and patches Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" This should increase coverage on some decoders by executing flushing code. Signed-off-by: James Almer --- tools/target_dec_fuzzer.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/tools/target_dec_fuzzer.c b/tools/target_dec_fuzzer.c index dcf47b0f4d..3c2f9125bb 100644 --- a/tools/target_dec_fuzzer.c +++ b/tools/target_dec_fuzzer.c @@ -256,6 +256,7 @@ int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) { error("Failed memory allocation"); memcpy(parsepkt.data, last, data - last); parsepkt.flags = (keyframes & 1) * AV_PKT_FLAG_DISCARD + (!!(keyframes & 2)) * AV_PKT_FLAG_KEY; + int flush = !!(keyframes & 4); keyframes = (keyframes >> 2) + (keyframes<<62); data += sizeof(fuzz_tag); last = data; @@ -289,6 +290,9 @@ int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) { av_packet_move_ref(&avpkt, &parsepkt); } + if (avpkt.flags & AV_PKT_FLAG_KEY && flush) + avcodec_flush_buffers(ctx); + // Iterate through all data while (avpkt.size > 0 && it++ < maxiteration) { av_frame_unref(frame);