Home | History | Annotate | Download | only in src
      1 #!/bin/bash -e
      2 # Copyright 2018 The Chromium OS Authors. All rights reserved.
      3 # Use of this source code is governed by a BSD-style license that can be
      4 # found in the LICENSE file.
      5 
      6 base=$(dirname "$(readlink -m "$0")")
      7 log=$(mktemp)
      8 
      9 echo "FORTIFY..."
     10 # We run these tests under `script` because each FORTIFY failure, which these
     11 # cause *a lot* of, will complain directly to /dev/tty. For hosts, these
     12 # messages can easily drown out any other script output.
     13 if ! script -q -e -c "${base}/fortify-runtime-tests" "${log}" >/dev/null; then
     14   echo "${test} failed; see logs in ${log}."
     15   if grep -q '!!! Timeout reached' "${log}"; then
     16     echo "Looks like the test program timed out."
     17   else
     18     # Try to find and pretty-print the failure message(s).
     19     # The /Failures/ part of the script can't be a simple address range: if
     20     # we're printing _FORTIFY_SOURCE=1 errors, we might pick up the ":::
     21     # _FORTIFY_SOURCE=2 :::" header twice.
     22     sed -ne '/^:::/p' \
     23       -e '/^Failure(s): /{ p; :again; n; p; /^\s/b again; }' \
     24       "${log}"
     25   fi
     26 
     27   echo "FAIL"
     28   exit 1
     29 fi
     30 
     31 rm -f "${log}"
     32 echo "PASS"
     33