Compare commits
	
		
			3 commits
		
	
	
		
			be35960f91
			...
			5dba19b9a4
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 5dba19b9a4 | |||
| 0396303f62 | |||
| b0caeded2a | 
					 3 changed files with 74 additions and 2 deletions
				
			
		
							
								
								
									
										15
									
								
								.drone.yml
									
										
									
									
									
								
							
							
						
						
									
										15
									
								
								.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
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -22,8 +22,8 @@ void create_surface_component(test::FuzzDataProvider &provider, ecs::Registry &r
 | 
			
		|||
	const auto title = provider.consume_string(length).value_or("");
 | 
			
		||||
 | 
			
		||||
	const auto resolution = math::uvec2 {
 | 
			
		||||
		provider.consume<uint32_t>().value_or({ 32 }),
 | 
			
		||||
		provider.consume<uint32_t>().value_or({ 64 }),
 | 
			
		||||
		provider.consume<uint32_t>().value_or(32u),
 | 
			
		||||
		provider.consume<uint32_t>().value_or(64u),
 | 
			
		||||
	};
 | 
			
		||||
	const auto visible = provider.consume<bool>().value_or(false);
 | 
			
		||||
	const auto vsync = provider.consume<bool>().value_or(false);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										57
									
								
								tools/ci/amd64/clang/fuzz.sh
									
										
									
									
									
										Executable file
									
								
							
							
						
						
									
										57
									
								
								tools/ci/amd64/clang/fuzz.sh
									
										
									
									
									
										Executable file
									
								
							| 
						 | 
				
			
			@ -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
 | 
			
		||||
		Loading…
	
	Add table
		
		Reference in a new issue