afplusplus: format
This commit is contained in:
@@ -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;
|
||||
|
||||
@@ -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";
|
||||
|
||||
Reference in New Issue
Block a user