diff options
author | B. Watson <yalhcru@gmail.com> | 2017-07-30 11:52:56 +0700 |
---|---|---|
committer | Willy Sudiarto Raharjo <willysr@slackbuilds.org> | 2017-07-30 11:52:56 +0700 |
commit | 035d60b56447006a471162e264ee0c40748ff8ad (patch) | |
tree | 940a15269433bce6ba96d7a13312d2dca74fbc6c /development/afl/afl.SlackBuild | |
parent | 7ca054d2f4ad1fc56c4b81ec76301e7896ffd606 (diff) |
development/afl: Added (security-oriented fuzzer).
Signed-off-by: Willy Sudiarto Raharjo <willysr@slackbuilds.org>
Diffstat (limited to 'development/afl/afl.SlackBuild')
-rw-r--r-- | development/afl/afl.SlackBuild | 104 |
1 files changed, 104 insertions, 0 deletions
diff --git a/development/afl/afl.SlackBuild b/development/afl/afl.SlackBuild new file mode 100644 index 0000000000000..834efc27bec0f --- /dev/null +++ b/development/afl/afl.SlackBuild @@ -0,0 +1,104 @@ +#!/bin/sh + +# Slackware build script for afl + +# Written by B. Watson (yalhcru@gmail.com) + +# Licensed under the WTFPL. See http://www.wtfpl.net/txt/copying/ for details. + +PRGNAM=afl +VERSION=${VERSION:-2.49b} +BUILD=${BUILD:-1} +TAG=${TAG:-_SBo} + +if [ -z "$ARCH" ]; then + case "$( uname -m )" in + i?86) ARCH=i586 ;; + arm*) ARCH=arm ;; + *) ARCH=$( uname -m ) ;; + esac +fi + +CWD=$(pwd) +TMP=${TMP:-/tmp/SBo} +PKG=$TMP/package-$PRGNAM +OUTPUT=${OUTPUT:-/tmp} + +if [ "$ARCH" = "i586" ]; then + SLKCFLAGS="-O2 -march=i586 -mtune=i686" + LIBDIRSUFFIX="" +elif [ "$ARCH" = "i686" ]; then + SLKCFLAGS="-O2 -march=i686 -mtune=i686" + LIBDIRSUFFIX="" +elif [ "$ARCH" = "x86_64" ]; then + SLKCFLAGS="-O2 -fPIC" + LIBDIRSUFFIX="64" +else + SLKCFLAGS="-O2" + LIBDIRSUFFIX="" +fi + +set -e + +rm -rf $PKG +mkdir -p $TMP $PKG $OUTPUT +cd $TMP +rm -rf $PRGNAM-$VERSION +tar xvf $CWD/$PRGNAM-$VERSION.tgz +cd $PRGNAM-$VERSION +chown -R root:root . +find -L . \ + \( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \ + -o -perm 511 \) -exec chmod 755 {} \; -o \ + \( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \ + -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \; + +# apply slack cflags, tell gcc to create stripped binaries +sed -i "/^CFLAGS/s|-O3.*|$SLKCFLAGS -Wl,-s|" Makefile +sed -i "/^CFLAGS/s|-O3|$SLKCFLAGS|" qemu_mode/build_qemu_support.sh + +make \ + DESTDIR=$PKG \ + PREFIX=/usr \ + HELPER_PATH=/usr/lib$LIBDIRSUFFIX/$PRGNAM \ + DOC_PATH=/usr/doc/$PRGNAM-$VERSION \ + all \ + install + +# llvm fast mode looks useful, include it. +# comment this out if you're building on slack 14.1, its llvm is too old. +make -C llvm_mode +install -s -m0755 -oroot -groot afl-clang-fast $PKG/usr/bin +ln -s afl-clang-fast $PKG/usr/bin/afl-clang-fast++ + +WITHQEMU="without" + +# figure out the qemu source tarball name. N.B. update the README +# when this changes! +eval $( grep "^QEMU_URL=" qemu_mode/build_qemu_support.sh ) +QEMU_SRC="$( basename "$QEMU_URL" )" + +# optional qemu support, needed for fuzzing binary-only stuff, +# only built if $CWD contains the qemu source. +if [ -e "$CWD/$QEMU_SRC" ]; then + echo "=== qemu source \$CWD/$QEMU_SRC found" + cp "$CWD/$QEMU_SRC" qemu_mode + + cd qemu_mode + sh build_qemu_support.sh + cd - + + install -s -m0755 -oroot -groot afl-qemu-trace $PKG/usr/bin + WITHQEMU="with" +fi + +# 'make install' already put the docs where they belong. +# the experimental/ stuff is sample source code, include in docs. +cp -a experimental $PKG/usr/doc/$PRGNAM-$VERSION +cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild + +mkdir -p $PKG/install +sed "s,@WITHQEMU@,$WITHQEMU," $CWD/slack-desc > $PKG/install/slack-desc + +cd $PKG +/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz} |