xref: /freebsd/contrib/netbsd-tests/lib/libc/ssp/t_ssp.sh (revision 57718be8fa0bd5edc11ab9a72e68cc71982939a6)
1*57718be8SEnji Cooper# $NetBSD: t_ssp.sh,v 1.7 2014/04/06 19:28:59 christos Exp $
2*57718be8SEnji Cooper#
3*57718be8SEnji Cooper# Copyright (c) 2008 The NetBSD Foundation, Inc.
4*57718be8SEnji Cooper# All rights reserved.
5*57718be8SEnji Cooper#
6*57718be8SEnji Cooper# Redistribution and use in source and binary forms, with or without
7*57718be8SEnji Cooper# modification, are permitted provided that the following conditions
8*57718be8SEnji Cooper# are met:
9*57718be8SEnji Cooper# 1. Redistributions of source code must retain the above copyright
10*57718be8SEnji Cooper#    notice, this list of conditions and the following disclaimer.
11*57718be8SEnji Cooper# 2. Redistributions in binary form must reproduce the above copyright
12*57718be8SEnji Cooper#    notice, this list of conditions and the following disclaimer in the
13*57718be8SEnji Cooper#    documentation and/or other materials provided with the distribution.
14*57718be8SEnji Cooper#
15*57718be8SEnji Cooper# THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
16*57718be8SEnji Cooper# ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
17*57718be8SEnji Cooper# TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
18*57718be8SEnji Cooper# PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
19*57718be8SEnji Cooper# BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
20*57718be8SEnji Cooper# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
21*57718be8SEnji Cooper# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
22*57718be8SEnji Cooper# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
23*57718be8SEnji Cooper# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
24*57718be8SEnji Cooper# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
25*57718be8SEnji Cooper# POSSIBILITY OF SUCH DAMAGE.
26*57718be8SEnji Cooper#
27*57718be8SEnji Cooper
28*57718be8SEnji Cooperh_pass()
29*57718be8SEnji Cooper{
30*57718be8SEnji Cooper	echo "Executing command [ $2$1 ]"
31*57718be8SEnji Cooper	eval $2 atf_check -s exit:0 -o ignore -e ignore $1
32*57718be8SEnji Cooper}
33*57718be8SEnji Cooper
34*57718be8SEnji Cooperh_fail()
35*57718be8SEnji Cooper{
36*57718be8SEnji Cooper	echo "Executing command [ $2$1 ]"
37*57718be8SEnji Cooper	eval $2 atf_check -s signal:6 -o ignore -e ignore $1
38*57718be8SEnji Cooper}
39*57718be8SEnji Cooper
40*57718be8SEnji Cooperatf_test_case sprintf
41*57718be8SEnji Coopersprintf_head()
42*57718be8SEnji Cooper{
43*57718be8SEnji Cooper	atf_set "descr" "Checks sprintf(3)"
44*57718be8SEnji Cooper}
45*57718be8SEnji Coopersprintf_body()
46*57718be8SEnji Cooper{
47*57718be8SEnji Cooper	prog="$(atf_get_srcdir)/h_sprintf"
48*57718be8SEnji Cooper
49*57718be8SEnji Cooper	h_pass "$prog ok"
50*57718be8SEnji Cooper	h_fail "$prog 0123456789"
51*57718be8SEnji Cooper}
52*57718be8SEnji Cooper
53*57718be8SEnji Cooperatf_test_case vsprintf
54*57718be8SEnji Coopervsprintf_head()
55*57718be8SEnji Cooper{
56*57718be8SEnji Cooper	atf_set "descr" "Checks vsprintf(3)"
57*57718be8SEnji Cooper}
58*57718be8SEnji Coopervsprintf_body()
59*57718be8SEnji Cooper{
60*57718be8SEnji Cooper	prog="$(atf_get_srcdir)/h_vsprintf"
61*57718be8SEnji Cooper
62*57718be8SEnji Cooper	h_pass "$prog ok"
63*57718be8SEnji Cooper	h_fail "$prog 0123456789"
64*57718be8SEnji Cooper}
65*57718be8SEnji Cooper
66*57718be8SEnji Cooperatf_test_case snprintf
67*57718be8SEnji Coopersnprintf_head()
68*57718be8SEnji Cooper{
69*57718be8SEnji Cooper	atf_set "descr" "Checks snprintf(3)"
70*57718be8SEnji Cooper}
71*57718be8SEnji Coopersnprintf_body()
72*57718be8SEnji Cooper{
73*57718be8SEnji Cooper	prog="$(atf_get_srcdir)/h_snprintf"
74*57718be8SEnji Cooper
75*57718be8SEnji Cooper	h_pass "$prog 10"
76*57718be8SEnji Cooper	h_fail "$prog 11"
77*57718be8SEnji Cooper}
78*57718be8SEnji Cooper
79*57718be8SEnji Cooperatf_test_case vsnprintf
80*57718be8SEnji Coopervsnprintf_head()
81*57718be8SEnji Cooper{
82*57718be8SEnji Cooper	atf_set "descr" "Checks vsnprintf(3)"
83*57718be8SEnji Cooper}
84*57718be8SEnji Coopervsnprintf_body()
85*57718be8SEnji Cooper{
86*57718be8SEnji Cooper	prog="$(atf_get_srcdir)/h_vsnprintf"
87*57718be8SEnji Cooper
88*57718be8SEnji Cooper	h_pass "$prog 10"
89*57718be8SEnji Cooper	h_fail "$prog 11"
90*57718be8SEnji Cooper}
91*57718be8SEnji Cooper
92*57718be8SEnji Cooperatf_test_case gets
93*57718be8SEnji Coopergets_head()
94*57718be8SEnji Cooper{
95*57718be8SEnji Cooper	atf_set "descr" "Checks gets(3)"
96*57718be8SEnji Cooper}
97*57718be8SEnji Coopergets_body()
98*57718be8SEnji Cooper{
99*57718be8SEnji Cooper	prog="$(atf_get_srcdir)/h_gets"
100*57718be8SEnji Cooper
101*57718be8SEnji Cooper	h_pass "$prog" "echo ok |"
102*57718be8SEnji Cooper	h_fail "$prog" "echo 0123456789 |"
103*57718be8SEnji Cooper}
104*57718be8SEnji Cooper
105*57718be8SEnji Cooperatf_test_case fgets
106*57718be8SEnji Cooperfgets_head()
107*57718be8SEnji Cooper{
108*57718be8SEnji Cooper	atf_set "descr" "Checks fgets(3)"
109*57718be8SEnji Cooper}
110*57718be8SEnji Cooperfgets_body()
111*57718be8SEnji Cooper{
112*57718be8SEnji Cooper	prog="$(atf_get_srcdir)/h_fgets"
113*57718be8SEnji Cooper
114*57718be8SEnji Cooper	h_pass "$prog 10" "echo ok |"
115*57718be8SEnji Cooper	h_fail "$prog 11" "echo busted |"
116*57718be8SEnji Cooper}
117*57718be8SEnji Cooper
118*57718be8SEnji Cooperatf_test_case memcpy
119*57718be8SEnji Coopermemcpy_head()
120*57718be8SEnji Cooper{
121*57718be8SEnji Cooper	atf_set "descr" "Checks memcpy(3)"
122*57718be8SEnji Cooper}
123*57718be8SEnji Coopermemcpy_body()
124*57718be8SEnji Cooper{
125*57718be8SEnji Cooper	prog="$(atf_get_srcdir)/h_memcpy"
126*57718be8SEnji Cooper
127*57718be8SEnji Cooper	h_pass "$prog 10"
128*57718be8SEnji Cooper	h_fail "$prog 11"
129*57718be8SEnji Cooper}
130*57718be8SEnji Cooper
131*57718be8SEnji Cooperatf_test_case memmove
132*57718be8SEnji Coopermemmove_head()
133*57718be8SEnji Cooper{
134*57718be8SEnji Cooper	atf_set "descr" "Checks memmove(3)"
135*57718be8SEnji Cooper}
136*57718be8SEnji Coopermemmove_body()
137*57718be8SEnji Cooper{
138*57718be8SEnji Cooper	prog="$(atf_get_srcdir)/h_memmove"
139*57718be8SEnji Cooper
140*57718be8SEnji Cooper	h_pass "$prog 10"
141*57718be8SEnji Cooper	h_fail "$prog 11"
142*57718be8SEnji Cooper}
143*57718be8SEnji Cooper
144*57718be8SEnji Cooperatf_test_case memset
145*57718be8SEnji Coopermemset_head()
146*57718be8SEnji Cooper{
147*57718be8SEnji Cooper	atf_set "descr" "Checks memset(3)"
148*57718be8SEnji Cooper}
149*57718be8SEnji Coopermemset_body()
150*57718be8SEnji Cooper{
151*57718be8SEnji Cooper	prog="$(atf_get_srcdir)/h_memset"
152*57718be8SEnji Cooper
153*57718be8SEnji Cooper	h_pass "$prog 10"
154*57718be8SEnji Cooper	h_fail "$prog 11"
155*57718be8SEnji Cooper}
156*57718be8SEnji Cooper
157*57718be8SEnji Cooperatf_test_case strcpy
158*57718be8SEnji Cooperstrcpy_head()
159*57718be8SEnji Cooper{
160*57718be8SEnji Cooper	atf_set "descr" "Checks strcpy(3)"
161*57718be8SEnji Cooper}
162*57718be8SEnji Cooperstrcpy_body()
163*57718be8SEnji Cooper{
164*57718be8SEnji Cooper	prog="$(atf_get_srcdir)/h_strcpy"
165*57718be8SEnji Cooper
166*57718be8SEnji Cooper	h_pass "$prog 0123456"
167*57718be8SEnji Cooper	h_fail "$prog 0123456789"
168*57718be8SEnji Cooper}
169*57718be8SEnji Cooper
170*57718be8SEnji Cooperatf_test_case stpcpy
171*57718be8SEnji Cooperstpcpy_head()
172*57718be8SEnji Cooper{
173*57718be8SEnji Cooper	atf_set "descr" "Checks stpcpy(3)"
174*57718be8SEnji Cooper}
175*57718be8SEnji Cooperstpcpy_body()
176*57718be8SEnji Cooper{
177*57718be8SEnji Cooper	prog="$(atf_get_srcdir)/h_stpcpy"
178*57718be8SEnji Cooper
179*57718be8SEnji Cooper	h_pass "$prog 0123456"
180*57718be8SEnji Cooper	h_fail "$prog 0123456789"
181*57718be8SEnji Cooper}
182*57718be8SEnji Cooper
183*57718be8SEnji Cooperatf_test_case strcat
184*57718be8SEnji Cooperstrcat_head()
185*57718be8SEnji Cooper{
186*57718be8SEnji Cooper	atf_set "descr" "Checks strcat(3)"
187*57718be8SEnji Cooper}
188*57718be8SEnji Cooperstrcat_body()
189*57718be8SEnji Cooper{
190*57718be8SEnji Cooper	prog="$(atf_get_srcdir)/h_strcat"
191*57718be8SEnji Cooper
192*57718be8SEnji Cooper	h_pass "$prog 0123456"
193*57718be8SEnji Cooper	h_fail "$prog 0123456789ABCDEF"
194*57718be8SEnji Cooper}
195*57718be8SEnji Cooper
196*57718be8SEnji Cooperatf_test_case strncpy
197*57718be8SEnji Cooperstrncpy_head()
198*57718be8SEnji Cooper{
199*57718be8SEnji Cooper	atf_set "descr" "Checks strncpy(3)"
200*57718be8SEnji Cooper}
201*57718be8SEnji Cooperstrncpy_body()
202*57718be8SEnji Cooper{
203*57718be8SEnji Cooper	prog="$(atf_get_srcdir)/h_strncpy"
204*57718be8SEnji Cooper
205*57718be8SEnji Cooper	h_pass "$prog 10"
206*57718be8SEnji Cooper	h_fail "$prog 11"
207*57718be8SEnji Cooper}
208*57718be8SEnji Cooper
209*57718be8SEnji Cooperatf_test_case stpncpy
210*57718be8SEnji Cooperstpncpy_head()
211*57718be8SEnji Cooper{
212*57718be8SEnji Cooper	atf_set "descr" "Checks stpncpy(3)"
213*57718be8SEnji Cooper}
214*57718be8SEnji Cooperstpncpy_body()
215*57718be8SEnji Cooper{
216*57718be8SEnji Cooper	prog="$(atf_get_srcdir)/h_stpncpy"
217*57718be8SEnji Cooper
218*57718be8SEnji Cooper	h_pass "$prog 10"
219*57718be8SEnji Cooper	h_fail "$prog 11"
220*57718be8SEnji Cooper}
221*57718be8SEnji Cooper
222*57718be8SEnji Cooperatf_test_case strncat
223*57718be8SEnji Cooperstrncat_head()
224*57718be8SEnji Cooper{
225*57718be8SEnji Cooper	atf_set "descr" "Checks strncat(3)"
226*57718be8SEnji Cooper}
227*57718be8SEnji Cooperstrncat_body()
228*57718be8SEnji Cooper{
229*57718be8SEnji Cooper	prog="$(atf_get_srcdir)/h_strncat"
230*57718be8SEnji Cooper
231*57718be8SEnji Cooper	h_pass "$prog 8"
232*57718be8SEnji Cooper	h_fail "$prog 9"
233*57718be8SEnji Cooper}
234*57718be8SEnji Cooper
235*57718be8SEnji Cooperatf_test_case raw
236*57718be8SEnji Cooperraw_head()
237*57718be8SEnji Cooper{
238*57718be8SEnji Cooper	atf_set "descr" "Checks raw array overflow"
239*57718be8SEnji Cooper}
240*57718be8SEnji Cooperraw_body()
241*57718be8SEnji Cooper{
242*57718be8SEnji Cooper	prog="$(atf_get_srcdir)/h_raw"
243*57718be8SEnji Cooper
244*57718be8SEnji Cooper	h_pass "$prog 9"
245*57718be8SEnji Cooper	h_fail "$prog 10"
246*57718be8SEnji Cooper}
247*57718be8SEnji Cooper
248*57718be8SEnji Cooperatf_test_case read
249*57718be8SEnji Cooperread_head()
250*57718be8SEnji Cooper{
251*57718be8SEnji Cooper	atf_set "descr" "Checks read(2)"
252*57718be8SEnji Cooper}
253*57718be8SEnji Cooperread_body()
254*57718be8SEnji Cooper{
255*57718be8SEnji Cooper	prog="$(atf_get_srcdir)/h_read"
256*57718be8SEnji Cooper
257*57718be8SEnji Cooper	h_pass "$prog 1024" "echo foo |"
258*57718be8SEnji Cooper	h_fail "$prog 1025" "echo bar |"
259*57718be8SEnji Cooper}
260*57718be8SEnji Cooper
261*57718be8SEnji Cooperatf_test_case readlink
262*57718be8SEnji Cooperreadlink_head()
263*57718be8SEnji Cooper{
264*57718be8SEnji Cooper	atf_set "descr" "Checks readlink(2)"
265*57718be8SEnji Cooper}
266*57718be8SEnji Cooperreadlink_body()
267*57718be8SEnji Cooper{
268*57718be8SEnji Cooper	prog="$(atf_get_srcdir)/h_readlink"
269*57718be8SEnji Cooper
270*57718be8SEnji Cooper	h_pass "$prog 1024"
271*57718be8SEnji Cooper	h_fail "$prog 1025"
272*57718be8SEnji Cooper}
273*57718be8SEnji Cooper
274*57718be8SEnji Cooperatf_test_case getcwd
275*57718be8SEnji Coopergetcwd_head()
276*57718be8SEnji Cooper{
277*57718be8SEnji Cooper	atf_set "descr" "Checks getcwd(3)"
278*57718be8SEnji Cooper}
279*57718be8SEnji Coopergetcwd_body()
280*57718be8SEnji Cooper{
281*57718be8SEnji Cooper	prog="$(atf_get_srcdir)/h_getcwd"
282*57718be8SEnji Cooper
283*57718be8SEnji Cooper	h_pass "$prog 1024"
284*57718be8SEnji Cooper	h_fail "$prog 1025"
285*57718be8SEnji Cooper}
286*57718be8SEnji Cooper
287*57718be8SEnji Cooperatf_init_test_cases()
288*57718be8SEnji Cooper{
289*57718be8SEnji Cooper	atf_add_test_case sprintf
290*57718be8SEnji Cooper	atf_add_test_case vsprintf
291*57718be8SEnji Cooper	atf_add_test_case snprintf
292*57718be8SEnji Cooper	atf_add_test_case vsnprintf
293*57718be8SEnji Cooper	atf_add_test_case gets
294*57718be8SEnji Cooper	atf_add_test_case fgets
295*57718be8SEnji Cooper	atf_add_test_case memcpy
296*57718be8SEnji Cooper	atf_add_test_case memmove
297*57718be8SEnji Cooper	atf_add_test_case memset
298*57718be8SEnji Cooper	atf_add_test_case stpcpy
299*57718be8SEnji Cooper	atf_add_test_case stpncpy
300*57718be8SEnji Cooper	atf_add_test_case strcat
301*57718be8SEnji Cooper	atf_add_test_case strcpy
302*57718be8SEnji Cooper	atf_add_test_case strncat
303*57718be8SEnji Cooper	atf_add_test_case strncpy
304*57718be8SEnji Cooper	atf_add_test_case raw
305*57718be8SEnji Cooper	atf_add_test_case read
306*57718be8SEnji Cooper	atf_add_test_case readlink
307*57718be8SEnji Cooper	atf_add_test_case getcwd
308*57718be8SEnji Cooper}
309