| #!/bin/bash -e |
| # Copyright 2018 The Chromium OS Authors. All rights reserved. |
| # Use of this source code is governed by a BSD-style license that can be |
| # found in the LICENSE file. |
| |
| base=$(dirname "$(readlink -m "$0")") |
| log=$(mktemp) |
| |
| echo "FORTIFY..." |
| # We run these tests under `script` because each FORTIFY failure, which these |
| # cause *a lot* of, will complain directly to /dev/tty. For hosts, these |
| # messages can easily drown out any other script output. |
| if ! script -q -e -c "${base}/fortify-runtime-tests" "${log}" >/dev/null; then |
| echo "${test} failed; see logs in ${log}." |
| if grep -q '!!! Timeout reached' "${log}"; then |
| echo "Looks like the test program timed out." |
| else |
| # Try to find and pretty-print the failure message(s). |
| # The /Failures/ part of the script can't be a simple address range: if |
| # we're printing _FORTIFY_SOURCE=1 errors, we might pick up the "::: |
| # _FORTIFY_SOURCE=2 :::" header twice. |
| sed -ne '/^:::/p' \ |
| -e '/^Failure(s): /{ p; :again; n; p; /^\s/b again; }' \ |
| "${log}" |
| fi |
| |
| echo "FAIL" |
| exit 1 |
| fi |
| |
| rm -f "${log}" |
| echo "PASS" |