Print this page
4474 DTrace Userland CTF Support
4475 DTrace userland Keyword
4476 DTrace tests should be better citizens
4479 pid provider types
4480 dof emulation missing checks
Reviewed by: Bryan Cantrill <bryan@joyent.com>
Split |
Close |
Expand all |
Collapse all |
--- old/usr/src/cmd/dtrace/test/tst/common/usdt/tst.corruptenv.ksh
+++ new/usr/src/cmd/dtrace/test/tst/common/usdt/tst.corruptenv.ksh
1 1 #!/usr/bin/ksh
2 2 #
3 3 # CDDL HEADER START
4 4 #
5 5 # The contents of this file are subject to the terms of the
6 6 # Common Development and Distribution License (the "License").
7 7 # You may not use this file except in compliance with the License.
8 8 #
9 9 # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
10 10 # or http://www.opensolaris.org/os/licensing.
11 11 # See the License for the specific language governing permissions
12 12 # and limitations under the License.
13 13 #
14 14 # When distributing Covered Code, include this CDDL HEADER in each
15 15 # file and include the License file at usr/src/OPENSOLARIS.LICENSE.
16 16 # If applicable, add the following below this CDDL HEADER, with the
17 17 # fields enclosed by brackets "[]" replaced with your own identifying
18 18 # information: Portions Copyright [yyyy] [name of copyright owner]
19 19 #
20 20 # CDDL HEADER END
21 21 #
22 22
23 23 #
24 24 # Copyright 2008 Sun Microsystems, Inc. All rights reserved.
25 25 # Use is subject to license terms.
26 26 #
27 27
28 28 #
29 29 # This test verifies that a program that corrupts its own environment
30 30 # without inducing a crash does not crash solely due to drti.o's use of
31 31 # getenv(3C).
32 32 #
33 33
34 34 PATH=/usr/bin:/usr/sbin:$PATH
35 35
36 36 if (( $# != 1 )); then
37 37 print -u2 'expected one argument: <dtrace-path>'
38 38 exit 2
39 39 fi
40 40
41 41 #
42 42 # jdtrace does not implement the -h option that is required to generate
43 43 # C header files.
44 44 #
45 45 if [[ "$1" == */jdtrace ]]; then
46 46 exit 0
47 47 fi
48 48
49 49 dtrace="$1"
50 50 startdir="$PWD"
51 51 dir=$(mktemp -td drtiXXXXXX)
52 52 if (( $? != 0 )); then
↓ open down ↓ |
52 lines elided |
↑ open up ↑ |
53 53 print -u2 'Could not create safe temporary directory'
54 54 exit 2
55 55 fi
56 56
57 57 cd "$dir"
58 58
59 59 cat > Makefile <<EOF
60 60 all: main
61 61
62 62 main: main.o prov.o
63 - gcc -o main main.o prov.o
63 + gcc -m32 -o main main.o prov.o
64 64
65 65 main.o: main.c prov.h
66 - gcc -c main.c
66 + gcc -m32 -c main.c
67 67
68 68 prov.h: prov.d
69 69 $dtrace -h -s prov.d
70 70
71 71 prov.o: prov.d main.o
72 72 $dtrace -G -32 -s prov.d main.o
73 73 EOF
74 74
75 75 cat > prov.d <<EOF
76 76 provider tester {
77 77 probe entry();
78 78 };
79 79 EOF
80 80
81 81 cat > main.c <<EOF
82 82 #include <stdlib.h>
83 83 #include <sys/sdt.h>
84 84 #include "prov.h"
85 85
86 86 int
87 87 main(int argc, char **argv, char **envp)
88 88 {
89 89 envp[0] = (char*)0xff;
90 90 TESTER_ENTRY();
91 91 return 0;
92 92 }
93 93 EOF
94 94
95 95 make > /dev/null
96 96 status=$?
97 97 if (( $status != 0 )) ; then
98 98 print -u2 "failed to build"
99 99 else
100 100 ./main
101 101 status=$?
102 102 fi
103 103
104 104 cd "$startdir"
105 105 rm -rf "$dir"
106 106
107 107 exit $status
↓ open down ↓ |
31 lines elided |
↑ open up ↑ |
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX