]>
git.proxmox.com Git - ceph.git/blob - ceph/src/zstd/tests/fuzz/block_decompress.c
2 * Copyright (c) 2016-2020, Yann Collet, Facebook, Inc.
5 * This source code is licensed under both the BSD-style license (found in the
6 * LICENSE file in the root directory of this source tree) and the GPLv2 (found
7 * in the COPYING file in the root directory of this source tree).
8 * You may select, at your option, one of the above-listed licenses.
12 * This fuzz target attempts to decompress the fuzzed data with the simple
13 * decompression function to ensure the decompressor never crashes.
16 #define ZSTD_STATIC_LINKING_ONLY
21 #include "fuzz_helpers.h"
24 static ZSTD_DCtx
*dctx
= NULL
;
25 static void* rBuf
= NULL
;
26 static size_t bufSize
= 0;
28 int LLVMFuzzerTestOneInput(const uint8_t *src
, size_t size
)
30 size_t const neededBufSize
= ZSTD_BLOCKSIZE_MAX
;
32 /* Allocate all buffers and contexts if not already allocated */
33 if (neededBufSize
> bufSize
) {
35 rBuf
= FUZZ_malloc(neededBufSize
);
36 bufSize
= neededBufSize
;
39 dctx
= ZSTD_createDCtx();
42 ZSTD_decompressBegin(dctx
);
43 ZSTD_decompressBlock(dctx
, rBuf
, neededBufSize
, src
, size
);
45 #ifndef STATEFUL_FUZZING
46 ZSTD_freeDCtx(dctx
); dctx
= NULL
;