From 0396303f6298d52fd6a4bbf8aad6651b4e0eed33 Mon Sep 17 00:00:00 2001 From: light7734 Date: Tue, 12 Aug 2025 16:04:00 +0330 Subject: [PATCH 1/2] ci: add amd64/clang/fuzz.sh --- tools/ci/amd64/clang/fuzz.sh | 57 ++++++++++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) create mode 100755 tools/ci/amd64/clang/fuzz.sh diff --git a/tools/ci/amd64/clang/fuzz.sh b/tools/ci/amd64/clang/fuzz.sh new file mode 100755 index 0000000..126b5a4 --- /dev/null +++ b/tools/ci/amd64/clang/fuzz.sh @@ -0,0 +1,57 @@ +#!/bin/bash + +set -e +cd $(git rev-parse --show-toplevel)/ +# rm -rf ./build + +export CC=$(which afl-clang-lto) +export CXX=$(which afl-clang-lto++) +export AR=$(which llvm-ar) +export RANLIB=$(which llvm-ranlib) +export AS=$(which llvm-as) + +conan build . \ + -c tools.system.package_manager:mode=install \ + -c tools.cmake.cmaketoolchain:generator=Ninja \ + -c tools.build:compiler_executables='{"c": "afl-clang-lto", "cpp": "afl-clang-lto++"}' \ + -s build_type=Release \ + -s compiler=clang \ + -s compiler.version=20 \ + -s compiler.libcxx=libc++ \ + -o use_mold=True \ + --build=missing \ + --build=missing + +fuzz_test_count=$(find ./build -type f -name '*_fuzz' -executable | wc -l) +total_fuzz_time=60 # in seconds + +time_per_fuzz=$((total_fuzz_time / fuzz_test_count)) + +echo "Fuzz test count: ${fuzz_test_count}" +echo "Total fuzz time: ${total_fuzz_time}" +echo "Time per fuzz: ${time_per_fuzz}" + +export AFL_SKIP_CPUFREQ=1 +export AFL_NO_UI=1 + +for fuzz_name in $(find ./build -type f -name '*_fuzz' -executable); do + base_name=$(basename $fuzz_name) + out_path="/fuzz/${base_name}_out" + in_path="/fuzz/${base_name}_in" + + echo "Running ${fuzz_name} for ${time_per_fuzz} seconds..." + echo "base_name: ${base_name}" + echo "out_path: ${out_path}" + echo "in_path: ${in_path}" + + if [[ ! -e $dir ]]; then + echo "No directories detected for ${base_name}" + echo "Creating dummy files..." + mkdir -p ${in_path} + mkdir -p ${out_path} + + echo "0" > ${in_path}/a + fi + + afl-fuzz -V $time_per_fuzz -i $in_path -o $out_path -- $fuzz_name +done -- 2.45.3 From 5dba19b9a4eb7dda55d0c8c3edc1dc2c8b260f9c Mon Sep 17 00:00:00 2001 From: light7734 Date: Tue, 12 Aug 2025 16:04:29 +0330 Subject: [PATCH 2/2] ci: add daily amd64 clang fuzz ci check to .drone.yml --- .drone.yml | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/.drone.yml b/.drone.yml index 159dc65..e7ff9dd 100644 --- a/.drone.yml +++ b/.drone.yml @@ -1,3 +1,18 @@ +--- +kind: pipeline +type: docker +name: daily — amd64 — clang +trigger: + branch: + - main + +steps: +- name: fuzz + image: amd64_clang_fuzz:latest + pull: if-not-exists + commands: + - ./tools/ci/amd64/clang/fuzz.sh + --- kind: pipeline type: exec -- 2.45.3