Fix fuzz projects (#10416)
This commit is contained in:
parent
028b2122ce
commit
b16033df03
|
@ -6,6 +6,7 @@ using Emby.Server.Implementations.Library;
|
||||||
using MediaBrowser.Controller;
|
using MediaBrowser.Controller;
|
||||||
using MediaBrowser.Controller.Entities;
|
using MediaBrowser.Controller.Entities;
|
||||||
using MediaBrowser.Model.Entities;
|
using MediaBrowser.Model.Entities;
|
||||||
|
using Microsoft.Extensions.Configuration;
|
||||||
using Moq;
|
using Moq;
|
||||||
using SharpFuzz;
|
using SharpFuzz;
|
||||||
|
|
||||||
|
@ -54,8 +55,16 @@ namespace Emby.Server.Implementations.Fuzz
|
||||||
appHost.Setup(x => x.ReverseVirtualPath(It.IsAny<string>()))
|
appHost.Setup(x => x.ReverseVirtualPath(It.IsAny<string>()))
|
||||||
.Returns((string x) => x.Replace(MetaDataPath, VirtualMetaDataPath, StringComparison.Ordinal));
|
.Returns((string x) => x.Replace(MetaDataPath, VirtualMetaDataPath, StringComparison.Ordinal));
|
||||||
|
|
||||||
|
var configSection = new Mock<IConfigurationSection>();
|
||||||
|
configSection.SetupGet(x => x[It.Is<string>(s => s == MediaBrowser.Controller.Extensions.ConfigurationExtensions.SqliteCacheSizeKey)])
|
||||||
|
.Returns("0");
|
||||||
|
var config = new Mock<IConfiguration>();
|
||||||
|
config.Setup(x => x.GetSection(It.Is<string>(s => s == MediaBrowser.Controller.Extensions.ConfigurationExtensions.SqliteCacheSizeKey)))
|
||||||
|
.Returns(configSection.Object);
|
||||||
|
|
||||||
IFixture fixture = new Fixture().Customize(new AutoMoqCustomization { ConfigureMembers = true });
|
IFixture fixture = new Fixture().Customize(new AutoMoqCustomization { ConfigureMembers = true });
|
||||||
fixture.Inject(appHost);
|
fixture.Inject(appHost);
|
||||||
|
fixture.Inject(config);
|
||||||
return fixture.Create<SqliteItemRepository>();
|
return fixture.Create<SqliteItemRepository>();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -8,4 +8,4 @@ cp bin/Emby.Server.Implementations.dll .
|
||||||
|
|
||||||
dotnet build
|
dotnet build
|
||||||
mkdir -p Findings
|
mkdir -p Findings
|
||||||
AFL_SKIP_BIN_CHECK=1 afl-fuzz -i "Testcases/$1" -o "Findings/$1" -t 5000 -m 10240 dotnet bin/Debug/net6.0/Emby.Server.Implementations.Fuzz.dll "$1"
|
AFL_SKIP_BIN_CHECK=1 afl-fuzz -i "Testcases/$1" -o "Findings/$1" -t 5000 ./bin/Debug/net7.0/Emby.Server.Implementations.Fuzz "$1"
|
||||||
|
|
|
@ -6,8 +6,8 @@
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Reference Include="Jellyfin.Server">
|
<Reference Include="Jellyfin.Api">
|
||||||
<HintPath>jellyfin.dll</HintPath>
|
<HintPath>Jellyfin.Api.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
|
@ -1,12 +1,12 @@
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using Jellyfin.Server.Middleware;
|
using Jellyfin.Api.Middleware;
|
||||||
using Microsoft.AspNetCore.Http;
|
using Microsoft.AspNetCore.Http;
|
||||||
using Microsoft.AspNetCore.Http.Features;
|
using Microsoft.AspNetCore.Http.Features;
|
||||||
using Microsoft.Extensions.Primitives;
|
using Microsoft.Extensions.Primitives;
|
||||||
using SharpFuzz;
|
using SharpFuzz;
|
||||||
|
|
||||||
namespace Emby.Server.Implementations.Fuzz
|
namespace Jellyfin.Api.Fuzz
|
||||||
{
|
{
|
||||||
public static class Program
|
public static class Program
|
||||||
{
|
{
|
11
fuzz/Jellyfin.Api.Fuzz/fuzz.sh
Executable file
11
fuzz/Jellyfin.Api.Fuzz/fuzz.sh
Executable file
|
@ -0,0 +1,11 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
set -e
|
||||||
|
|
||||||
|
dotnet build -c Release ../../Jellyfin.Api/Jellyfin.Api.csproj --output bin
|
||||||
|
sharpfuzz bin/Jellyfin.Api.dll
|
||||||
|
cp bin/Jellyfin.Api.dll .
|
||||||
|
|
||||||
|
dotnet build
|
||||||
|
mkdir -p Findings
|
||||||
|
AFL_SKIP_BIN_CHECK=1 afl-fuzz -i "Testcases/$1" -o "Findings/$1" -t 5000 ./bin/Debug/net7.0/Jellyfin.Api.Fuzz "$1"
|
|
@ -1,11 +0,0 @@
|
||||||
#!/bin/sh
|
|
||||||
|
|
||||||
set -e
|
|
||||||
|
|
||||||
dotnet build -c Release ../../Jellyfin.Server/Jellyfin.Server.csproj --output bin
|
|
||||||
sharpfuzz bin/jellyfin.dll
|
|
||||||
cp bin/jellyfin.dll .
|
|
||||||
|
|
||||||
dotnet build
|
|
||||||
mkdir -p Findings
|
|
||||||
AFL_SKIP_BIN_CHECK=1 afl-fuzz -i "Testcases/$1" -o "Findings/$1" -t 5000 -m 10240 dotnet bin/Debug/net6.0/Jellyfin.Server.Fuzz.dll "$1"
|
|
20
fuzz/README.md
Normal file
20
fuzz/README.md
Normal file
|
@ -0,0 +1,20 @@
|
||||||
|
# Jellyfin fuzzing
|
||||||
|
|
||||||
|
## Setup
|
||||||
|
|
||||||
|
Install AFL++
|
||||||
|
```sh
|
||||||
|
git clone https://github.com/AFLplusplus/AFLplusplus
|
||||||
|
cd AFLplusplus
|
||||||
|
make all
|
||||||
|
sudo make install
|
||||||
|
```
|
||||||
|
|
||||||
|
Install SharpFuzz.CommandLine global .NET tool
|
||||||
|
```sh
|
||||||
|
dotnet tool install --global SharpFuzz.CommandLine
|
||||||
|
```
|
||||||
|
|
||||||
|
## Running
|
||||||
|
Run the `fuzz.sh` in the directory corresponding to the project you want to fuzz.
|
||||||
|
The script takes a parameter of which fuzz case you want to run.
|
|
@ -1,12 +1,11 @@
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using Jellyfin.Api.Middleware;
|
|
||||||
using Microsoft.AspNetCore.Http;
|
using Microsoft.AspNetCore.Http;
|
||||||
using Microsoft.AspNetCore.Http.Features;
|
using Microsoft.AspNetCore.Http.Features;
|
||||||
using Microsoft.Extensions.Primitives;
|
using Microsoft.Extensions.Primitives;
|
||||||
using Xunit;
|
using Xunit;
|
||||||
|
|
||||||
namespace Jellyfin.Server.Tests
|
namespace Jellyfin.Api.Middleware.Tests
|
||||||
{
|
{
|
||||||
public static class UrlDecodeQueryFeatureTests
|
public static class UrlDecodeQueryFeatureTests
|
||||||
{
|
{
|
Loading…
Reference in New Issue
Block a user