blob: 1ef4371a2331d42910108e5fe0112fc23ef699d3 (
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
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
|
#!/usr/bin/env bash
set -euo pipefail
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
# In the OSS-Fuzz builder, the repo lives at /src/projtlauncher; locally this script sits in .clusterfuzzlite/
if [ -d "${SCRIPT_DIR}/projtlauncher" ]; then
REPO_ROOT="$(cd "${SCRIPT_DIR}/projtlauncher" && pwd)"
elif [ -f "${SCRIPT_DIR}/CMakeLists.txt" ]; then
REPO_ROOT="${SCRIPT_DIR}"
else
REPO_ROOT="$(cd "${SCRIPT_DIR}/.." && pwd)"
fi
cd "${REPO_ROOT}"
if command -v apt-get >/dev/null 2>&1; then
apt-get update
apt-get install -y --no-install-recommends \
ninja-build \
python3-pip
fi
# Qt6 not available in OSS-Fuzz environment
# Only fuzz_nbt_reader is built (uses libnbt++ and zlib, no Qt dependency)
# fuzz_gzip requires Qt6::Core (for QByteArray/QFile in GZip.cpp) - skipped
export PATH="${PATH}"
# Configure with fuzzing flags
cmake -S . -B build -G Ninja \
-DCMAKE_BUILD_TYPE=Release \
-DBUILD_TESTING=OFF \
-DBUILD_FUZZERS=ON \
-DLAUNCHER_FUZZ_ONLY=ON \
-DCMAKE_C_COMPILER="${CC:-clang}" \
-DCMAKE_CXX_COMPILER="${CXX:-clang++}" \
-DCMAKE_BUILD_RPATH="\$ORIGIN" \
-DCMAKE_INSTALL_RPATH="\$ORIGIN" \
-DCMAKE_INSTALL_RPATH_USE_LINK_PATH=ON
# Build only fuzz_nbt_reader (no Qt dependency)
# fuzz_gzip is conditionally built only when Qt6::Core is available
cmake --build build --parallel --target fuzz_nbt_reader
# Copy fuzzers to output directory
cp build/fuzz_nbt_reader "$OUT/"
|