5159 ipsec_libssl_setup.c loads libcrypto
[unleashed.git] / usr / src / cmd / dtrace / test / tst / common / usdt / tst.corruptenv.ksh
blob3480d3486223fa12385119ab40f0c657df6ea503
1 #!/usr/bin/ksh
3 # CDDL HEADER START
5 # The contents of this file are subject to the terms of the
6 # Common Development and Distribution License (the "License").
7 # You may not use this file except in compliance with the License.
9 # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
10 # or http://www.opensolaris.org/os/licensing.
11 # See the License for the specific language governing permissions
12 # and limitations under the License.
14 # When distributing Covered Code, include this CDDL HEADER in each
15 # file and include the License file at usr/src/OPENSOLARIS.LICENSE.
16 # If applicable, add the following below this CDDL HEADER, with the
17 # fields enclosed by brackets "[]" replaced with your own identifying
18 # information: Portions Copyright [yyyy] [name of copyright owner]
20 # CDDL HEADER END
24 # Copyright 2008 Sun Microsystems, Inc. All rights reserved.
25 # Use is subject to license terms.
29 # This test verifies that a program that corrupts its own environment
30 # without inducing a crash does not crash solely due to drti.o's use of
31 # getenv(3C).
34 PATH=/usr/bin:/usr/sbin:$PATH
36 if (( $# != 1 )); then
37 print -u2 'expected one argument: <dtrace-path>'
38 exit 2
42 # jdtrace does not implement the -h option that is required to generate
43 # C header files.
45 if [[ "$1" == */jdtrace ]]; then
46 exit 0
49 dtrace="$1"
50 startdir="$PWD"
51 dir=$(mktemp -td drtiXXXXXX)
52 if (( $? != 0 )); then
53 print -u2 'Could not create safe temporary directory'
54 exit 2
57 cd "$dir"
59 cat > Makefile <<EOF
60 all: main
62 main: main.o prov.o
63 gcc -m32 -o main main.o prov.o
65 main.o: main.c prov.h
66 gcc -m32 -c main.c
68 prov.h: prov.d
69 $dtrace -h -s prov.d
71 prov.o: prov.d main.o
72 $dtrace -G -32 -s prov.d main.o
73 EOF
75 cat > prov.d <<EOF
76 provider tester {
77 probe entry();
79 EOF
81 cat > main.c <<EOF
82 #include <stdlib.h>
83 #include <sys/sdt.h>
84 #include "prov.h"
86 int
87 main(int argc, char **argv, char **envp)
89 envp[0] = (char*)0xff;
90 TESTER_ENTRY();
91 return 0;
93 EOF
95 make > /dev/null
96 status=$?
97 if (( $status != 0 )) ; then
98 print -u2 "failed to build"
99 else
100 ./main
101 status=$?
104 cd "$startdir"
105 rm -rf "$dir"
107 exit $status