]> granicus.if.org Git - imagemagick/commitdiff
Added separate fuzzer for the label encoder (#962).
authorDirk Lemstra <dirk@git.imagemagick.org>
Mon, 29 Jan 2018 21:20:47 +0000 (22:20 +0100)
committerDirk Lemstra <dirk@git.imagemagick.org>
Mon, 29 Jan 2018 21:20:47 +0000 (22:20 +0100)
Magick++/fuzz/encoder_label_fuzzer.cc [new file with mode: 0644]
Magick++/fuzz/encoder_utils.cc [new file with mode: 0644]
Magick++/fuzz/encoder_xc_fuzzer.cc

diff --git a/Magick++/fuzz/encoder_label_fuzzer.cc b/Magick++/fuzz/encoder_label_fuzzer.cc
new file mode 100644 (file)
index 0000000..1338833
--- /dev/null
@@ -0,0 +1,13 @@
+#include <cstdint>
+
+#include <Magick++/Blob.h>
+#include <Magick++/Image.h>
+
+#include "utils.cc"
+#include "encoder_utils.cc"
+
+extern "C" int LLVMFuzzerTestOneInput(const uint8_t *Data, size_t Size) {
+  return fuzzEncoderWithStringFilename("label", Data, Size);
+}
+
+#include "travis.cc"
diff --git a/Magick++/fuzz/encoder_utils.cc b/Magick++/fuzz/encoder_utils.cc
new file mode 100644 (file)
index 0000000..f5288ea
--- /dev/null
@@ -0,0 +1,15 @@
+static int fuzzEncoderWithStringFilename(const std::string encoder, const uint8_t *Data, size_t Size)
+{
+    // Allow a bit extra to make sure we do proper bounds checking in Magick++
+  if (Size > MagickPathExtent)
+    return 0;
+  std::string color(reinterpret_cast<const char*>(Data), Size);
+
+  Magick::Image image;
+  try {
+    image.read(encoder + ":" + color);
+  }
+  catch (Magick::Exception &e) {
+  }
+  return 0;
+}
\ No newline at end of file
index 049de8d71ff868707a25d385b88b0a0d93e6145a..5f74f10e44a1e1ee59c33fc2301a3795f7b39f9d 100644 (file)
@@ -4,20 +4,10 @@
 #include <Magick++/Image.h>
 
 #include "utils.cc"
+#include "encoder_utils.cc"
 
 extern "C" int LLVMFuzzerTestOneInput(const uint8_t *Data, size_t Size) {
-  // Allow a bit extra to make sure we do proper bounds checking in Magick++
-  if (Size > MagickPathExtent)
-    return 0;
-  std::string color(reinterpret_cast<const char*>(Data), Size);
-
-  Magick::Image image;
-  try {
-    image.read("xc:" + color);
-  }
-  catch (Magick::Exception &e) {
-  }
-  return 0;
+  return fuzzEncoderWithStringFilename("xc", Data, Size);
 }
 
 #include "travis.cc"