#!/bin/sh # # Check -bexecve behavior. # # Copyright (c) 2015 Dmitry V. Levin # Copyright (c) 2015-2020 The strace developers. # All rights reserved. # # SPDX-License-Identifier: GPL-2.0-or-later . "${srcdir=.}/init.sh" run_strace_redir() { args="$*" $STRACE "$@" 2> "$LOG" } run_strace_redir --quiet=personality -enone ../set_ptracer_any true || dump_log_and_fail_with "$STRACE $args: unexpected exit status" run_strace_redir --quiet=personality -enone ../set_ptracer_any false [ $? -eq 1 ] || dump_log_and_fail_with "$STRACE $args: unexpected exit status" run_strace_redir --quiet=personality -bexecve -enone ../set_ptracer_any false || dump_log_and_fail_with "$STRACE $args: unexpected exit status" pattern_detached='[^:]*strace: Process [1-9][0-9]* detached' LC_ALL=C grep -x "$pattern_detached" "$LOG" > /dev/null || dump_log_and_fail_with "$STRACE $args: output mismatch" if LC_ALL=C grep -E -v -x "$pattern_detached" "$LOG" > /dev/null; then dump_log_and_fail_with "$STRACE $args: unexpected output" fi run_strace_redir --quiet=personality --seccomp-bpf -bexecve -enone ../set_ptracer_any false || dump_log_and_fail_with "$STRACE $args: unexpected exit status" pattern_seccomp='[^:]*strace: --seccomp-bpf is not enabled because it is not compatible with -b' LC_ALL=C grep -x "$pattern_detached" "$LOG" > /dev/null && LC_ALL=C grep -x "$pattern_seccomp" "$LOG" > /dev/null || dump_log_and_fail_with "$STRACE $args: output mismatch" pattern_all="$pattern_detached|$pattern_seccomp" if LC_ALL=C grep -E -v -x "$pattern_all" "$LOG" > /dev/null; then dump_log_and_fail_with "$STRACE $args: unexpected output" fi exit 0