diff --git a/CMakeLists.txt b/CMakeLists.txt
index 5cd18cb4..cf6297a8 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -596,6 +596,10 @@ if(WITH_LIBDWARFS AND WITH_FUZZ)
add_executable(fuzz_mkdwarfs test/fuzz_mkdwarfs.cpp)
target_link_libraries(fuzz_mkdwarfs PRIVATE mkdwarfs_main dwarfs_test_helpers)
list(APPEND BINARY_TARGETS fuzz_mkdwarfs)
+
+ add_executable(fuzz_reader test/fuzz_reader.cpp)
+ target_link_libraries(fuzz_reader PRIVATE dwarfs_reader)
+ list(APPEND BINARY_TARGETS fuzz_reader)
endif()
foreach(tgt ${LIBDWARFS_TARGETS})
diff --git a/test/fuzz_reader.cpp b/test/fuzz_reader.cpp
new file mode 100644
index 00000000..f3d77eea
--- /dev/null
+++ b/test/fuzz_reader.cpp
@@ -0,0 +1,57 @@
+/* vim:set ts=2 sw=2 sts=2 et: */
+/**
+ * \author Marcus Holland-Moritz (github@mhxnet.de)
+ * \copyright Copyright (c) Marcus Holland-Moritz
+ *
+ * This file is part of dwarfs.
+ *
+ * dwarfs is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * dwarfs is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with dwarfs. If not, see .
+ */
+
+#include
+#include
+
+#include
+#include
+#include
+#include
+#include
+
+using namespace dwarfs;
+
+int main(int argc, char** argv) {
+ if (argc < 2) {
+ return 1;
+ }
+
+ // stream_logger lgr(std::cerr);
+ null_logger lgr;
+ os_access_generic os;
+
+#ifdef __AFL_LOOP
+ while (__AFL_LOOP(10000))
+#endif
+ {
+ try {
+ std::ostringstream oss;
+ reader::filesystem_v2 fs(lgr, os, argv[1],
+ {.metadata = {.check_consistency = true}});
+ fs.dump(oss, {.features = reader::fsinfo_features::all()});
+ } catch (std::exception const& e [[maybe_unused]]) {
+ // std::cerr << "Exception: " << e.what() << "\n";
+ }
+ }
+
+ return 0;
+}