summaryrefslogtreecommitdiff
path: root/Meta/Lagom/Fuzzers/FuzzLzmaRoundtrip.cpp
blob: e10c102417686751215c5ce8f73403868def1880 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
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;
}