1/*
2 * Copyright (c) 2016-present, Facebook, Inc.
3 * All rights reserved.
4 *
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 */
9
10/**
11 * This fuzz target fuzzes all of the helper functions that consume compressed
12 * input.
13 */
14
15#include <stddef.h>
16#include <stdlib.h>
17#include <stdio.h>
18#include "fuzz_helpers.h"
19#include "zstd_helpers.h"
20
21int LLVMFuzzerTestOneInput(const uint8_t *src, size_t size)
22{
23    ZSTD_frameHeader zfh;
24    /* You can fuzz any helper functions here that are fast, and take zstd
25     * compressed data as input. E.g. don't expect the input to be a dictionary,
26     * so don't fuzz ZSTD_getDictID_fromDict().
27     */
28    ZSTD_getFrameContentSize(src, size);
29    ZSTD_getDecompressedSize(src, size);
30    ZSTD_findFrameCompressedSize(src, size);
31    ZSTD_getDictID_fromFrame(src, size);
32    ZSTD_findDecompressedSize(src, size);
33    ZSTD_decompressBound(src, size);
34    ZSTD_frameHeaderSize(src, size);
35    ZSTD_isFrame(src, size);
36    ZSTD_getFrameHeader(&zfh, src, size);
37    ZSTD_getFrameHeader_advanced(&zfh, src, size, ZSTD_f_zstd1);
38    return 0;
39}
40