diff --git a/lib/cib/fuzzers/cib_file_fuzzer.c b/lib/cib/fuzzers/cib_file_fuzzer.c index 1bd1d2b877..1a2578d201 100644 --- a/lib/cib/fuzzers/cib_file_fuzzer.c +++ b/lib/cib/fuzzers/cib_file_fuzzer.c @@ -1,48 +1,39 @@ /* * Copyright 2024 the Pacemaker project contributors * * The version control history for this file may have further details. * * This source code is licensed under the GNU Lesser General Public License * version 2.1 or later (LGPLv2.1+) WITHOUT ANY WARRANTY. */ +#include + #include #include #include -#include -#include +#include int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) { char *filename = NULL; int fd = 0; + cib_t *cib = NULL; // Have at least some data if (size < 5) { return -1; // Do not add input to testing corpus } - filename = crm_strdup_printf("%s/libfuzzer.XXXXXX", pcmk__get_tmpdir()); - fd = mkstemp(filename); - if (fd == -1) { - free(filename); - return 0; - } - if (write(fd, data, size) < 0) { - close(fd); - unlink(filename); - free(filename); - return 0; - } - close(fd); + filename = pcmk__assert_alloc(size + 1, sizeof(char)); + memcpy(filename, data, size); + filename[size] = '\0'; - cib_file_read_and_verify(filename, NULL, NULL); + cib = cib_file_new(filename); - unlink(filename); + cib_delete(cib); free(filename); - return 0; }