mirror of
https://github.com/microsoft/onefuzz.git
synced 2025-06-19 13:03:44 +00:00
Add GoodBad
C# example project, integration test (#2148)
This commit is contained in:
45
src/ci/test-libfuzzer-dotnet.sh
Executable file
45
src/ci/test-libfuzzer-dotnet.sh
Executable file
@ -0,0 +1,45 @@
|
||||
#!/usr/bin/env bash
|
||||
set -ex -o pipefail
|
||||
|
||||
# Required environment variables:
|
||||
# - GOODBAD_DOTNET
|
||||
# - LIBFUZZER_DOTNET
|
||||
# - LIBFUZZER_DOTNET_LOADER
|
||||
# - SHARPFUZZ
|
||||
|
||||
export GOODBAD_DLL='GoodBad/GoodBad.dll'
|
||||
|
||||
TMP=$(mktemp -d)
|
||||
cd $TMP
|
||||
|
||||
cp -r ${GOODBAD_DOTNET} GoodBad
|
||||
|
||||
# Instrument DLL under test.
|
||||
${SHARPFUZZ} GoodBad/GoodBad.dll
|
||||
|
||||
# Create seed and crash inputs.
|
||||
printf 'good' > good.txt
|
||||
printf 'bad!' > bad.txt
|
||||
|
||||
# Test individual env vars.
|
||||
export LIBFUZZER_DOTNET_TARGET_ASSEMBLY="${GOODBAD_DLL}"
|
||||
export LIBFUZZER_DOTNET_TARGET_CLASS='GoodBad.Fuzzer'
|
||||
export LIBFUZZER_DOTNET_TARGET_METHOD='TestInput'
|
||||
|
||||
${LIBFUZZER_DOTNET} --target_path=${LIBFUZZER_DOTNET_LOADER} good.txt
|
||||
|
||||
# Expect nonzero exit.
|
||||
! ${LIBFUZZER_DOTNET} --target_path=${LIBFUZZER_DOTNET_LOADER} bad.txt
|
||||
|
||||
# Test delimited env var.
|
||||
export LIBFUZZER_DOTNET_TARGET="${LIBFUZZER_DOTNET_TARGET_ASSEMBLY}:${LIBFUZZER_DOTNET_TARGET_CLASS}:${LIBFUZZER_DOTNET_TARGET_METHOD}"
|
||||
unset LIBFUZZER_DOTNET_TARGET_ASSEMBLY
|
||||
unset LIBFUZZER_DOTNET_TARGET_CLASS
|
||||
unset LIBFUZZER_DOTNET_TARGET_METHOD
|
||||
|
||||
${LIBFUZZER_DOTNET} --target_path=${LIBFUZZER_DOTNET_LOADER} good.txt
|
||||
|
||||
# Expect nonzero exit.
|
||||
! ${LIBFUZZER_DOTNET} --target_path=${LIBFUZZER_DOTNET_LOADER} bad.txt
|
||||
|
||||
rm -rf $TMP
|
Reference in New Issue
Block a user