diff --git a/services/media_engine/plugins/ffmpeg_adapter/demuxer/ffmpeg_format_helper.cpp b/services/media_engine/plugins/ffmpeg_adapter/demuxer/ffmpeg_format_helper.cpp index bf9c52f098a380f48122081f36a3db436e6cd686..36466203e62772efb9c76287a21cadd4c475926d 100644 --- a/services/media_engine/plugins/ffmpeg_adapter/demuxer/ffmpeg_format_helper.cpp +++ b/services/media_engine/plugins/ffmpeg_adapter/demuxer/ffmpeg_format_helper.cpp @@ -115,6 +115,7 @@ static std::map g_codecIdToMime = { {AV_CODEC_ID_COOK, MimeType::AUDIO_COOK}, #endif {AV_CODEC_ID_AC3, MimeType::AUDIO_AC3}, + {AV_CODEC_ID_EAC3, MimeType::AUDIO_EAC3}, {AV_CODEC_ID_SUBRIP, MimeType::TEXT_SUBRIP}, {AV_CODEC_ID_WEBVTT, MimeType::TEXT_WEBVTT}, #ifdef SUPPORT_DEMUXER_LRC @@ -145,6 +146,7 @@ static std::map g_convertFfmpegFileType = { {"mpeg", FileType::MPEGPS}, {"rm", FileType::RM}, {"ac3", FileType::AC3}, + {"eac3", FileType::EAC3}, {"ape", FileType::APE}, {"srt", FileType::SRT}, {"webvtt", FileType::VTT}, diff --git a/test/BUILD.gn b/test/BUILD.gn index 64c61969dfe4e1a07fb6a441896cd6e33bc8106f..1e0f4a80f2342a48416f5b01ec8acd149b9eba9a 100644 --- a/test/BUILD.gn +++ b/test/BUILD.gn @@ -249,6 +249,8 @@ group("av_codec_fuzz_test") { "fuzztest/demuxerapi11_fuzzer:DemuxerAPI11FuzzTest", "fuzztest/demuxeravi_fuzzer:DemuxerAviFuzzTest", "fuzztest/demuxeraviapi11_fuzzer:DemuxerAviAPI11FuzzTest", + "fuzztest/demuxereac3_fuzzer:DemuxerEac3FuzzTest", + "fuzztest/demuxereac3api11_fuzzer:DemuxerEac3API11FuzzTest", "fuzztest/demuxerflac_fuzzer:DemuxerFlacFuzzTest", "fuzztest/demuxerflacapi11_fuzzer:DemuxerFlacAPI11FuzzTest", "fuzztest/demuxerflv_fuzzer:DemuxerFlvFuzzTest", @@ -275,6 +277,7 @@ group("av_codec_fuzz_test") { "fuzztest/demuxerpluginamr_fuzzer:DemuxerPluginAmrFuzzTest", "fuzztest/demuxerpluginape_fuzzer:DemuxerPluginApeFuzzTest", "fuzztest/demuxerpluginavi_fuzzer:DemuxerPluginAviFuzzTest", + "fuzztest/demuxerplugineac3_fuzzer:DemuxerPluginEac3FuzzTest", "fuzztest/demuxerpluginflac_fuzzer:DemuxerPluginFlacFuzzTest", "fuzztest/demuxerpluginflvtest_fuzzer:DemuxerPluginFlvtestFuzzTest", "fuzztest/demuxerpluginfmp4_fuzzer:DemuxerPluginFmp4FuzzTest", diff --git a/test/fuzztest/demuxereac3_fuzzer/BUILD.gn b/test/fuzztest/demuxereac3_fuzzer/BUILD.gn new file mode 100644 index 0000000000000000000000000000000000000000..874589297163875016a9c992e9bfa507ef2765f3 --- /dev/null +++ b/test/fuzztest/demuxereac3_fuzzer/BUILD.gn @@ -0,0 +1,64 @@ +# Copyright (c) 2025 Huawei Device Co., Ltd. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +#####################hydra-fuzz################### +import("//build/config/features.gni") +import("//build/test.gni") +module_output_path = "av_codec/av_codec" +MEDIA_ROOT_DIR = "//foundation/multimedia/av_codec/" + +##############################fuzztest########################################## +ohos_fuzztest("DemuxerEac3FuzzTest") { + module_out_path = module_output_path + fuzz_config_file = "$MEDIA_ROOT_DIR/test/fuzztest/demuxereac3_fuzzer" + include_dirs = [ + "$MEDIA_ROOT_DIR/interfaces/kits/c", + "$MEDIA_ROOT_DIR/test/fuzztest/demuxer_fuzzer", + ] + cflags = [ + "-g", + "-O0", + "-Wno-unused-variable", + "-fno-omit-frame-pointer", + ] + sources = [ + "$MEDIA_ROOT_DIR/test/fuzztest/demuxer_fuzzer/demuxer_sample.cpp", + "demuxereac3_fuzzer.cpp", + ] + external_deps = [ + "c_utils:utils", + "hilog:libhilog", + "ipc:ipc_single", + "media_foundation:native_media_core", + "window_manager:libwm", + ] + deps = [ + "$MEDIA_ROOT_DIR/interfaces/inner_api/native:av_codec_client", + "$MEDIA_ROOT_DIR/interfaces/kits/c:native_media_avdemuxer", + "$MEDIA_ROOT_DIR/interfaces/kits/c:native_media_avsource", + "$MEDIA_ROOT_DIR/interfaces/kits/c:native_media_codecbase", + ] + resource_config_file = + "$MEDIA_ROOT_DIR/test/moduletest/resources/ohos_test.xml" +} + +############################################################################### +group("fuzztest") { + testonly = true + deps = [] + deps += [ + # deps file + ":DemuxerEac3FuzzTest", + ] +} +############################################################################### diff --git a/test/fuzztest/demuxereac3_fuzzer/corpus/eac3_test.eac3 b/test/fuzztest/demuxereac3_fuzzer/corpus/eac3_test.eac3 new file mode 100644 index 0000000000000000000000000000000000000000..e32336af547a7bbfd658caf458207fccba353c0a Binary files /dev/null and b/test/fuzztest/demuxereac3_fuzzer/corpus/eac3_test.eac3 differ diff --git a/test/fuzztest/demuxereac3_fuzzer/demuxereac3_fuzzer.cpp b/test/fuzztest/demuxereac3_fuzzer/demuxereac3_fuzzer.cpp new file mode 100644 index 0000000000000000000000000000000000000000..976a996e3762351bdc44a02951f8a5c922d4e006 --- /dev/null +++ b/test/fuzztest/demuxereac3_fuzzer/demuxereac3_fuzzer.cpp @@ -0,0 +1,117 @@ +/* + * Copyright (c) 2025 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include +#include +#include +#include +#include +#include "securec.h" +#include +#include +#include "demuxer_sample.h" + +#define FUZZ_PROJECT_NAME "demuxer_fuzzer" +using namespace std; +using namespace OHOS::Media; +namespace OHOS { +const char *EAC3_PATH = "/data/test/fuzz_create.eac3"; +const int64_t EXPECT_SIZE = 36; +const size_t URI_BUFFER_SIZE = 21; +const int64_t URI_COUNT = 20; +const char FLAG = '\0'; +const size_t LANGUAGE_BUFFER_SIZE = 3; +const size_t LANGUAGE_COUNT = 2; +bool CheckDataValidity(FuzzedDataProvider *fdp, size_t size) +{ + if (size <= EXPECT_SIZE) { + return false; + } + int32_t fd = open(EAC3_PATH, O_RDWR | O_CREAT, S_IRUSR | S_IWUSR); + if (fd < 0) { + return false; + } + uint8_t *pstream = nullptr; + uint16_t framesize = fdp->ConsumeIntegralInRange(0, 0xfff); + pstream = (uint8_t *)malloc(framesize * sizeof(uint8_t)); + if (!pstream) { + std::cerr << "Memory alloction failed" << std::endl; + return false; + } + fdp->ConsumeData(pstream, framesize); + int len = write(fd, pstream, framesize); + if (len <= 0) { + close(fd); + free(pstream); + pstream = nullptr; + return false; + } + close(fd); + free(pstream); + pstream = nullptr; + return true; +} +bool DemuxerFuzzTest(const uint8_t *data, size_t size) +{ + FuzzedDataProvider fdp(data, size); + if (!CheckDataValidity(&fdp, size)) { + return false; + } + struct Params params; + params.time = fdp.ConsumeIntegral(); + char *uri = new char[URI_BUFFER_SIZE]; + if (strncpy_s(uri, URI_BUFFER_SIZE, fdp.ConsumeBytesAsString(URI_COUNT).c_str(), URI_COUNT) != 0) { + delete[] uri; + return false; + } + uri[URI_COUNT] = FLAG; + params.setTrackType = fdp.ConsumeIntegral(); + params.setDuration = fdp.ConsumeIntegral(); + params.setHeight = fdp.ConsumeIntegral(); + params.setFrameRate = fdp.ConsumeIntegral(); + char *setLanguage = new char[LANGUAGE_BUFFER_SIZE]; + if (strncpy_s(setLanguage, LANGUAGE_BUFFER_SIZE, fdp.ConsumeBytesAsString(LANGUAGE_COUNT).c_str(), + LANGUAGE_COUNT) != 0) { + delete[] uri; + delete[] setLanguage; + return false; + } + setLanguage[LANGUAGE_COUNT] = FLAG; + params.setCodecConfigSize = fdp.ConsumeIntegral(); + params.sampleRate = fdp.ConsumeIntegral(); + params.channelCount = fdp.ConsumeIntegral(); + params.setVideoHeight = fdp.ConsumeIntegral(); + params.setVideoWidth = fdp.ConsumeIntegral(); + uint32_t createSize = fdp.ConsumeIntegral(); + shared_ptr demuxerSample = make_shared(); + demuxerSample->filePath = EAC3_PATH; + demuxerSample->RunNormalDemuxer(createSize, uri, setLanguage, params); + delete[] uri; + delete[] setLanguage; + int ret = remove(EAC3_PATH); + if (ret != 0) { + return false; + } + return true; +} +} // namespace OHOS + +/* Fuzzer entry point */ +extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) +{ + /* Run your code on data */ + OHOS::DemuxerFuzzTest(data, size); + return 0; +} diff --git a/test/fuzztest/demuxereac3_fuzzer/project.xml b/test/fuzztest/demuxereac3_fuzzer/project.xml new file mode 100644 index 0000000000000000000000000000000000000000..56add82b410638f779e206084098030cccdf7aa3 --- /dev/null +++ b/test/fuzztest/demuxereac3_fuzzer/project.xml @@ -0,0 +1,25 @@ + + + + + + 10240000 + + 300 + + 4096 + + diff --git a/test/fuzztest/demuxereac3api11_fuzzer/BUILD.gn b/test/fuzztest/demuxereac3api11_fuzzer/BUILD.gn new file mode 100644 index 0000000000000000000000000000000000000000..b039c6dbe64f601ad3580afc3a2e4a052b38cea6 --- /dev/null +++ b/test/fuzztest/demuxereac3api11_fuzzer/BUILD.gn @@ -0,0 +1,64 @@ +# Copyright (c) 2025 Huawei Device Co., Ltd. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +#####################hydra-fuzz################### +import("//build/config/features.gni") +import("//build/test.gni") +module_output_path = "av_codec/av_codec" +MEDIA_ROOT_DIR = "//foundation/multimedia/av_codec/" + +##############################fuzztest########################################## +ohos_fuzztest("DemuxerEac3API11FuzzTest") { + module_out_path = module_output_path + fuzz_config_file = "$MEDIA_ROOT_DIR/test/fuzztest/demuxereac3api11_fuzzer" + include_dirs = [ + "$MEDIA_ROOT_DIR/interfaces/kits/c", + "$MEDIA_ROOT_DIR/test/fuzztest/demuxer_fuzzer", + ] + cflags = [ + "-g", + "-O0", + "-Wno-unused-variable", + "-fno-omit-frame-pointer", + ] + sources = [ + "$MEDIA_ROOT_DIR/test/fuzztest/demuxer_fuzzer/demuxer_sample.cpp", + "demuxereac3_fuzzer.cpp", + ] + external_deps = [ + "c_utils:utils", + "hilog:libhilog", + "ipc:ipc_single", + "media_foundation:native_media_core", + "window_manager:libwm", + ] + deps = [ + "$MEDIA_ROOT_DIR/interfaces/inner_api/native:av_codec_client", + "$MEDIA_ROOT_DIR/interfaces/kits/c:native_media_avdemuxer", + "$MEDIA_ROOT_DIR/interfaces/kits/c:native_media_avsource", + "$MEDIA_ROOT_DIR/interfaces/kits/c:native_media_codecbase", + ] + resource_config_file = + "$MEDIA_ROOT_DIR/test/moduletest/resources/ohos_test.xml" +} + +############################################################################### +group("fuzztest") { + testonly = true + deps = [] + deps += [ + # deps file + ":DemuxerEac3API11FuzzTest", + ] +} +############################################################################### diff --git a/test/fuzztest/demuxereac3api11_fuzzer/corpus/eac3_test.eac3 b/test/fuzztest/demuxereac3api11_fuzzer/corpus/eac3_test.eac3 new file mode 100644 index 0000000000000000000000000000000000000000..e32336af547a7bbfd658caf458207fccba353c0a Binary files /dev/null and b/test/fuzztest/demuxereac3api11_fuzzer/corpus/eac3_test.eac3 differ diff --git a/test/fuzztest/demuxereac3api11_fuzzer/demuxereac3_fuzzer.cpp b/test/fuzztest/demuxereac3api11_fuzzer/demuxereac3_fuzzer.cpp new file mode 100644 index 0000000000000000000000000000000000000000..9fad45bf0929f7638f3835fb4b436de5c14419a2 --- /dev/null +++ b/test/fuzztest/demuxereac3api11_fuzzer/demuxereac3_fuzzer.cpp @@ -0,0 +1,117 @@ +/* + * Copyright (c) 2025 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include +#include +#include +#include +#include +#include "securec.h" +#include +#include +#include "demuxer_sample.h" + +#define FUZZ_PROJECT_NAME "demuxer_fuzzer" +using namespace std; +using namespace OHOS::Media; +namespace OHOS { +const char *EAC3_PATH = "/data/test/fuzz_create.eac3"; +const int64_t EXPECT_SIZE = 36; +const size_t URI_BUFFER_SIZE = 21; +const int64_t URI_COUNT = 20; +const char FLAG = '\0'; +const size_t LANGUAGE_BUFFER_SIZE = 3; +const size_t LANGUAGE_COUNT = 2; +bool CheckDataValidity(FuzzedDataProvider *fdp, size_t size) +{ + if (size <= EXPECT_SIZE) { + return false; + } + int32_t fd = open(EAC3_PATH, O_RDWR | O_CREAT, S_IRUSR | S_IWUSR); + if (fd < 0) { + return false; + } + uint8_t *pstream = nullptr; + uint16_t framesize = fdp->ConsumeIntegralInRange(0, 0xfff); + pstream = (uint8_t *)malloc(framesize * sizeof(uint8_t)); + if (!pstream) { + std::cerr << "Memory alloction failed" << std::endl; + return false; + } + fdp->ConsumeData(pstream, framesize); + int len = write(fd, pstream, framesize); + if (len <= 0) { + close(fd); + free(pstream); + pstream = nullptr; + return false; + } + close(fd); + free(pstream); + pstream = nullptr; + return true; +} +bool DemuxerFuzzTest(const uint8_t *data, size_t size) +{ + FuzzedDataProvider fdp(data, size); + if (!CheckDataValidity(&fdp, size)) { + return false; + } + struct Params params; + params.time = fdp.ConsumeIntegral(); + char *uri = new char[URI_BUFFER_SIZE]; + if (strncpy_s(uri, URI_BUFFER_SIZE, fdp.ConsumeBytesAsString(URI_COUNT).c_str(), URI_COUNT) != 0) { + delete[] uri; + return false; + } + uri[URI_COUNT] = FLAG; + params.setTrackType = fdp.ConsumeIntegral(); + params.setDuration = fdp.ConsumeIntegral(); + params.setHeight = fdp.ConsumeIntegral(); + params.setFrameRate = fdp.ConsumeIntegral(); + char *setLanguage = new char[LANGUAGE_BUFFER_SIZE]; + if (strncpy_s(setLanguage, LANGUAGE_BUFFER_SIZE, fdp.ConsumeBytesAsString(LANGUAGE_COUNT).c_str(), + LANGUAGE_COUNT) != 0) { + delete[] uri; + delete[] setLanguage; + return false; + } + setLanguage[LANGUAGE_COUNT] = FLAG; + params.setCodecConfigSize = fdp.ConsumeIntegral(); + params.sampleRate = fdp.ConsumeIntegral(); + params.channelCount = fdp.ConsumeIntegral(); + params.setVideoHeight = fdp.ConsumeIntegral(); + params.setVideoWidth = fdp.ConsumeIntegral(); + uint32_t createSize = fdp.ConsumeIntegral(); + shared_ptr demuxerSample = make_shared(); + demuxerSample->filePath = EAC3_PATH; + demuxerSample->RunNormalDemuxerApi11(createSize, uri, setLanguage, params); + delete[] uri; + delete[] setLanguage; + int ret = remove(EAC3_PATH); + if (ret != 0) { + return false; + } + return true; +} +} // namespace OHOS + +/* Fuzzer entry point */ +extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) +{ + /* Run your code on data */ + OHOS::DemuxerFuzzTest(data, size); + return 0; +} diff --git a/test/fuzztest/demuxereac3api11_fuzzer/project.xml b/test/fuzztest/demuxereac3api11_fuzzer/project.xml new file mode 100644 index 0000000000000000000000000000000000000000..56add82b410638f779e206084098030cccdf7aa3 --- /dev/null +++ b/test/fuzztest/demuxereac3api11_fuzzer/project.xml @@ -0,0 +1,25 @@ + + + + + + 10240000 + + 300 + + 4096 + + diff --git a/test/fuzztest/demuxerplugineac3_fuzzer/BUILD.gn b/test/fuzztest/demuxerplugineac3_fuzzer/BUILD.gn new file mode 100644 index 0000000000000000000000000000000000000000..8a6546fe167f15ca66b68c62a112c2123d49cffc --- /dev/null +++ b/test/fuzztest/demuxerplugineac3_fuzzer/BUILD.gn @@ -0,0 +1,63 @@ +# Copyright (c) 2025 Huawei Device Co., Ltd. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +#####################hydra-fuzz################### +import("//build/config/features.gni") +import("//build/test.gni") +module_output_path = "av_codec/av_codec" +MEDIA_ROOT_DIR = "//foundation/multimedia/av_codec/" + +##############################fuzztest########################################## +ohos_fuzztest("DemuxerPluginEac3FuzzTest") { + module_out_path = module_output_path + fuzz_config_file = + "$MEDIA_ROOT_DIR/test/fuzztest/demuxerplugineac3_fuzzer" + include_dirs = [ + "$MEDIA_ROOT_DIR/interfaces/kits/c", + "$MEDIA_ROOT_DIR/test/fuzztest/demuxerpluginmp4_fuzzer", + "$MEDIA_ROOT_DIR/services/media_engine/plugins/ffmpeg_adapter/demuxer", + ] + cflags = [ + "-g", + "-O0", + "-Wno-unused-variable", + "-fno-omit-frame-pointer", + ] + sources = [ + "demuxerplugineac3_fuzzer.cpp", + "$MEDIA_ROOT_DIR/test/fuzztest/demuxerpluginmp4_fuzzer/demuxerplugintype_sample.cpp", + ] + external_deps = [ + "c_utils:utils", + "hilog:libhilog", + "ipc:ipc_core", + "media_foundation:native_media_core", + "window_manager:libwm", + ] + deps = [ + "$MEDIA_ROOT_DIR/interfaces/inner_api/native:av_codec_client", + "$MEDIA_ROOT_DIR/services/media_engine/modules:av_codec_media_engine_modules", + ] + resource_config_file = + "$MEDIA_ROOT_DIR/test/moduletest/resources/ohos_test.xml" +} + +############################################################################### +group("fuzztest") { + testonly = true + deps = [] + deps += [ + ":DemuxerPluginEac3FuzzTest", + ] +} +############################################################################### \ No newline at end of file diff --git a/test/fuzztest/demuxerplugineac3_fuzzer/corpus/eac3_test.eac3 b/test/fuzztest/demuxerplugineac3_fuzzer/corpus/eac3_test.eac3 new file mode 100644 index 0000000000000000000000000000000000000000..e32336af547a7bbfd658caf458207fccba353c0a Binary files /dev/null and b/test/fuzztest/demuxerplugineac3_fuzzer/corpus/eac3_test.eac3 differ diff --git a/test/fuzztest/demuxerplugineac3_fuzzer/demuxerplugineac3_fuzzer.cpp b/test/fuzztest/demuxerplugineac3_fuzzer/demuxerplugineac3_fuzzer.cpp new file mode 100644 index 0000000000000000000000000000000000000000..478d40da9ca148491b63caaaa5d9c29541cb82b4 --- /dev/null +++ b/test/fuzztest/demuxerplugineac3_fuzzer/demuxerplugineac3_fuzzer.cpp @@ -0,0 +1,56 @@ +/* + * Copyright (c) 2025 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include +#include +#include +#include +#include "demuxerplugintype_sample.h" + +#define FUZZ_PROJECT_NAME "demuxerplugineac3_fuzzer" +using namespace std; +using namespace OHOS::Media; + +namespace OHOS { +void DemuxerPluginFuzzWithFunc(const uint8_t *data, size_t size) +{ + std::shared_ptr demuxerTest = std::make_shared(); + demuxerTest->testFilePath_ = "/data/test/demuxerplugineac3.eac3"; + demuxerTest->demuxerPluginName_ = "avdemux_eac3"; + FuzzedDataProvider fdp(data, size); + uint8_t *pstream = nullptr; + uint16_t framesize = fdp.ConsumeIntegralInRange(0, 0xfff); + pstream = (uint8_t *)malloc(framesize * sizeof(uint8_t)); + if (!pstream) { + std::cerr << "Memory alloction failed" << std::endl; + return; + } + fdp.ConsumeData(pstream, framesize); + bool ret = demuxerTest->InitWithData(pstream, framesize); + free(pstream); + pstream = nullptr; + if (ret) { + demuxerTest->RunDemuxerInterfaceFuzz(); + } +} +} + +/* Fuzzer entry point */ +extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) +{ + /* Run your code on data */ + OHOS::DemuxerPluginFuzzWithFunc(data, size); + return 0; +} \ No newline at end of file diff --git a/test/fuzztest/demuxerplugineac3_fuzzer/project.xml b/test/fuzztest/demuxerplugineac3_fuzzer/project.xml new file mode 100644 index 0000000000000000000000000000000000000000..67fc9c58258ba6eee265b34a9c609df6448e95cf --- /dev/null +++ b/test/fuzztest/demuxerplugineac3_fuzzer/project.xml @@ -0,0 +1,25 @@ + + + + + + 10240000 + + 300 + + 5120 + + diff --git a/test/moduletest/resources/ohos_test.xml b/test/moduletest/resources/ohos_test.xml index e7e7275c81bb7575dc92a339145f79cb5c4c8ba9..0ca93254b727663510c8218db0731ab317c84cad 100644 --- a/test/moduletest/resources/ohos_test.xml +++ b/test/moduletest/resources/ohos_test.xml @@ -168,6 +168,18 @@