afplusplus: format

This commit is contained in:
Sigmanificient
2024-07-15 23:54:16 +02:00
parent 33ce82fab4
commit 0d66f562a7
4 changed files with 193 additions and 145 deletions
+92 -52
View File
@@ -1,8 +1,22 @@
{ lib, stdenv, stdenvNoCC, fetchFromGitHub, callPackage, makeWrapper
, clang, llvm, gcc, which, libcgroup, python3, perl, gmp
, file, wine ? null
, cmocka
, llvmPackages
{
lib,
stdenv,
stdenvNoCC,
fetchFromGitHub,
callPackage,
makeWrapper,
clang,
llvm,
gcc,
which,
libcgroup,
python3,
perl,
gmp,
file,
wine ? null,
cmocka,
llvmPackages,
}:
# wine fuzzing is only known to work for win32 binaries, and using a mixture of
@@ -12,9 +26,13 @@ assert (wine != null) -> (stdenv.targetPlatform.system == "i686-linux");
let
aflplusplus-qemu = callPackage ./qemu.nix { };
qemu-exe-name = if stdenv.targetPlatform.system == "x86_64-linux" then "qemu-x86_64"
else if stdenv.targetPlatform.system == "i686-linux" then "qemu-i386"
else throw "aflplusplus: no support for ${stdenv.targetPlatform.system}!";
qemu-exe-name =
if stdenv.targetPlatform.system == "x86_64-linux" then
"qemu-x86_64"
else if stdenv.targetPlatform.system == "i686-linux" then
"qemu-i386"
else
throw "aflplusplus: no support for ${stdenv.targetPlatform.system}!";
libdislocator = callPackage ./libdislocator.nix { inherit aflplusplus; };
libtokencap = callPackage ./libtokencap.nix { inherit aflplusplus; };
aflplusplus = stdenvNoCC.mkDerivation rec {
@@ -32,9 +50,18 @@ let
# Note: libcgroup isn't needed for building, just for the afl-cgroup
# script.
nativeBuildInputs = [ makeWrapper which clang gcc ];
buildInputs = [ llvm python3 gmp llvmPackages.bintools ]
++ lib.optional (wine != null) python3.pkgs.wrapPython;
nativeBuildInputs = [
makeWrapper
which
clang
gcc
];
buildInputs = [
llvm
python3
gmp
llvmPackages.bintools
] ++ lib.optional (wine != null) python3.pkgs.wrapPython;
# Flag is already set by package and causes some compiler warnings.
# warning: "_FORTIFY_SOURCE" redefined
@@ -88,50 +115,56 @@ let
runHook postBuild
'';
postInstall = ''
# remove afl-clang(++) which are just symlinks to afl-clang-fast
rm $out/bin/afl-clang $out/bin/afl-clang++
postInstall =
''
# remove afl-clang(++) which are just symlinks to afl-clang-fast
rm $out/bin/afl-clang $out/bin/afl-clang++
# the makefile neglects to install unsigaction
cp qemu_mode/unsigaction/unsigaction*.so $out/lib/afl/
# the makefile neglects to install unsigaction
cp qemu_mode/unsigaction/unsigaction*.so $out/lib/afl/
# Install the custom QEMU emulator for binary blob fuzzing.
ln -s ${aflplusplus-qemu}/bin/${qemu-exe-name} $out/bin/afl-qemu-trace
# Install the custom QEMU emulator for binary blob fuzzing.
ln -s ${aflplusplus-qemu}/bin/${qemu-exe-name} $out/bin/afl-qemu-trace
# give user a convenient way of accessing libcompconv.so, libdislocator.so, libtokencap.so
cat > $out/bin/get-afl-qemu-libcompcov-so <<END
#!${stdenv.shell}
echo $out/lib/afl/libcompcov.so
END
chmod +x $out/bin/get-afl-qemu-libcompcov-so
ln -s ${libdislocator}/bin/get-libdislocator-so $out/bin/
ln -s ${libtokencap}/bin/get-libtokencap-so $out/bin/
# give user a convenient way of accessing libcompconv.so, libdislocator.so, libtokencap.so
cat > $out/bin/get-afl-qemu-libcompcov-so <<END
#!${stdenv.shell}
echo $out/lib/afl/libcompcov.so
END
chmod +x $out/bin/get-afl-qemu-libcompcov-so
ln -s ${libdislocator}/bin/get-libdislocator-so $out/bin/
ln -s ${libtokencap}/bin/get-libtokencap-so $out/bin/
# Install the cgroups wrapper for asan-based fuzzing.
cp utils/asan_cgroups/limit_memory.sh $out/bin/afl-cgroup
chmod +x $out/bin/afl-cgroup
substituteInPlace $out/bin/afl-cgroup \
--replace-fail "cgcreate" "${libcgroup}/bin/cgcreate" \
--replace-fail "cgexec" "${libcgroup}/bin/cgexec" \
--replace-fail "cgdelete" "${libcgroup}/bin/cgdelete"
# Install the cgroups wrapper for asan-based fuzzing.
cp utils/asan_cgroups/limit_memory.sh $out/bin/afl-cgroup
chmod +x $out/bin/afl-cgroup
substituteInPlace $out/bin/afl-cgroup \
--replace-fail "cgcreate" "${libcgroup}/bin/cgcreate" \
--replace-fail "cgexec" "${libcgroup}/bin/cgexec" \
--replace-fail "cgdelete" "${libcgroup}/bin/cgdelete"
patchShebangs $out/bin
patchShebangs $out/bin
'' + lib.optionalString (wine != null) ''
substitute afl-wine-trace $out/bin/afl-wine-trace \
--replace-fail "qemu_mode/unsigaction" "$out/lib/afl"
chmod +x $out/bin/afl-wine-trace
''
+ lib.optionalString (wine != null) ''
substitute afl-wine-trace $out/bin/afl-wine-trace \
--replace-fail "qemu_mode/unsigaction" "$out/lib/afl"
chmod +x $out/bin/afl-wine-trace
# qemu needs to be fed ELFs, not wrapper scripts, so we have to cheat a bit if we
# detect a wrapped wine
for winePath in ${wine}/bin/.wine ${wine}/bin/wine; do
if [ -x $winePath ]; then break; fi
done
makeWrapperArgs="--set-default 'AFL_WINE_PATH' '$winePath'" \
wrapPythonProgramsIn $out/bin ${python3.pkgs.pefile}
'';
# qemu needs to be fed ELFs, not wrapper scripts, so we have to cheat a bit if we
# detect a wrapped wine
for winePath in ${wine}/bin/.wine ${wine}/bin/wine; do
if [ -x $winePath ]; then break; fi
done
makeWrapperArgs="--set-default 'AFL_WINE_PATH' '$winePath'" \
wrapPythonProgramsIn $out/bin ${python3.pkgs.pefile}
'';
nativeInstallCheckInputs = [ perl file cmocka ];
nativeInstallCheckInputs = [
perl
file
cmocka
];
doInstallCheck = true;
installCheckPhase = ''
runHook preInstallCheck
@@ -166,10 +199,17 @@ let
Heavily enhanced version of AFL, incorporating many features
and improvements from the community
'';
homepage = "https://aflplus.plus";
license = lib.licenses.asl20;
platforms = ["x86_64-linux" "i686-linux"];
maintainers = with lib.maintainers; [ ris mindavi ];
homepage = "https://aflplus.plus";
license = lib.licenses.asl20;
platforms = [
"x86_64-linux"
"i686-linux"
];
maintainers = with lib.maintainers; [
ris
mindavi
];
};
};
in aflplusplus
in
aflplusplus
@@ -1,4 +1,8 @@
{ lib, stdenv, aflplusplus}:
{
lib,
stdenv,
aflplusplus,
}:
stdenv.mkDerivation {
version = lib.getVersion aflplusplus;
@@ -1,4 +1,8 @@
{ lib, stdenv, aflplusplus}:
{
lib,
stdenv,
aflplusplus,
}:
stdenv.mkDerivation {
version = lib.getVersion aflplusplus;
+91 -91
View File
@@ -1,18 +1,19 @@
{ lib
, stdenv
, python3
, zlib
, pkg-config
, glib
, perl
, texinfo
, libuuid
, flex
, bison
, pixman
, meson
, fetchFromGitHub
, ninja
{
lib,
stdenv,
python3,
zlib,
pkg-config,
glib,
perl,
texinfo,
libuuid,
flex,
bison,
pixman,
meson,
fetchFromGitHub,
ninja,
}:
let
@@ -58,82 +59,81 @@ stdenv.mkDerivation {
patchShebangs .
'';
configureFlags =
[
"--target-list=${stdenv.hostPlatform.uname.processor}-linux-user"
"--sysconfdir=/etc"
"--localstatedir=/var"
"--meson=meson"
"--disable-system"
"--enable-linux-user"
"--enable-pie"
"--audio-drv-list="
"--disable-blobs"
"--disable-bochs"
"--disable-brlapi"
"--disable-bsd-user"
"--disable-bzip2"
"--disable-cap-ng"
"--disable-cloop"
"--disable-curl"
"--disable-curses"
"--disable-dmg"
"--disable-fdt"
"--disable-gcrypt"
"--disable-glusterfs"
"--disable-gnutls"
"--disable-gtk"
"--disable-guest-agent"
"--disable-iconv"
"--disable-libiscsi"
"--disable-libnfs"
"--disable-libssh"
"--disable-libusb"
"--disable-linux-aio"
"--disable-live-block-migration"
"--disable-lzo"
"--disable-nettle"
"--disable-numa"
"--disable-opengl"
"--disable-parallels"
"--disable-plugins"
"--disable-qcow1"
"--disable-qed"
"--disable-rbd"
"--disable-rdma"
"--disable-replication"
"--disable-sdl"
"--disable-seccomp"
"--disable-sheepdog"
"--disable-smartcard"
"--disable-snappy"
"--disable-spice"
"--disable-system"
"--disable-tools"
"--disable-tpm"
"--disable-usb-redir"
"--disable-vde"
"--disable-vdi"
"--disable-vhost-crypto"
"--disable-vhost-kernel"
"--disable-vhost-net"
"--disable-vhost-scsi"
"--disable-vhost-user"
"--disable-vhost-vdpa"
"--disable-vhost-vsock"
"--disable-virglrenderer"
"--disable-virtfs"
"--disable-vnc"
"--disable-vnc-jpeg"
"--disable-vnc-png"
"--disable-vnc-sasl"
"--disable-vte"
"--disable-vvfat"
"--disable-xen"
"--disable-xen-pci-passthrough"
"--disable-xfsctl"
"--without-default-devices"
];
configureFlags = [
"--target-list=${stdenv.hostPlatform.uname.processor}-linux-user"
"--sysconfdir=/etc"
"--localstatedir=/var"
"--meson=meson"
"--disable-system"
"--enable-linux-user"
"--enable-pie"
"--audio-drv-list="
"--disable-blobs"
"--disable-bochs"
"--disable-brlapi"
"--disable-bsd-user"
"--disable-bzip2"
"--disable-cap-ng"
"--disable-cloop"
"--disable-curl"
"--disable-curses"
"--disable-dmg"
"--disable-fdt"
"--disable-gcrypt"
"--disable-glusterfs"
"--disable-gnutls"
"--disable-gtk"
"--disable-guest-agent"
"--disable-iconv"
"--disable-libiscsi"
"--disable-libnfs"
"--disable-libssh"
"--disable-libusb"
"--disable-linux-aio"
"--disable-live-block-migration"
"--disable-lzo"
"--disable-nettle"
"--disable-numa"
"--disable-opengl"
"--disable-parallels"
"--disable-plugins"
"--disable-qcow1"
"--disable-qed"
"--disable-rbd"
"--disable-rdma"
"--disable-replication"
"--disable-sdl"
"--disable-seccomp"
"--disable-sheepdog"
"--disable-smartcard"
"--disable-snappy"
"--disable-spice"
"--disable-system"
"--disable-tools"
"--disable-tpm"
"--disable-usb-redir"
"--disable-vde"
"--disable-vdi"
"--disable-vhost-crypto"
"--disable-vhost-kernel"
"--disable-vhost-net"
"--disable-vhost-scsi"
"--disable-vhost-user"
"--disable-vhost-vdpa"
"--disable-vhost-vsock"
"--disable-virglrenderer"
"--disable-virtfs"
"--disable-vnc"
"--disable-vnc-jpeg"
"--disable-vnc-png"
"--disable-vnc-sasl"
"--disable-vte"
"--disable-vvfat"
"--disable-xen"
"--disable-xen-pci-passthrough"
"--disable-xfsctl"
"--without-default-devices"
];
meta = {
homepage = "https://github.com/AFLplusplus/qemuafl";