xref: /netbsd-src/tests/usr.sbin/execsnoop/t_execsnoop.sh (revision 4b67fc1050427fb575a535018c3c19179b8c5c63)
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