From patchwork Mon Apr 19 09:06:10 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Heng Zhang X-Patchwork-Id: 27013 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a17:90a:9106:0:0:0:0 with SMTP id k6csp2613639pjo; Mon, 19 Apr 2021 02:06:42 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwiPLgN1cyked0XckaDn1+e9BCmtaI9DHdryR7p0rTMQ4yhfPU4iheJm7A0Q1HrWiUOCoSQ X-Received: by 2002:a17:907:1b20:: with SMTP id mp32mr21179504ejc.495.1618823202134; Mon, 19 Apr 2021 02:06:42 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1618823202; cv=none; d=google.com; s=arc-20160816; b=qfVmnKVMUnpl/B+VN1sqWd/YZj92sG5BjSdaQG0k/HMFivz99+xk/irHOjqwwsRd12 wylasuDjcfFiMUiAtC6pfL8Nd7+QKY4v5YgqYUwg0C4CVeeh1rGJEBemBrYlp9YTtUNn fp07HKTx3q8JdeOUNbLpgNCezuOnXNxckkvTwlHEC6QDXNDHpw4tcYgJ9KepBxWipl5N NBL6bJN71oAB797loY2sfa+NrCmWPWZ/2vR1nE9XCKv28zXeGbIRLKmAQ+ltBdoe2Pk4 lAogQGVi6KV6v8qKIyNNFJC87oY3wOrre52Rf1KKrUENLQbnSvFTAid52gCkRCMU8qnm 7smA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:cc:reply-to :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:mime-version:message-id:date:to:from :dkim-signature:delivered-to; bh=f4sGf8zbCITsULqakHtByfiya+9UijxDataeKHzMgc0=; b=XhV9WhPsx/QyZiiFZXOy7n4bTznsaZCiWTFQzKy0+dLdFgV9uuQuchRhrLPp9+BrLJ negZJ8WU1I1XruAA6f5ZnI9+LazY/OsG8MSJi/Nt2OKLF3w5bPIqsAvuWpBDkibWcxH8 6/UBcqdDiv6+613GdKQ7LaWGrKWuyLspB3XK+KocVVN3gxuwFWLCfcWVbt5QZdBPzH8r WfqDy6p1BElCA+Tc17FjGLhUH8QCgY62kM6ryUtmeWAGNSAhQJSlavCx/MbEvjklNkD9 8sSwkhY7h4hOPsLpRkANMsQcs7+y+L2KGB95ITXr5rW8XyJL0B2Bg3Gblxcw2LZIVZB5 BrVA== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@163.com header.s=s110527 header.b=Y1kQJu2q; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=163.com Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id n17si11752368ejb.145.2021.04.19.02.06.40; Mon, 19 Apr 2021 02:06:42 -0700 (PDT) Received-SPF: pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) client-ip=79.124.17.100; Authentication-Results: mx.google.com; dkim=neutral (body hash did not verify) header.i=@163.com header.s=s110527 header.b=Y1kQJu2q; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=163.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 3FBB16802B3; Mon, 19 Apr 2021 12:06:36 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from m12-12.163.com (m12-12.163.com [220.181.12.12]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id F32356806F8 for ; Mon, 19 Apr 2021 12:06:27 +0300 (EEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=163.com; s=s110527; h=From:Subject:Date:Message-Id:MIME-Version; bh=bJ5TK iifW5UOMlS4Uor7qfrSXAIL/4uoZImlUgcIAcI=; b=Y1kQJu2q1FyC79yJEsELB KoQbitWbA8ZX1fEZ0aDJaPQV4ubCHGtnlqNYRiT45AqUvWKe1aO320gSQBbtyvFg RrLJMPeuJHhZNh3/3MSQ0j3CeQQDAZaZKB50h/XslgcuolyGTDVoJ3iA2BfaBqYa 3NK1ND1xsekwgz1YdvJVXA= Received: from localhost.localdomain (unknown [59.172.176.209]) by smtp8 (Coremail) with SMTP id DMCowAAXH0sHSH1gwp8MaA--.14S2; Mon, 19 Apr 2021 17:06:23 +0800 (CST) From: a397341575@163.com To: ffmpeg-devel@ffmpeg.org Date: Mon, 19 Apr 2021 17:06:10 +0800 Message-Id: <20210419090610.57745-1-a397341575@163.com> X-Mailer: git-send-email 2.29.2 MIME-Version: 1.0 X-CM-TRANSID: DMCowAAXH0sHSH1gwp8MaA--.14S2 X-Coremail-Antispam: 1Uf129KBjvAXoW3tFyrAF47XF1fWFWftF4Utwb_yoW8Xry7Co WUtF4UG398Kw4UJr47CFy7ta10g3W0gr15A3s5tF4kGFsrGr47Ar15Z34Ikr4UArZ5Grsa qrZaqr18J3y0gF98n29KB7ZKAUJUUUUU529EdanIXcx71UUUUU7v73VFW2AGmfu7bjvjm3 AaLaJ3UbIYCTnIWIevJa73UjIFyTuYvjxUreOJDUUUU X-Originating-IP: [59.172.176.209] X-CM-SenderInfo: zdtzljyurvlki6rwjhhfrp/1tbi8A95oVuobdRXzQAAs3 Subject: [FFmpeg-devel] [PATCH] Gsoc: add the two fuzzy targets X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 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 Cc: toseven Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: IwFpjqbyp7JH From: toseven --- Makefile | 5 ++ tools/Makefile | 6 ++ tools/target_avpacket_fuzzer.c | 125 +++++++++++++++++++++++++++++++++ tools/target_formats_fuzzer.c | 120 +++++++++++++++++++++++++++++++ 4 files changed, 256 insertions(+) create mode 100644 tools/target_avpacket_fuzzer.c create mode 100644 tools/target_formats_fuzzer.c diff --git a/Makefile b/Makefile index 7e9d8b08c3..45509ab3b5 100644 --- a/Makefile +++ b/Makefile @@ -62,6 +62,11 @@ tools/target_dem_fuzzer$(EXESUF): tools/target_dem_fuzzer.o $(FF_DEP_LIBS) tools/target_io_dem_fuzzer$(EXESUF): tools/target_io_dem_fuzzer.o $(FF_DEP_LIBS) $(LD) $(LDFLAGS) $(LDEXEFLAGS) $(LD_O) $^ $(ELIBS) $(FF_EXTRALIBS) $(LIBFUZZER_PATH) +tools/target_avpacket_fuzzer$(EXESUF): tools/target_avpacket_fuzzer.o $(FF_DEP_LIBS) + $(LD) $(LDFLAGS) $(LDEXEFLAGS) $(LD_O) $^ $(ELIBS) $(FF_EXTRALIBS) $(LIBFUZZER_PATH) + +tools/target_formats_fuzzer$(EXESUF): tools/target_formats_fuzzer.o $(FF_DEP_LIBS) + $(LD) $(LDFLAGS) $(LDEXEFLAGS) $(LD_O) $^ $(ELIBS) $(FF_EXTRALIBS) $(LIBFUZZER_PATH) tools/enum_options$(EXESUF): ELIBS = $(FF_EXTRALIBS) tools/enum_options$(EXESUF): $(FF_DEP_LIBS) diff --git a/tools/Makefile b/tools/Makefile index 82baa8eadb..7ef720c8ba 100644 --- a/tools/Makefile +++ b/tools/Makefile @@ -17,6 +17,12 @@ tools/target_dem_fuzzer.o: tools/target_dem_fuzzer.c tools/target_io_dem_fuzzer.o: tools/target_dem_fuzzer.c $(COMPILE_C) -DIO_FLAT=0 +tools/target_avpacket_fuzzer.o: tools/target_avpacket_fuzzer.c + $(COMPILE_C) + +tools/target_avpacket_fuzzer.o: tools/target_formats_fuzzer.c + $(COMPILE_C) + OUTDIRS += tools clean:: diff --git a/tools/target_avpacket_fuzzer.c b/tools/target_avpacket_fuzzer.c new file mode 100644 index 0000000000..e5e7b3d4c8 --- /dev/null +++ b/tools/target_avpacket_fuzzer.c @@ -0,0 +1,125 @@ +/* + * This file is part of FFmpeg. + * + * FFmpeg is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * FFmpeg is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with FFmpeg; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#include +#include +#include +#include + +#include "libavcodec/avcodec.h" +#include "libavutil/error.h" + +int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size); + +static int setup_side_data_entry(AVPacket *avpkt) +{ + const uint8_t *data_name = NULL; + int ret = 0, bytes; + uint8_t *extra_data = NULL; + + /* get side_data_name string */ + data_name = av_packet_side_data_name(AV_PKT_DATA_NEW_EXTRADATA); + + /* Allocate a memory bloc */ + bytes = strlen(data_name); + + if (!(extra_data = av_malloc(bytes))) + { + ret = AVERROR(ENOMEM); + fprintf(stderr, "Error occurred: %s\n", av_err2str(ret)); + exit(1); + } + + /* copy side_data_name to extra_data array */ + memcpy(extra_data, data_name, bytes); + + /* create side data for AVPacket */ + ret = av_packet_add_side_data(avpkt, AV_PKT_DATA_NEW_EXTRADATA, extra_data, + bytes); + + if (ret < 0) + { + fprintf(stderr, "Error occurred in av_packet_add_side_data: %s\n", + av_err2str(ret)); + } + return ret; +} + +static int initializations(AVPacket *avpkt,const uint8_t *data, size_t size) +{ + int ret = 0; + + /* set values for avpkt */ + avpkt->pts = 17; + avpkt->dts = 2; + avpkt->data = (uint8_t *)data; + avpkt->size = size; + avpkt->flags = AV_PKT_FLAG_DISCARD; + avpkt->duration = 100; + avpkt->pos = 3; + + ret = setup_side_data_entry(avpkt); + + return ret; +} + +int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) +{ + AVPacket *avpkt = NULL; + AVPacket *avpkt_clone = NULL; + + if(data==NULL || size ==0) + return 1; + + /* test av_packet_alloc */ + avpkt = av_packet_alloc(); + if (!avpkt) + { + av_log(NULL, AV_LOG_ERROR, "av_packet_alloc failed to allcoate AVPacket\n"); + return 1; + } + + int fuzz_size = 0; + memcpy(&fuzz_size,data,sizeof(int)); + + if (initializations(avpkt, data, size) < 0) + { + printf("failed to initialize variables\n"); + av_packet_free(&avpkt); + return 1; + } + /* test av_packet_clone*/ + avpkt_clone = av_packet_clone(avpkt); + + if (!avpkt_clone) + { + av_log(NULL, AV_LOG_ERROR, "av_packet_clone failed to clone AVPacket\n"); + return 1; + } + + /*test api*/ + av_grow_packet(avpkt_clone,fuzz_size); + av_new_packet(avpkt_clone, fuzz_size); + av_packet_from_data(avpkt_clone, avpkt_clone->data, fuzz_size); + + /*clean up*/ + av_packet_free(&avpkt_clone); + av_packet_free(&avpkt); + + return 0; +} diff --git a/tools/target_formats_fuzzer.c b/tools/target_formats_fuzzer.c new file mode 100644 index 0000000000..144abcd769 --- /dev/null +++ b/tools/target_formats_fuzzer.c @@ -0,0 +1,120 @@ +/* + * Copyright (c) 2007 Bobby Bingham + * + * This file is part of FFmpeg. + * + * FFmpeg is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * FFmpeg is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with FFmpeg; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#include "libavfilter/formats.c" + +#undef printf + +int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size); + +const int64_t avfilter_all_channel_layouts[] = { + AV_CH_FRONT_CENTER, + AV_CH_FRONT_CENTER|AV_CH_LOW_FREQUENCY, + AV_CH_FRONT_LEFT|AV_CH_FRONT_RIGHT, + AV_CH_FRONT_LEFT|AV_CH_FRONT_RIGHT|AV_CH_LOW_FREQUENCY, + AV_CH_FRONT_LEFT|AV_CH_FRONT_RIGHT|AV_CH_FRONT_CENTER, + AV_CH_FRONT_LEFT|AV_CH_FRONT_RIGHT|AV_CH_FRONT_CENTER|AV_CH_LOW_FREQUENCY, + AV_CH_FRONT_CENTER|AV_CH_BACK_LEFT|AV_CH_BACK_RIGHT, + AV_CH_FRONT_CENTER|AV_CH_LOW_FREQUENCY|AV_CH_BACK_LEFT|AV_CH_BACK_RIGHT, + AV_CH_FRONT_LEFT|AV_CH_FRONT_RIGHT|AV_CH_BACK_LEFT|AV_CH_BACK_RIGHT, + AV_CH_FRONT_LEFT|AV_CH_FRONT_RIGHT|AV_CH_LOW_FREQUENCY|AV_CH_BACK_LEFT|AV_CH_BACK_RIGHT, + AV_CH_FRONT_LEFT|AV_CH_FRONT_RIGHT|AV_CH_FRONT_CENTER|AV_CH_BACK_LEFT|AV_CH_BACK_RIGHT, + AV_CH_FRONT_LEFT|AV_CH_FRONT_RIGHT|AV_CH_FRONT_CENTER|AV_CH_LOW_FREQUENCY|AV_CH_BACK_LEFT|AV_CH_BACK_RIGHT, + AV_CH_FRONT_CENTER|AV_CH_BACK_CENTER, + AV_CH_FRONT_CENTER|AV_CH_LOW_FREQUENCY|AV_CH_BACK_CENTER, + AV_CH_FRONT_LEFT|AV_CH_FRONT_RIGHT|AV_CH_BACK_CENTER, + AV_CH_FRONT_LEFT|AV_CH_FRONT_RIGHT|AV_CH_LOW_FREQUENCY|AV_CH_BACK_CENTER, + AV_CH_FRONT_LEFT|AV_CH_FRONT_RIGHT|AV_CH_FRONT_CENTER|AV_CH_BACK_CENTER, + AV_CH_FRONT_LEFT|AV_CH_FRONT_RIGHT|AV_CH_FRONT_CENTER|AV_CH_LOW_FREQUENCY|AV_CH_BACK_CENTER, + AV_CH_FRONT_CENTER|AV_CH_SIDE_LEFT|AV_CH_SIDE_RIGHT, + AV_CH_FRONT_CENTER|AV_CH_LOW_FREQUENCY|AV_CH_SIDE_LEFT|AV_CH_SIDE_RIGHT, + AV_CH_FRONT_LEFT|AV_CH_FRONT_RIGHT|AV_CH_SIDE_LEFT|AV_CH_SIDE_RIGHT, + AV_CH_FRONT_LEFT|AV_CH_FRONT_RIGHT|AV_CH_LOW_FREQUENCY|AV_CH_SIDE_LEFT|AV_CH_SIDE_RIGHT, + AV_CH_FRONT_LEFT|AV_CH_FRONT_RIGHT|AV_CH_FRONT_CENTER|AV_CH_SIDE_LEFT|AV_CH_SIDE_RIGHT, + AV_CH_FRONT_LEFT|AV_CH_FRONT_RIGHT|AV_CH_FRONT_CENTER|AV_CH_LOW_FREQUENCY|AV_CH_SIDE_LEFT|AV_CH_SIDE_RIGHT, + AV_CH_FRONT_CENTER|AV_CH_BACK_LEFT|AV_CH_BACK_RIGHT|AV_CH_SIDE_LEFT|AV_CH_SIDE_RIGHT, + AV_CH_FRONT_CENTER|AV_CH_LOW_FREQUENCY|AV_CH_BACK_LEFT|AV_CH_BACK_RIGHT|AV_CH_SIDE_LEFT|AV_CH_SIDE_RIGHT, + AV_CH_FRONT_LEFT|AV_CH_FRONT_RIGHT|AV_CH_BACK_LEFT|AV_CH_BACK_RIGHT|AV_CH_SIDE_LEFT|AV_CH_SIDE_RIGHT, + AV_CH_FRONT_LEFT|AV_CH_FRONT_RIGHT|AV_CH_LOW_FREQUENCY|AV_CH_BACK_LEFT|AV_CH_BACK_RIGHT|AV_CH_SIDE_LEFT|AV_CH_SIDE_RIGHT, + AV_CH_FRONT_LEFT|AV_CH_FRONT_RIGHT|AV_CH_FRONT_CENTER|AV_CH_BACK_LEFT|AV_CH_BACK_RIGHT|AV_CH_SIDE_LEFT|AV_CH_SIDE_RIGHT, + AV_CH_FRONT_LEFT|AV_CH_FRONT_RIGHT|AV_CH_FRONT_CENTER|AV_CH_LOW_FREQUENCY|AV_CH_BACK_LEFT|AV_CH_BACK_RIGHT|AV_CH_SIDE_LEFT|AV_CH_SIDE_RIGHT, + AV_CH_FRONT_CENTER|AV_CH_BACK_CENTER|AV_CH_SIDE_LEFT|AV_CH_SIDE_RIGHT, + AV_CH_FRONT_CENTER|AV_CH_LOW_FREQUENCY|AV_CH_BACK_CENTER|AV_CH_SIDE_LEFT|AV_CH_SIDE_RIGHT, + AV_CH_FRONT_LEFT|AV_CH_FRONT_RIGHT|AV_CH_BACK_CENTER|AV_CH_SIDE_LEFT|AV_CH_SIDE_RIGHT, + AV_CH_FRONT_LEFT|AV_CH_FRONT_RIGHT|AV_CH_LOW_FREQUENCY|AV_CH_BACK_CENTER|AV_CH_SIDE_LEFT|AV_CH_SIDE_RIGHT, + AV_CH_FRONT_LEFT|AV_CH_FRONT_RIGHT|AV_CH_FRONT_CENTER|AV_CH_BACK_CENTER|AV_CH_SIDE_LEFT|AV_CH_SIDE_RIGHT, + AV_CH_FRONT_LEFT|AV_CH_FRONT_RIGHT|AV_CH_FRONT_CENTER|AV_CH_LOW_FREQUENCY|AV_CH_BACK_CENTER|AV_CH_SIDE_LEFT|AV_CH_SIDE_RIGHT, + AV_CH_FRONT_CENTER|AV_CH_STEREO_LEFT|AV_CH_STEREO_RIGHT, + AV_CH_FRONT_CENTER|AV_CH_LOW_FREQUENCY|AV_CH_STEREO_LEFT|AV_CH_STEREO_RIGHT, + AV_CH_FRONT_LEFT|AV_CH_FRONT_RIGHT|AV_CH_STEREO_LEFT|AV_CH_STEREO_RIGHT, + AV_CH_FRONT_LEFT|AV_CH_FRONT_RIGHT|AV_CH_LOW_FREQUENCY|AV_CH_STEREO_LEFT|AV_CH_STEREO_RIGHT, + AV_CH_FRONT_LEFT|AV_CH_FRONT_RIGHT|AV_CH_FRONT_CENTER|AV_CH_STEREO_LEFT|AV_CH_STEREO_RIGHT, + AV_CH_FRONT_LEFT|AV_CH_FRONT_RIGHT|AV_CH_FRONT_CENTER|AV_CH_LOW_FREQUENCY|AV_CH_STEREO_LEFT|AV_CH_STEREO_RIGHT, + AV_CH_FRONT_CENTER|AV_CH_BACK_LEFT|AV_CH_BACK_RIGHT|AV_CH_STEREO_LEFT|AV_CH_STEREO_RIGHT, + AV_CH_FRONT_CENTER|AV_CH_LOW_FREQUENCY|AV_CH_BACK_LEFT|AV_CH_BACK_RIGHT|AV_CH_STEREO_LEFT|AV_CH_STEREO_RIGHT, + AV_CH_FRONT_LEFT|AV_CH_FRONT_RIGHT|AV_CH_BACK_LEFT|AV_CH_BACK_RIGHT|AV_CH_STEREO_LEFT|AV_CH_STEREO_RIGHT, + AV_CH_FRONT_LEFT|AV_CH_FRONT_RIGHT|AV_CH_LOW_FREQUENCY|AV_CH_BACK_LEFT|AV_CH_BACK_RIGHT|AV_CH_STEREO_LEFT|AV_CH_STEREO_RIGHT, + AV_CH_FRONT_LEFT|AV_CH_FRONT_RIGHT|AV_CH_FRONT_CENTER|AV_CH_BACK_LEFT|AV_CH_BACK_RIGHT|AV_CH_STEREO_LEFT|AV_CH_STEREO_RIGHT, + AV_CH_FRONT_LEFT|AV_CH_FRONT_RIGHT|AV_CH_FRONT_CENTER|AV_CH_LOW_FREQUENCY|AV_CH_BACK_LEFT|AV_CH_BACK_RIGHT|AV_CH_STEREO_LEFT|AV_CH_STEREO_RIGHT, + AV_CH_FRONT_CENTER|AV_CH_BACK_CENTER|AV_CH_STEREO_LEFT|AV_CH_STEREO_RIGHT, + AV_CH_FRONT_CENTER|AV_CH_LOW_FREQUENCY|AV_CH_BACK_CENTER|AV_CH_STEREO_LEFT|AV_CH_STEREO_RIGHT, + AV_CH_FRONT_LEFT|AV_CH_FRONT_RIGHT|AV_CH_BACK_CENTER|AV_CH_STEREO_LEFT|AV_CH_STEREO_RIGHT, + AV_CH_FRONT_LEFT|AV_CH_FRONT_RIGHT|AV_CH_LOW_FREQUENCY|AV_CH_BACK_CENTER|AV_CH_STEREO_LEFT|AV_CH_STEREO_RIGHT, + AV_CH_FRONT_LEFT|AV_CH_FRONT_RIGHT|AV_CH_FRONT_CENTER|AV_CH_BACK_CENTER|AV_CH_STEREO_LEFT|AV_CH_STEREO_RIGHT, + AV_CH_FRONT_LEFT|AV_CH_FRONT_RIGHT|AV_CH_FRONT_CENTER|AV_CH_LOW_FREQUENCY|AV_CH_BACK_CENTER|AV_CH_STEREO_LEFT|AV_CH_STEREO_RIGHT, + AV_CH_FRONT_CENTER|AV_CH_SIDE_LEFT|AV_CH_SIDE_RIGHT|AV_CH_STEREO_LEFT|AV_CH_STEREO_RIGHT, + AV_CH_FRONT_CENTER|AV_CH_LOW_FREQUENCY|AV_CH_SIDE_LEFT|AV_CH_SIDE_RIGHT|AV_CH_STEREO_LEFT|AV_CH_STEREO_RIGHT, + AV_CH_FRONT_LEFT|AV_CH_FRONT_RIGHT|AV_CH_SIDE_LEFT|AV_CH_SIDE_RIGHT|AV_CH_STEREO_LEFT|AV_CH_STEREO_RIGHT, + AV_CH_FRONT_LEFT|AV_CH_FRONT_RIGHT|AV_CH_LOW_FREQUENCY|AV_CH_SIDE_LEFT|AV_CH_SIDE_RIGHT|AV_CH_STEREO_LEFT|AV_CH_STEREO_RIGHT, + AV_CH_FRONT_LEFT|AV_CH_FRONT_RIGHT|AV_CH_FRONT_CENTER|AV_CH_SIDE_LEFT|AV_CH_SIDE_RIGHT|AV_CH_STEREO_LEFT|AV_CH_STEREO_RIGHT, + AV_CH_FRONT_LEFT|AV_CH_FRONT_RIGHT|AV_CH_FRONT_CENTER|AV_CH_LOW_FREQUENCY|AV_CH_SIDE_LEFT|AV_CH_SIDE_RIGHT|AV_CH_STEREO_LEFT|AV_CH_STEREO_RIGHT, + AV_CH_FRONT_CENTER|AV_CH_BACK_LEFT|AV_CH_BACK_RIGHT|AV_CH_SIDE_LEFT|AV_CH_SIDE_RIGHT|AV_CH_STEREO_LEFT|AV_CH_STEREO_RIGHT, + AV_CH_FRONT_CENTER|AV_CH_LOW_FREQUENCY|AV_CH_BACK_LEFT|AV_CH_BACK_RIGHT|AV_CH_SIDE_LEFT|AV_CH_SIDE_RIGHT|AV_CH_STEREO_LEFT|AV_CH_STEREO_RIGHT, + AV_CH_FRONT_LEFT|AV_CH_FRONT_RIGHT|AV_CH_BACK_LEFT|AV_CH_BACK_RIGHT|AV_CH_SIDE_LEFT|AV_CH_SIDE_RIGHT|AV_CH_STEREO_LEFT|AV_CH_STEREO_RIGHT, + AV_CH_FRONT_CENTER|AV_CH_BACK_CENTER|AV_CH_SIDE_LEFT|AV_CH_SIDE_RIGHT|AV_CH_STEREO_LEFT|AV_CH_STEREO_RIGHT, + AV_CH_FRONT_CENTER|AV_CH_LOW_FREQUENCY|AV_CH_BACK_CENTER|AV_CH_SIDE_LEFT|AV_CH_SIDE_RIGHT|AV_CH_STEREO_LEFT|AV_CH_STEREO_RIGHT, + AV_CH_FRONT_LEFT|AV_CH_FRONT_RIGHT|AV_CH_BACK_CENTER|AV_CH_SIDE_LEFT|AV_CH_SIDE_RIGHT|AV_CH_STEREO_LEFT|AV_CH_STEREO_RIGHT, + AV_CH_FRONT_LEFT|AV_CH_FRONT_RIGHT|AV_CH_LOW_FREQUENCY|AV_CH_BACK_CENTER|AV_CH_SIDE_LEFT|AV_CH_SIDE_RIGHT|AV_CH_STEREO_LEFT|AV_CH_STEREO_RIGHT, + AV_CH_FRONT_LEFT|AV_CH_FRONT_RIGHT|AV_CH_FRONT_CENTER|AV_CH_BACK_CENTER|AV_CH_SIDE_LEFT|AV_CH_SIDE_RIGHT|AV_CH_STEREO_LEFT|AV_CH_STEREO_RIGHT, + -1 +}; + +int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) +{ + if(data==NULL | size