]> granicus.if.org Git - imagemagick/commitdiff
Handle the null encoder properly in the encoder fuzz
authorAlex Gaynor <alex.gaynor@gmail.com>
Fri, 19 Jan 2018 13:32:41 +0000 (08:32 -0500)
committerDirk Lemstra <dlemstra@users.noreply.github.com>
Fri, 19 Jan 2018 14:41:44 +0000 (15:41 +0100)
Credit OSS-Fuzz

Magick++/fuzz/encoder_fuzzer.cc

index dd3875bd6dee470189226f7defbf257ac06da25b..75963df96e144e747f6167af01a30043237be8e5 100644 (file)
 #endif
 
 extern "C" int LLVMFuzzerTestOneInput(const uint8_t *Data, size_t Size) {
+  std::string encoder = FUZZ_ENCODER;
+  // Due to macro foolishness, if we pass -DFUZZ_IMAGEMAGICK_ENCODER=NULL,
+  // FUZZ_ENCODER ends up being "__null".
+  if (encoder == "__null") {
+    encoder = "NULL";
+  }
+  
   const Magick::Blob blob(Data, Size);
   Magick::Image image;
-  image.magick(FUZZ_ENCODER);
-  image.fileName(std::string(FUZZ_ENCODER) + ":");
+  image.magick(encoder);
+  image.fileName(std::string(encoder) + ":");
   try {
     image.read(blob);
   }
@@ -27,7 +34,7 @@ extern "C" int LLVMFuzzerTestOneInput(const uint8_t *Data, size_t Size) {
 
   Magick::Blob outBlob;
   try {
-    image.write(&outBlob, FUZZ_ENCODER);
+    image.write(&outBlob, encoder);
   }
   catch (Magick::Exception &e) {
   }