commit:     15a415c49a6aeadf8c098df646643f990aa62b6a
Author:     Mike Frysinger <vapier <AT> gentoo <DOT> org>
AuthorDate: Fri Jan 26 04:54:20 2024 +0000
Commit:     Sam James <sam <AT> gentoo <DOT> org>
CommitDate: Fri Aug  9 10:06:18 2024 +0000
URL:        https://gitweb.gentoo.org/proj/pax-utils.git/commit/?id=15a415c4

fuzzer: fix unused setting on argc & argv

At some point the compiler changed to not propagate argument attributes
from the prototype to the definition.  Add a hacky macro to insert it
by default instead to avoid need for (void) casts.

Signed-off-by: Mike Frysinger <vapier <AT> gentoo.org>
(cherry picked from commit 6508649486444d20636d1ff15df7db7302f3c46c)
Signed-off-by: Sam James <sam <AT> gentoo.org>

 dumpelf.c | 2 --
 fuzz-ar.c | 3 ---
 paxinc.h  | 9 +++++++--
 3 files changed, 7 insertions(+), 7 deletions(-)

diff --git a/dumpelf.c b/dumpelf.c
index 15058ee..1eb7e62 100644
--- a/dumpelf.c
+++ b/dumpelf.c
@@ -579,8 +579,6 @@ static void parseargs(int argc, char *argv[])
 #if PAX_UTILS_LIBFUZZ
 int LLVMFuzzerInitialize(int *argc, char ***argv)
 {
-       (void)argc;
-       (void)argv;
        (void)parseargs;
        security_init(false);
        return 0;

diff --git a/fuzz-ar.c b/fuzz-ar.c
index 360194f..eadcdee 100644
--- a/fuzz-ar.c
+++ b/fuzz-ar.c
@@ -15,9 +15,6 @@ static int fd;
 
 int LLVMFuzzerInitialize(int *argc, char ***argv)
 {
-       (void)argc;
-       (void)argv;
-
        fd = memfd_create("fuzz-input.a", MFD_CLOEXEC);
        if (fd == -1)
                errp("memfd_create() failed");

diff --git a/paxinc.h b/paxinc.h
index b2d2b50..0d10c21 100644
--- a/paxinc.h
+++ b/paxinc.h
@@ -112,9 +112,14 @@ const char *strfileperms(const char *fname);
 #define PTR_ALIGN_DOWN(base, size) 
((__typeof__(base))ALIGN_DOWN((uintptr_t)(base), (size)))
 #define PTR_ALIGN_UP(base, size)   ((__typeof__(base))ALIGN_UP  
((uintptr_t)(base), (size)))
 
-/* Support for libFuzzer: https://llvm.org/docs/LibFuzzer.html */
+/*
+ * Support for libFuzzer: https://llvm.org/docs/LibFuzzer.html
+ * No headers define this API, so we have to do it ourselves.
+ */
 #if PAX_UTILS_LIBFUZZ
-int LLVMFuzzerInitialize(__unused__ int *argc, __unused__ char ***argv);
+int LLVMFuzzerInitialize(int *argc, char ***argv);
+/* Attributes on the prototype are ignored, so hack the definition. */
+#define LLVMFuzzerInitialize(c, v) LLVMFuzzerInitialize(__unused__ c, 
__unused__ v)
 int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size);
 #endif
 

Reply via email to