summaryrefslogtreecommitdiff
path: root/Meta/Lagom/Fuzzers/FuzzLzmaRoundtrip.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'Meta/Lagom/Fuzzers/FuzzLzmaRoundtrip.cpp')
-rw-r--r--Meta/Lagom/Fuzzers/FuzzLzmaRoundtrip.cpp24
1 files changed, 24 insertions, 0 deletions
diff --git a/Meta/Lagom/Fuzzers/FuzzLzmaRoundtrip.cpp b/Meta/Lagom/Fuzzers/FuzzLzmaRoundtrip.cpp
new file mode 100644
index 0000000000..e10c102417
--- /dev/null
+++ b/Meta/Lagom/Fuzzers/FuzzLzmaRoundtrip.cpp
@@ -0,0 +1,24 @@
+/*
+ * Copyright (c) 2023, Tim Schumacher <timschumi@gmx.de>.
+ *
+ * SPDX-License-Identifier: BSD-2-Clause
+ */
+
+#include <AK/MemoryStream.h>
+#include <LibCompress/Lzma.h>
+
+extern "C" int LLVMFuzzerTestOneInput(uint8_t const* data, size_t size)
+{
+ AllocatingMemoryStream stream {};
+
+ auto compressor = MUST(Compress::LzmaCompressor::create_container(MaybeOwned<Stream> { stream }, {}));
+ MUST(compressor->write_until_depleted({ data, size }));
+ MUST(compressor->flush());
+
+ auto decompressor = MUST(Compress::LzmaDecompressor::create_from_container(MaybeOwned<Stream> { stream }));
+ auto result = MUST(decompressor->read_until_eof());
+
+ VERIFY((ReadonlyBytes { data, size }) == result.span());
+
+ return 0;
+}