From 1e8806417037f977c73f41d036968f74a6126641 Mon Sep 17 00:00:00 2001 From: Andreas Schneider Date: Sat, 19 Feb 2022 16:08:16 +0100 Subject: [PATCH] lib:fuzzing: Reformat shell scripts shfmt -f lib/fuzzing/ | xargs shfmt -w -p -i 0 -fn Signed-off-by: Andreas Schneider Reviewed-by: Andrew Bartlett --- lib/fuzzing/oss-fuzz/build_image.sh | 2 +- lib/fuzzing/oss-fuzz/check_build.sh | 47 +++++++++--------- lib/fuzzing/oss-fuzz/do_build.sh | 77 ++++++++++++++--------------- 3 files changed, 62 insertions(+), 64 deletions(-) diff --git a/lib/fuzzing/oss-fuzz/build_image.sh b/lib/fuzzing/oss-fuzz/build_image.sh index 5d5e27e716d..62a626bdff5 100755 --- a/lib/fuzzing/oss-fuzz/build_image.sh +++ b/lib/fuzzing/oss-fuzz/build_image.sh @@ -1,7 +1,7 @@ #!/bin/sh -e DIST=ubuntu2004 -SCRIPT_DIR=`dirname $0` +SCRIPT_DIR=$(dirname $0) $SCRIPT_DIR/../../../bootstrap/generated-dists/$DIST/bootstrap.sh $SCRIPT_DIR/../../../bootstrap/generated-dists/$DIST/locale.sh diff --git a/lib/fuzzing/oss-fuzz/check_build.sh b/lib/fuzzing/oss-fuzz/check_build.sh index 98b83a81bbf..6523bf32ace 100755 --- a/lib/fuzzing/oss-fuzz/check_build.sh +++ b/lib/fuzzing/oss-fuzz/check_build.sh @@ -16,34 +16,33 @@ OUT=$1 seeds_found=no -for bin in $OUT/fuzz_* -do - # we only want to look at the elf files, not the zips - if [ ${bin%_seed_corpus.zip} != $bin ]; then - continue - fi - # Confirm that the chrpath was reset to lib/ in the same directory - # as the binary. RPATH (not RUNPATH) is critical, otherwise - # libraries used by libraries won't be found on the oss-fuzz - # target host. - chrpath -l $bin | grep 'RPATH=$ORIGIN/lib' +for bin in $OUT/fuzz_*; do + # we only want to look at the elf files, not the zips + if [ ${bin%_seed_corpus.zip} != $bin ]; then + continue + fi + # Confirm that the chrpath was reset to lib/ in the same directory + # as the binary. RPATH (not RUNPATH) is critical, otherwise + # libraries used by libraries won't be found on the oss-fuzz + # target host. + chrpath -l $bin | grep 'RPATH=$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" - num_libs=$(ldd $bin | grep -v ld-linux | grep -v linux-vdso | grep -v "$OUT/lib"| wc -l) + # 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" + num_libs=$(ldd $bin | grep -v ld-linux | grep -v linux-vdso | grep -v "$OUT/lib" | wc -l) - if [ 0$num_libs -ne 0 ]; then - echo "some libraries not linked to $ORIGIN/lib, oss-fuzz will fail!" - exit 1 - fi + if [ 0$num_libs -ne 0 ]; then + echo "some libraries not linked to $ORIGIN/lib, oss-fuzz will fail!" + exit 1 + fi - if [ -f ${bin}_seed_corpus.zip ]; then - seeds_found=yes - fi + if [ -f ${bin}_seed_corpus.zip ]; then + seeds_found=yes + fi done if [ $seeds_found = no ]; then - echo "no seed zip files were found!" - exit 1 + echo "no seed zip files were found!" + exit 1 fi diff --git a/lib/fuzzing/oss-fuzz/do_build.sh b/lib/fuzzing/oss-fuzz/do_build.sh index 159e9579155..3b2fdd0da94 100755 --- a/lib/fuzzing/oss-fuzz/do_build.sh +++ b/lib/fuzzing/oss-fuzz/do_build.sh @@ -56,13 +56,13 @@ export PYTHON # correctly case "$SANITIZER" in - address) +address) SANITIZER_ARG='--address-sanitizer' ;; - undefined) +undefined) SANITIZER_ARG='--undefined-sanitizer' ;; - coverage) +coverage) # Thankfully clang operating as ld has no objection to the # cc style options, so we can just set ADDITIONAL_LDFLAGS # to ensure the coverage build is done, despite waf splitting @@ -71,7 +71,7 @@ case "$SANITIZER" in export ADDITIONAL_LDFLAGS SANITIZER_ARG='' - ;; + ;; esac # $LIB_FUZZING_ENGINE is provided by the oss-fuzz "compile" command @@ -81,14 +81,14 @@ esac # header instead of RUNPATH header. Modern linkers use RUNPATH by # default. ./configure -C --without-gettext --enable-debug --enable-developer \ - --enable-libfuzzer \ - $SANITIZER_ARG \ - --disable-warnings-as-errors \ - --abi-check-disable \ - "--fuzz-target-ldflags=-Wl,--disable-new-dtags $LIB_FUZZING_ENGINE" \ - --nonshared-binary=ALL \ - "$@" \ - LINK_CC="$CXX" + --enable-libfuzzer \ + $SANITIZER_ARG \ + --disable-warnings-as-errors \ + --abi-check-disable \ + "--fuzz-target-ldflags=-Wl,--disable-new-dtags $LIB_FUZZING_ENGINE" \ + --nonshared-binary=ALL \ + "$@" \ + LINK_CC="$CXX" make -j @@ -236,37 +236,36 @@ mkdir -p $OUT/lib # See how the runtime linker seems to honour the RPATH for # dependencies of dependencies in this case. This helps us us lot. -for x in bin/fuzz_* -do - # Copy any system libraries needed by this fuzzer to $OUT/lib. +for x in bin/fuzz_*; do + # Copy any system libraries needed by this fuzzer to $OUT/lib. - # We run ldd on $x, the fuzz_binary in bin/ which has not yet had - # the RPATH altered. This is clearer for debugging in local - # development builds as $OUT is not cleaned between runs. - # - # Otherwise trying to re-run this can see cp can fail with: - # cp: '/out/lib/libgcc_s.so.1' and '/out/lib/libgcc_s.so.1' are the same file - # which is really confusing! + # We run ldd on $x, the fuzz_binary in bin/ which has not yet had + # the RPATH altered. This is clearer for debugging in local + # development builds as $OUT is not cleaned between runs. + # + # Otherwise trying to re-run this can see cp can fail with: + # cp: '/out/lib/libgcc_s.so.1' and '/out/lib/libgcc_s.so.1' are the same file + # which is really confusing! - # The cut for ( and ' ' removes the special case references to: - # linux-vdso.so.1 => (0x00007ffe8f2b2000) - # /lib64/ld-linux-x86-64.so.2 (0x00007fc63ea6f000) + # The cut for ( and ' ' removes the special case references to: + # linux-vdso.so.1 => (0x00007ffe8f2b2000) + # /lib64/ld-linux-x86-64.so.2 (0x00007fc63ea6f000) - ldd $x | cut -f 2 -d '>' | cut -f 1 -d \( | cut -f 2 -d ' ' | xargs -i cp \{\} $OUT/lib/ + ldd $x | cut -f 2 -d '>' | cut -f 1 -d \( | cut -f 2 -d ' ' | xargs -i cp \{\} $OUT/lib/ - cp $x $OUT/ - bin=`basename $x` + cp $x $OUT/ + bin=$(basename $x) - # This means the copied libraries are found on the runner. - # - # The binaries should we built with RPATH, not RUNPATH, to allow - # libraries used by libraries to be found. This command retains the - # RPATH/RUNPATH header and only changes the path. We later verify this - # in the check_build.sh script. - chrpath -r '$ORIGIN/lib' $OUT/$bin + # This means the copied libraries are found on the runner. + # + # The binaries should we built with RPATH, not RUNPATH, to allow + # libraries used by libraries to be found. This command retains the + # RPATH/RUNPATH header and only changes the path. We later verify this + # in the check_build.sh script. + chrpath -r '$ORIGIN/lib' $OUT/$bin - # Truncate the original binary to save space - echo -n > $x + # Truncate the original binary to save space + echo -n >$x done @@ -288,8 +287,8 @@ chrpath -d $OUT/lib/* # beside their executables. wget https://gitlab.com/samba-team/samba-fuzz-seeds/-/jobs/artifacts/master/download?job=zips \ - -O seeds.zip + -O seeds.zip # We might not have unzip, but we do have python -$PYTHON -mzipfile -e seeds.zip $OUT +$PYTHON -mzipfile -e seeds.zip $OUT rm -f seeds.zip