diff --git a/projects/cups/fuzzer/fuzz_ppd_gen_1.c b/projects/cups/fuzzer/fuzz_ppd_gen_1.c new file mode 100644 index 0000000..f3503f4 --- /dev/null +++ b/projects/cups/fuzzer/fuzz_ppd_gen_1.c @@ -0,0 +1,51 @@ +#include +#include +#include +#include +#include "ppd.h" +#include "cups.h" +#include "file-private.h" + +int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) +{ + // Create a temporary file to simulate a PPD file + char filename[256]; + snprintf(filename, sizeof(filename), "/tmp/fuzz_ppd_%d.ppd", getpid()); + + FILE *file = fopen(filename, "wb"); + if (!file) + { + return 0; // Could not create file, exit + } + + fwrite(data, 1, size, file); + fclose(file); + + // Open the PPD file + ppd_file_t *ppd = ppdOpenFile(filename); + if (!ppd) + { + unlink(filename); + return 0; // Could not open PPD file, exit + } + + // Mark default options + ppdMarkDefaults(ppd); + + // Check for conflicts + int conflicts = ppdConflicts(ppd); + + // Optionally mark options (using dummy options for demonstration) + cups_option_t options[1]; + options[0].name = "OptionName"; + options[0].value = "OptionValue"; + cupsMarkOptions(ppd, 1, options); + + // Close the PPD file + ppdClose(ppd); + + // Clean up the temporary file + unlink(filename); + + return 0; +} diff --git a/projects/cups/seeds/fuzz_ppd_gen_1_seed_corpus/1 b/projects/cups/seeds/fuzz_ppd_gen_1_seed_corpus/1 new file mode 100644 index 0000000..3fa1112 Binary files /dev/null and b/projects/cups/seeds/fuzz_ppd_gen_1_seed_corpus/1 differ diff --git a/projects/cups/seeds/fuzz_ppd_gen_1_seed_corpus/2 b/projects/cups/seeds/fuzz_ppd_gen_1_seed_corpus/2 new file mode 100644 index 0000000..b317709 Binary files /dev/null and b/projects/cups/seeds/fuzz_ppd_gen_1_seed_corpus/2 differ diff --git a/projects/cups/seeds/fuzz_ppd_gen_1_seed_corpus/3 b/projects/cups/seeds/fuzz_ppd_gen_1_seed_corpus/3 new file mode 100644 index 0000000..dcb3a0e Binary files /dev/null and b/projects/cups/seeds/fuzz_ppd_gen_1_seed_corpus/3 differ