1*4b67fc10Sgson# $NetBSD: t_execsnoop.sh,v 1.11 2021/07/29 14:58:35 gson Exp $ 28b2d29b6Sjruoho# 38b2d29b6Sjruoho# Copyright (c) 2020 The NetBSD Foundation, Inc. 48b2d29b6Sjruoho# All rights reserved. 58b2d29b6Sjruoho# 68b2d29b6Sjruoho# This code is derived from software contributed to The NetBSD Foundation 78b2d29b6Sjruoho# by Jukka Ruohonen. 88b2d29b6Sjruoho# 98b2d29b6Sjruoho# Redistribution and use in source and binary forms, with or without 108b2d29b6Sjruoho# modification, are permitted provided that the following conditions 118b2d29b6Sjruoho# are met: 128b2d29b6Sjruoho# 1. Redistributions of source code must retain the above copyright 138b2d29b6Sjruoho# notice, this list of conditions and the following disclaimer. 148b2d29b6Sjruoho# 2. Redistributions in binary form must reproduce the above copyright 158b2d29b6Sjruoho# notice, this list of conditions and the following disclaimer in the 168b2d29b6Sjruoho# documentation and/or other materials provided with the distribution. 178b2d29b6Sjruoho# 188b2d29b6Sjruoho# THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS 198b2d29b6Sjruoho# ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED 208b2d29b6Sjruoho# TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 218b2d29b6Sjruoho# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS 228b2d29b6Sjruoho# BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 238b2d29b6Sjruoho# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 248b2d29b6Sjruoho# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 258b2d29b6Sjruoho# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 268b2d29b6Sjruoho# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 278b2d29b6Sjruoho# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 288b2d29b6Sjruoho# POSSIBILITY OF SUCH DAMAGE. 298b2d29b6Sjruoho# 301cb69d41Sgsonstdout="execsnoop.out" 311cb69d41Sgsonstderr="execsnoop.stderr" 328b2d29b6Sjruoho 338b2d29b6Sjruohoatf_test_case basic cleanup 348b2d29b6Sjruohobasic_head() { 358b2d29b6Sjruoho atf_set "require.user" "root" 368b2d29b6Sjruoho atf_set "require.progs" "execsnoop" 378b2d29b6Sjruoho atf_set "descr" "Test that DTrace's execsnoop works (cf. kern/53417)" 388b2d29b6Sjruoho} 398b2d29b6Sjruoho 408b2d29b6Sjruohobasic_body() { 41*4b67fc10Sgson if 42*4b67fc10Sgson ! modstat dtrace_syscall | grep dtrace_syscall && 43*4b67fc10Sgson ! modstat -A 44*4b67fc10Sgson then 45*4b67fc10Sgson atf_skip "dtrace_syscall module not loaded and can't be autoloaded" 46*4b67fc10Sgson fi 47*4b67fc10Sgson 488b2d29b6Sjruoho n=10 491cb69d41Sgson atf_check -s exit:0 -o ignore -e empty -x "execsnoop >$stdout 2>$stderr &" 5000195ad3Sgson sleep 5 518b2d29b6Sjruoho 528b2d29b6Sjruoho while [ $n -gt 0 ]; do 538b2d29b6Sjruoho whoami 548b2d29b6Sjruoho n=$(expr $n - 1) 558b2d29b6Sjruoho done 568b2d29b6Sjruoho 5750e48534Sjruoho sleep 5 588b2d29b6Sjruoho 591cb69d41Sgson cat $stderr >&2 601cb69d41Sgson 611cb69d41Sgson if [ ! $(cat $stdout | grep "whoami" | wc -l) -eq 10 ]; then 628b2d29b6Sjruoho atf_fail "execsnoop does not work" 638b2d29b6Sjruoho fi 648b2d29b6Sjruoho 658b2d29b6Sjruoho atf_pass 668b2d29b6Sjruoho} 678b2d29b6Sjruoho 688b2d29b6Sjruohobasic_cleanup() { 698b2d29b6Sjruoho} 708b2d29b6Sjruoho 718b2d29b6Sjruohoatf_init_test_cases() { 728b2d29b6Sjruoho atf_add_test_case basic 738b2d29b6Sjruoho} 74