1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51
|
#!/bin/sh
#
# Check that strace does not leak placeholder descriptors.
#
# Copyright (c) 2016 Dmitry V. Levin <ldv@strace.io>
# Copyright (c) 2016-2021 The strace developers.
# All rights reserved.
#
# SPDX-License-Identifier: GPL-2.0-or-later
. "${srcdir=.}/init.sh"
case "$STRACE" in
*valgrind\ *--suppressions=*)
skip_ 'incompatible with valgrind' ;;
esac
fd0="$LOG.fd0"
fd1="$LOG.fd1"
fd2="$LOG.fd2"
check_prog touch
check_fd()
{
local a1 a2 a3
a1="$1"
a2="$2"
a3="$3"
rm -f "$LOG" "$fd0" "$fd1" "$fd2"
touch "$LOG" "$fd0" ||
framework_skip_ 'failed to create files'
set -- "\"../$NAME\"" "\"$1\"" "\"$2\"" "\"$3\""
eval "$@" "<${a1:-&-}" ">${a2:-&-}" "2>${a3:-&-}" ||
fail_ "$* failed with code $rc"
set -- "$STRACE" -o"$LOG" -echdir "$@"
eval "$@" "<${a1:-&-}" ">${a2:-&-}" "2>${a3:-&-}" ||
dump_log_and_fail_with "$* failed with code $?"
}
check_fd "$fd0" "$fd1" "$fd2"
check_fd '' "$fd1" "$fd2"
check_fd "$fd0" '' "$fd2"
check_fd "$fd0" "$fd1" ''
check_fd '' '' "$fd2"
check_fd '' "$fd1" ''
check_fd "$fd0" '' ''
check_fd '' '' ''
|