1
0
mirror of https://github.com/samba-team/samba.git synced 2025-03-09 08:58:35 +03:00

autobuild: extend autobuild with samba-fuzz job to build the fuzzers in AFL mode using oss-fuzz scripts

This helps ensure the build_samba.sh file keeps working and the fuzzers build
(because they are excluded from the main build).

This is not in the default autobuild because it uses too much
space on sn-devel (4GB).

Signed-off-by: Andrew Bartlett <abartlet@samba.org>
Reviewed-by: Gary Lockyer <gary@samba.org>
This commit is contained in:
Andrew Bartlett 2019-12-04 22:52:06 +13:00
parent d349d344f8
commit 0be0c044b6
4 changed files with 45 additions and 3 deletions

View File

@ -155,6 +155,9 @@ samba-libs:
samba-static:
extends: .shared_template
samba-fuzz:
extends: .shared_template
ctdb:
extends: .shared_template
@ -230,6 +233,7 @@ pages:
- samba-ad-dc-6
- samba-libs
- samba-static
- samba-fuzz
# - ctdb # TODO
- samba-ctdb
- samba-ad-dc-ntvfs

View File

@ -11,6 +11,9 @@
#
# CFLAGS are supplied by the caller, eg the oss-fuzz compile command
#
# Additional arguments are passed to configure, to allow this to be
# tested in autobuild.py
#
ADDITIONAL_CFLAGS="$CFLAGS"
export ADDITIONAL_CFLAGS
CFLAGS=""
@ -42,7 +45,9 @@ esac
--disable-warnings-as-errors \
--abi-check-disable \
--fuzz-target-ldflags="$LIB_FUZZING_ENGINE" \
--nonshared-binary=ALL LINK_CC="$CXX"
--nonshared-binary=ALL \
"$@" \
LINK_CC="$CXX"
make -j

View File

@ -0,0 +1,25 @@
#!/bin/sh -eux
#
# A very simple check script to confirm we still provide binaries
# that look like the targets oss-fuzz wants.
#
# A much stronger check is availble in oss-fuzz via
# infra/helper.py check_build samba
#
# oss-fuzz provides an OUT variable, so for clarity this script
# uses the same. See build_samba.sh
OUT=$1
# build_samba.sh will have put a non-zero number of fuzzers here. If
# there are none, this will fail as it becomes literally fuzz_*
for bin in $OUT/fuzz_*
do
# Confirm that the chrpath was reset to lib/ in the same directory
# as the binary
chrpath -l $bin | grep 'RUNPATH=$ORIGIN/lib'
# Confirm that we link to at least some libraries in this
# directory (shows that the libraries were found and copied).
ldd $bin | grep "$OUT/lib"
done

View File

@ -624,7 +624,14 @@ tasks = {
# retry with nonshared smbd and smbtorture
("nonshared-distclean", "make distclean"),
("nonshared-configure", "./configure.developer " + samba_configure_params + " --bundled-libraries=talloc,tdb,pytdb,ldb,pyldb,tevent,pytevent --with-static-modules=ALL --nonshared-binary=smbtorture,smbd/smbd"),
("nonshared-make", "make -j"),
("nonshared-make", "make -j")
],
"samba-fuzz": [
# build the fuzzers (static) via the oss-fuzz script
("fuzzers-mkdir-prefix", "mkdir -p ${PREFIX_DIR}"),
("fuzzers-build", "OUT=${PREFIX_DIR} LIB_FUZZING_ENGINE= SANITIZER=address CXX= CFLAGS= ./lib/fuzzing/oss-fuzz/build_samba.sh --enable-afl"),
("fuzzers-check", "./lib/fuzzing/oss-fuzz/check_build.sh ${PREFIX_DIR}")
],
# Test Samba without python still builds. When this test fails
@ -788,10 +795,11 @@ tasks = {
}
defaulttasks = list(tasks.keys())
defaulttasks.remove("pass")
defaulttasks.remove("fail")
defaulttasks.remove("samba-test-only")
defaulttasks.remove("samba-fuzz")
if os.environ.get("AUTOBUILD_SKIP_SAMBA_O3", "0") == "1":
defaulttasks.remove("samba-o3")