From b89287281d757e6259a16b5fc1524f13354c887c Mon Sep 17 00:00:00 2001 From: disconnect3d Date: Fri, 1 Dec 2023 19:14:21 +0100 Subject: [PATCH] add fuzz_alpm_extract_keyid --- meson.build | 11 ++++++++++- src/fuzzing/fuzz_alpm_extract_keyid.c | 26 ++++++++++++++++++++++++++ src/fuzzing/meson.build | 4 ++++ 3 files changed, 40 insertions(+), 1 deletion(-) create mode 100644 src/fuzzing/fuzz_alpm_extract_keyid.c diff --git a/meson.build b/meson.build index c73c73ca..f880f3a4 100644 --- a/meson.build +++ b/meson.build @@ -423,7 +423,16 @@ executable( c_args : ['-fsanitize=fuzzer,address', '-ggdb', '-O0', '-fno-omit-frame-pointer', '-DFUZZING_PACMAN'], link_args : ['-fsanitize=fuzzer,address', '-ggdb', '-O0', '-fno-omit-frame-pointer'], ) - +# Note: this target must be built with clang! +executable( + 'fuzz_alpm_extract_keyid', + [fuzz_alpm_extract_keyid_sources, pacman_sources], + include_directories : includes, + link_with : [libalpm_a, libcommon], + dependencies : [], + c_args : ['-fsanitize=fuzzer,address', '-ggdb', '-O0', '-fno-omit-frame-pointer', '-DFUZZING_PACMAN'], + link_args : ['-fsanitize=fuzzer,address', '-ggdb', '-O0', '-fno-omit-frame-pointer'], +) foreach wrapper : script_wrappers cdata = configuration_data() diff --git a/src/fuzzing/fuzz_alpm_extract_keyid.c b/src/fuzzing/fuzz_alpm_extract_keyid.c new file mode 100644 index 00000000..febbd57a --- /dev/null +++ b/src/fuzzing/fuzz_alpm_extract_keyid.c @@ -0,0 +1,26 @@ +#define _XOPEN_SOURCE +#include +#include +#include +#include +#include + +/* libalpm */ +#include "alpm.h" +#include "alpm_list.h" +#include "handle.h" + +int LLVMFuzzerTestOneInput(const uint8_t *Data, size_t Size); + +int LLVMFuzzerTestOneInput(const uint8_t *Data, size_t Size) { + if (Size == 0) + return 0; + + alpm_handle_t handle; // TODO/FIXME? + const char* filename = "/dev/null"; // TODO/FIXME? + + alpm_list_t *keys = NULL; + alpm_extract_keyid(&handle, filename, /* sig */ Data, /* len */ Size, &keys); + + return 0; +} diff --git a/src/fuzzing/meson.build b/src/fuzzing/meson.build index 13a95b3e..9fe120b7 100644 --- a/src/fuzzing/meson.build +++ b/src/fuzzing/meson.build @@ -5,3 +5,7 @@ fuzz_wordsplit_sources = files(''' fuzz_string_length_sources = files(''' fuzz_string_length.c '''.split()) + +fuzz_alpm_extract_keyid_sources = files(''' + fuzz_alpm_extract_keyid.c +'''.split())