From 339f2f2eeb883b201f59076900e3bee7ff143460 Mon Sep 17 00:00:00 2001 From: Yu Watanabe Date: Sun, 23 Feb 2025 04:59:46 +0900 Subject: [PATCH 1/2] fuzz: decompress_startswith() may return zero Fixes #36472. --- src/fuzz/fuzz-compress.c | 5 ++--- test/fuzz/.gitattributes | 1 + test/fuzz/fuzz-compress/issue-36472 | 1 + 3 files changed, 4 insertions(+), 3 deletions(-) create mode 100644 test/fuzz/fuzz-compress/issue-36472 diff --git a/src/fuzz/fuzz-compress.c b/src/fuzz/fuzz-compress.c index 6fcad736b1..adb0a969a8 100644 --- a/src/fuzz/fuzz-compress.c +++ b/src/fuzz/fuzz-compress.c @@ -5,6 +5,7 @@ #include "alloc-util.h" #include "compress.h" #include "fuzz.h" +#include "tests.h" typedef struct header { uint32_t alg:2; /* We have only three compression algorithms so far, but we might add more in the @@ -59,8 +60,6 @@ int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) { size_t sw_len = MIN(data_len - 1, h->sw_len); - r = decompress_startswith(alg, buf, csize, &buf2, h->data, sw_len, h->data[sw_len]); - assert_se(r > 0); - + ASSERT_OK(decompress_startswith(alg, buf, csize, &buf2, h->data, sw_len, h->data[sw_len])); return 0; } diff --git a/test/fuzz/.gitattributes b/test/fuzz/.gitattributes index 02dea65580..673c2e6fcc 100644 --- a/test/fuzz/.gitattributes +++ b/test/fuzz/.gitattributes @@ -1,5 +1,6 @@ /*/* -whitespace /fuzz-bus-match/* binary +/fuzz-compress/* binary /fuzz-dhcp*/* binary /fuzz-dns-packet/* binary /fuzz-fido-id-desc/ binary diff --git a/test/fuzz/fuzz-compress/issue-36472 b/test/fuzz/fuzz-compress/issue-36472 new file mode 100644 index 0000000000..fca37d475f --- /dev/null +++ b/test/fuzz/fuzz-compress/issue-36472 @@ -0,0 +1 @@ +Þ0000000000Þ000000000000000000000 From 0656b3a083b48a2cccb90ee1f7fed949d9283b76 Mon Sep 17 00:00:00 2001 From: Yu Watanabe Date: Sun, 23 Feb 2025 05:34:55 +0900 Subject: [PATCH 2/2] fuzz: tentatively disable fuzz-compress on oss-fuzz It does not work on oss-fuzz for some reasons. See #11018. --- src/fuzz/meson.build | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/fuzz/meson.build b/src/fuzz/meson.build index 8c1b2e91ea..a1a13950f8 100644 --- a/src/fuzz/meson.build +++ b/src/fuzz/meson.build @@ -5,7 +5,6 @@ simple_fuzzers += files( 'fuzz-bus-label.c', 'fuzz-calendarspec.c', 'fuzz-catalog.c', - 'fuzz-compress.c', 'fuzz-env-file.c', 'fuzz-hostname-setup.c', 'fuzz-json.c', @@ -14,3 +13,8 @@ simple_fuzzers += files( 'fuzz-varlink.c', 'fuzz-varlink-idl.c', ) + +# The following fuzzers do not work on oss-fuzz. See #11018. +if not want_ossfuzz + simple_fuzzers += files('fuzz-compress.c') +endif