#
# 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=""
--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
--- /dev/null
+#!/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
# 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
}
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")