Module Name:    src
Committed By:   kre
Date:           Tue Feb 21 10:40:30 UTC 2017

Modified Files:
        src/distrib/sets/lists/tests: mi
        src/etc/mtree: NetBSD.dist.tests
        src/tests/usr.bin: Makefile
Added Files:
        src/tests/usr.bin/pkill: Makefile t_pgrep.sh

Log Message:
PR bin/50934

Add a test program for the bug described in this PR.
This is the first pkill/pgrep/prenice test (more would be good!)

This test has been confirmed to work once the bug described in the PR
has been fixed, so the test is not marked "expected to fail" even
though initially that is what should happen.

Note: the test cana also fail if the system running the tests happens
to be running processes with names that match the patterns searched for
by the test, other than the test program itself.  This is expected to be
unlikely.


To generate a diff of this commit:
cvs rdiff -u -r1.722 -r1.723 src/distrib/sets/lists/tests/mi
cvs rdiff -u -r1.141 -r1.142 src/etc/mtree/NetBSD.dist.tests
cvs rdiff -u -r1.23 -r1.24 src/tests/usr.bin/Makefile
cvs rdiff -u -r0 -r1.1 src/tests/usr.bin/pkill/Makefile \
    src/tests/usr.bin/pkill/t_pgrep.sh

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/distrib/sets/lists/tests/mi
diff -u src/distrib/sets/lists/tests/mi:1.722 src/distrib/sets/lists/tests/mi:1.723
--- src/distrib/sets/lists/tests/mi:1.722	Mon Feb 20 03:14:42 2017
+++ src/distrib/sets/lists/tests/mi	Tue Feb 21 10:40:30 2017
@@ -1,4 +1,4 @@
-# $NetBSD: mi,v 1.722 2017/02/20 03:14:42 kamil Exp $
+# $NetBSD: mi,v 1.723 2017/02/21 10:40:30 kre Exp $
 #
 # Note: don't delete entries from here - mark them as "obsolete" instead.
 #
@@ -3812,6 +3812,10 @@
 ./usr/tests/usr.bin/netpgpverify/Atffile		tests-usr.bin-tests	compattestfile,atf
 ./usr/tests/usr.bin/netpgpverify/Kyuafile		tests-usr.bin-tests	compattestfile,atf,kyua
 ./usr/tests/usr.bin/netpgpverify/t_netpgpverify		tests-usr.bin-tests	compattestfile,atf
+./usr/tests/usr.bin/pkill			tests-usr.bin-tests	compattestfile,atf
+./usr/tests/usr.bin/pkill/Atffile		tests-usr.bin-tests	compattestfile,atf
+./usr/tests/usr.bin/pkill/Kyuafile		tests-usr.bin-tests	compattestfile,atf,kyua
+./usr/tests/usr.bin/pkill/t_pgrep		tests-usr.bin-tests	compattestfile,atf
 ./usr/tests/usr.bin/pr				tests-usr.bin-tests	compattestfile,atf
 ./usr/tests/usr.bin/pr/Atffile			tests-usr.bin-tests	compattestfile,atf
 ./usr/tests/usr.bin/pr/Kyuafile			tests-usr.bin-tests	compattestfile,atf,kyua

Index: src/etc/mtree/NetBSD.dist.tests
diff -u src/etc/mtree/NetBSD.dist.tests:1.141 src/etc/mtree/NetBSD.dist.tests:1.142
--- src/etc/mtree/NetBSD.dist.tests:1.141	Mon Feb 20 03:14:42 2017
+++ src/etc/mtree/NetBSD.dist.tests	Tue Feb 21 10:40:30 2017
@@ -1,4 +1,4 @@
-#	$NetBSD: NetBSD.dist.tests,v 1.141 2017/02/20 03:14:42 kamil Exp $
+#	$NetBSD: NetBSD.dist.tests,v 1.142 2017/02/21 10:40:30 kre Exp $
 
 ./usr/libdata/debug/usr/tests
 ./usr/libdata/debug/usr/tests/atf
@@ -407,6 +407,7 @@
 ./usr/tests/usr.bin/mixerctl
 ./usr/tests/usr.bin/mkdep
 ./usr/tests/usr.bin/nbperf
+./usr/tests/usr.bin/pkill
 ./usr/tests/usr.bin/pr
 ./usr/tests/usr.bin/rump_server
 ./usr/tests/usr.bin/sdiff

Index: src/tests/usr.bin/Makefile
diff -u src/tests/usr.bin/Makefile:1.23 src/tests/usr.bin/Makefile:1.24
--- src/tests/usr.bin/Makefile:1.23	Mon Jan  2 15:40:09 2017
+++ src/tests/usr.bin/Makefile	Tue Feb 21 10:40:30 2017
@@ -1,4 +1,4 @@
-#	$NetBSD: Makefile,v 1.23 2017/01/02 15:40:09 christos Exp $
+#	$NetBSD: Makefile,v 1.24 2017/02/21 10:40:30 kre Exp $
 #
 
 .include <bsd.own.mk>
@@ -7,8 +7,8 @@ TESTSDIR=       ${TESTSBASE}/usr.bin
 
 TESTS_SUBDIRS=	awk basename bzip2 cc cmp config cut \
 		diff dirname find gdb grep gzip id \
-		infocmp jot ld m4 make mixerctl mkdep \
-		nbperf netpgpverify pr rump_server shmif_dumpbus sdiff \
+		infocmp jot ld m4 make mixerctl mkdep nbperf netpgpverify \
+		pkill pr rump_server shmif_dumpbus sdiff \
 		sed sort tmux tr unifdef uniq vmstat xlint
 
 .include <bsd.test.mk>

Added files:

Index: src/tests/usr.bin/pkill/Makefile
diff -u /dev/null src/tests/usr.bin/pkill/Makefile:1.1
--- /dev/null	Tue Feb 21 10:40:30 2017
+++ src/tests/usr.bin/pkill/Makefile	Tue Feb 21 10:40:30 2017
@@ -0,0 +1,8 @@
+# $NetBSD: Makefile,v 1.1 2017/02/21 10:40:30 kre Exp $
+
+.include <bsd.own.mk>
+
+TESTSDIR=	${TESTSBASE}/usr.bin/pkill
+TESTS_SH=	t_pgrep
+
+.include <bsd.test.mk>
Index: src/tests/usr.bin/pkill/t_pgrep.sh
diff -u /dev/null src/tests/usr.bin/pkill/t_pgrep.sh:1.1
--- /dev/null	Tue Feb 21 10:40:30 2017
+++ src/tests/usr.bin/pkill/t_pgrep.sh	Tue Feb 21 10:40:30 2017
@@ -0,0 +1,75 @@
+# $NetBSD: t_pgrep.sh,v 1.1 2017/02/21 10:40:30 kre Exp $
+#
+# Copyright (c) 2016 The NetBSD Foundation, Inc.
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+# 1. Redistributions of source code must retain the above copyright
+#    notice, this list of conditions and the following disclaimer.
+# 2. Redistributions in binary form must reproduce the above copyright
+#    notice, this list of conditions and the following disclaimer in the
+#    documentation and/or other materials provided with the distribution.
+#
+# THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
+# ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+# TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+# PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
+# BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+# POSSIBILITY OF SUCH DAMAGE.
+#
+
+atf_test_case pr50934
+basic_shift_test_head() {
+	atf_set "descr" "Test fix for PR bin/50934 (null argv[0])"
+}
+pr50934_body() {
+	atf_require_prog pgrep
+	atf_require_prog cc
+
+	cat > t.c <<'!'
+#include <stdlib.h>
+int
+#include <unistd.h>
+
+main(int argc, char **argv)
+{
+	sleep(2);
+	argv[0] = 0;
+	pause();
+	exit(0);
+}
+!
+
+	cc -o t0123456789abcdefg-beef t.c || atf_fail "t.c compile failed"
+
+	./t0123456789abcdefg-beef &
+	PID=$!
+
+	pgrep -l t0123456 >OUT	; # should find the process
+	pgrep -l beef >>OUT	; # should find the process
+
+	sleep 5			; # allow time for sleep in t.c and argv[0]=0
+
+	pgrep -l t0123456 >>OUT	; # should find the process
+	pgrep -l beef >>OUT	; # should find nothing
+
+	kill -9 $PID
+	cat OUT	; # just for the log
+
+	# note that pgrep -l only ever prints p_comm which is of limited sicze
+	atf_check_equal "$(cat OUT)" \
+	   "$PID t0123456789abcde $PID t0123456789abcde $PID t0123456789abcde"
+
+	return 0
+}
+
+atf_init_test_cases() {
+	atf_add_test_case pr50934
+}

Reply via email to