mirror of
https://github.com/microsoft/onefuzz.git
synced 2025-06-17 12:28:07 +00:00
Remove old libfuzzer dotnet
template (#2875)
### Context The original `libfuzzer dotnet` job template was a proof of concept that demonstrated how the `libfuzzer_fuzz` task could be used to express fuzzing via the (pre SharpFuzz 2.0) `libfuzzer-dotnet` tool. It (and its associated integration test) used a harness that linked an older version of SharpFuzz, and which is incompatible with LibFuzzerDotnetLoader (which requires SharpFuzz 2.0 or greater). ### Changes - Rename `libfuzzer dotnet_dll` job template to `libfuzzer dotnet`, making it the _only_ `libfuzzer-dotnet` template - Remove integration tests and docs for the old proof-of-concept job type ### Notice This is a breaking change. Closes #2874.
This commit is contained in:
@ -59,7 +59,6 @@ class TaskTestState(Enum):
|
||||
class TemplateType(Enum):
|
||||
libfuzzer = "libfuzzer"
|
||||
libfuzzer_dotnet = "libfuzzer_dotnet"
|
||||
libfuzzer_dotnet_dll = "libfuzzer_dotnet_dll"
|
||||
libfuzzer_qemu_user = "libfuzzer_qemu_user"
|
||||
afl = "afl"
|
||||
radamsa = "radamsa"
|
||||
@ -153,16 +152,6 @@ TARGETS: Dict[str, Integration] = {
|
||||
"linux-libfuzzer-dotnet": Integration(
|
||||
template=TemplateType.libfuzzer_dotnet,
|
||||
os=OS.linux,
|
||||
target_exe="wrapper",
|
||||
nested_setup_dir="my-fuzzer",
|
||||
inputs="inputs",
|
||||
use_setup=True,
|
||||
wait_for_files={ContainerType.inputs: 2, ContainerType.crashes: 1},
|
||||
test_repro=False,
|
||||
),
|
||||
"linux-libfuzzer-dotnet-dll": Integration(
|
||||
template=TemplateType.libfuzzer_dotnet_dll,
|
||||
os=OS.linux,
|
||||
setup_dir="GoodBadDotnet",
|
||||
target_exe="GoodBadDotnet/GoodBad.dll",
|
||||
target_options=["-max_len=4", "-only_ascii=1", "-seed=1"],
|
||||
@ -245,8 +234,8 @@ TARGETS: Dict[str, Integration] = {
|
||||
},
|
||||
use_setup=True,
|
||||
),
|
||||
"windows-libfuzzer-dotnet-dll": Integration(
|
||||
template=TemplateType.libfuzzer_dotnet_dll,
|
||||
"windows-libfuzzer-dotnet": Integration(
|
||||
template=TemplateType.libfuzzer_dotnet,
|
||||
os=OS.windows,
|
||||
setup_dir="GoodBadDotnet",
|
||||
target_exe="GoodBadDotnet/GoodBad.dll",
|
||||
|
@ -1,5 +0,0 @@
|
||||
problems/obj
|
||||
problems/bin
|
||||
wrapper/obj
|
||||
wrapper/bin
|
||||
my-fuzzer
|
@ -1,24 +0,0 @@
|
||||
all: check
|
||||
|
||||
libfuzzer-dotnet:
|
||||
mkdir -p my-fuzzer
|
||||
# direct url to a known-good instance of libfuzzer-dotnet.cc
|
||||
curl -o libfuzzer-dotnet.cc https://raw.githubusercontent.com/Metalnem/libfuzzer-dotnet/543b170a67bdd39e9ba260fe54bc93c77b877c24/libfuzzer-dotnet.cc
|
||||
clang -fsanitize=fuzzer libfuzzer-dotnet.cc -o my-fuzzer/libfuzzer-dotnet
|
||||
rm -f libfuzzer-dotnet.cc
|
||||
|
||||
build-harness: libfuzzer-dotnet
|
||||
dotnet tool install --global SharpFuzz.CommandLine || echo already installed
|
||||
dotnet publish ./wrapper/wrapper.csproj -c release -o my-fuzzer -r linux-x64
|
||||
sharpfuzz my-fuzzer/problems.dll || echo already instrumented
|
||||
|
||||
check: build-harness
|
||||
./my-fuzzer/libfuzzer-dotnet --target_path=./my-fuzzer/wrapper -runs=1
|
||||
|
||||
fuzz: check
|
||||
./my-fuzzer/libfuzzer-dotnet --target_path=./my-fuzzer/wrapper
|
||||
|
||||
.PHONY: clean
|
||||
|
||||
clean:
|
||||
rm -rf fuzz.exe libfuzzer-dotnet my-fuzzer wrapper/bin wrapper/obj problems/bin problems/obj
|
@ -1 +0,0 @@
|
||||
hi
|
@ -1,15 +0,0 @@
|
||||
using System;
|
||||
namespace Problems {
|
||||
public static class Problems {
|
||||
public static void Func(ReadOnlySpan<byte> data) {
|
||||
var count = 0;
|
||||
if (data.Length < 4) {
|
||||
return;
|
||||
}
|
||||
if (data[0] == 0) { count++; }
|
||||
if (data[1] == 1) { count++; }
|
||||
if (data[2] == 2) { count++; }
|
||||
if (count >= 3) { throw new Exception("this is bad"); }
|
||||
}
|
||||
}
|
||||
}
|
@ -1,7 +0,0 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<TargetFramework>netstandard2.1</TargetFramework>
|
||||
</PropertyGroup>
|
||||
|
||||
</Project>
|
@ -1,8 +0,0 @@
|
||||
using SharpFuzz;
|
||||
namespace Wrapper {
|
||||
public class Program {
|
||||
public static void Main(string[] args) {
|
||||
Fuzzer.LibFuzzer.Run(stream => { Problems.Problems.Func(stream); });
|
||||
}
|
||||
}
|
||||
}
|
@ -1,15 +0,0 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\problems\problems.csproj" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="SharpFuzz" Version="1.6.1" />
|
||||
</ItemGroup>
|
||||
|
||||
<PropertyGroup>
|
||||
<OutputType>Exe</OutputType>
|
||||
<TargetFramework>netcoreapp3.1</TargetFramework>
|
||||
</PropertyGroup>
|
||||
|
||||
</Project>
|
Reference in New Issue
Block a user