Coverage Report

Created: 2025-08-26 06:25

/src/zlib_uncompress3_fuzzer.cc
Line
Count
Source (jump to first uncovered line)
1
/********************************************************************************
2
 * Copyright 2025 Google LLC
3
 *
4
 * Licensed under the Apache License, Version 2.0 (the "License");
5
 * you may not use this file except in compliance with the License.
6
 * You may obtain a copy of the License at
7
 *
8
 *      http://www.apache.org/licenses/LICENSE-2.0
9
 *
10
 * Unless required by applicable law or agreed to in writing, software
11
 * distributed under the License is distributed on an "AS IS" BASIS,
12
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
 * See the License for the specific language governing permissions and
14
 * limitations under the License.
15
 *
16
 *******************************************************************************/
17
#include <stddef.h>
18
#include <stdint.h>
19
#include <string.h>
20
21
#include "zlib.h"
22
23
static Bytef buffer[256 * 1024] = { 0 };
24
25
// Entry point for LibFuzzer.
26
1.04k
extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) {
27
28
1.04k
  uLong basesz = size ? (--size, *data++) : 8;
29
1.04k
  uLong multiplier0 = size ? (--size, *data++) : 1;
30
1.04k
  uLong multiplier1 = size ? (--size, *data++) : 1;
31
32
1.04k
  uLongf buffer_length = static_cast<uLongf>(basesz * multiplier0 * multiplier1);
33
1.04k
  uLong buf_size = static_cast<uLong>(size);
34
  // Ignore return code.
35
1.04k
  uncompress2(buffer, &buffer_length, data, &buf_size);
36
1.04k
  return 0;
37
1.04k
}