t_ssp.sh revision 319483
1219089Spjd# $NetBSD: t_ssp.sh,v 1.7 2014/04/06 19:28:59 christos Exp $
2219089Spjd#
3219089Spjd# Copyright (c) 2008 The NetBSD Foundation, Inc.
4219089Spjd# All rights reserved.
5219089Spjd#
6219089Spjd# Redistribution and use in source and binary forms, with or without
7219089Spjd# modification, are permitted provided that the following conditions
8219089Spjd# are met:
9219089Spjd# 1. Redistributions of source code must retain the above copyright
10219089Spjd#    notice, this list of conditions and the following disclaimer.
11219089Spjd# 2. Redistributions in binary form must reproduce the above copyright
12219089Spjd#    notice, this list of conditions and the following disclaimer in the
13219089Spjd#    documentation and/or other materials provided with the distribution.
14219089Spjd#
15219089Spjd# THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
16219089Spjd# ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
17219089Spjd# TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
18219089Spjd# PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
19219089Spjd# BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
20219089Spjd# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
21219089Spjd# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
22219089Spjd# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
23219089Spjd# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
24219089Spjd# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
25219089Spjd# POSSIBILITY OF SUCH DAMAGE.
26219089Spjd#
27268648Sdelphij
28288553Smavh_pass()
29297112Smav{
30268648Sdelphij	echo "Executing command [ $2$1 ]"
31268648Sdelphij	eval $2 atf_check -s exit:0 -o ignore -e ignore $1
32268648Sdelphij}
33219089Spjd
34219089Spjdh_fail()
35219089Spjd{
36219089Spjd	echo "Executing command [ $2$1 ]"
37219089Spjd	# Begin FreeBSD
38288553Smav	ulimit -c 0
39219089Spjd	if true; then
40219089Spjd		eval $2 atf_check -s signal -o ignore -e ignore $1
41219089Spjd	else
42219089Spjd	# End FreeBSD
43219089Spjd	eval $2 atf_check -s signal:6 -o ignore -e ignore $1
44268648Sdelphij	# Begin FreeBSD
45268648Sdelphij	fi
46268648Sdelphij	# End FreeBSD
47268648Sdelphij}
48268648Sdelphij
49268648Sdelphijatf_test_case sprintf
50268648Sdelphijsprintf_head()
51268648Sdelphij{
52268648Sdelphij	atf_set "descr" "Checks sprintf(3)"
53268648Sdelphij}
54219089Spjdsprintf_body()
55219089Spjd{
56219089Spjd	prog="$(atf_get_srcdir)/h_sprintf"
57219089Spjd
58219089Spjd	h_pass "$prog ok"
59219089Spjd	# Begin FreeBSD
60219089Spjd	if true; then
61219089Spjd		h_fail "$prog 0123456789ab"
62219089Spjd	else
63268648Sdelphij	# End FreeBSD
64219089Spjd	h_fail "$prog 0123456789"
65219089Spjd	# Begin FreeBSD
66268648Sdelphij	fi
67268648Sdelphij	# End FreeBSD
68219089Spjd}
69219089Spjd
70219089Spjdatf_test_case vsprintf
71276081Sdelphijvsprintf_head()
72276081Sdelphij{
73276081Sdelphij	atf_set "descr" "Checks vsprintf(3)"
74276081Sdelphij}
75276081Sdelphijvsprintf_body()
76276081Sdelphij{
77276081Sdelphij	prog="$(atf_get_srcdir)/h_vsprintf"
78276081Sdelphij
79276081Sdelphij	h_pass "$prog ok"
80276081Sdelphij	# Begin FreeBSD
81276081Sdelphij	if true; then
82276081Sdelphij		h_fail "$prog 0123456789ab"
83219089Spjd	else
84219089Spjd	# End FreeBSD
85219089Spjd	h_fail "$prog 0123456789"
86219089Spjd	# Begin FreeBSD
87219089Spjd	fi
88219089Spjd	# End FreeBSD
89219089Spjd}
90219089Spjd
91219089Spjdatf_test_case snprintf
92219089Spjdsnprintf_head()
93219089Spjd{
94219089Spjd	atf_set "descr" "Checks snprintf(3)"
95219089Spjd}
96288553Smavsnprintf_body()
97219089Spjd{
98219089Spjd	prog="$(atf_get_srcdir)/h_snprintf"
99219089Spjd
100219089Spjd	h_pass "$prog 10"
101219089Spjd	# Begin FreeBSD
102219089Spjd	if true; then
103219089Spjd		h_fail "$prog 13"
104219089Spjd	else
105219089Spjd	# End FreeBSD
106288553Smav	h_fail "$prog 11"
107288553Smav	# Begin FreeBSD
108288553Smav	fi
109288553Smav	# End FreeBSD
110288553Smav}
111288553Smav
112288553Smavatf_test_case vsnprintf
113288553Smavvsnprintf_head()
114288553Smav{
115288553Smav	atf_set "descr" "Checks vsnprintf(3)"
116288553Smav}
117288553Smavvsnprintf_body()
118288553Smav{
119288553Smav	prog="$(atf_get_srcdir)/h_vsnprintf"
120288553Smav
121288553Smav	h_pass "$prog 10"
122288553Smav	# Begin FreeBSD
123288553Smav	if true; then
124288553Smav		h_fail "$prog 13"
125288553Smav	else
126288553Smav	# End FreeBSD
127288553Smav	h_fail "$prog 11"
128288553Smav	# Begin FreeBSD
129290756Smav	fi
130288553Smav	# End FreeBSD
131288553Smav}
132288553Smav
133288553Smavatf_test_case gets
134268648Sdelphijgets_head()
135268648Sdelphij{
136268648Sdelphij	atf_set "descr" "Checks gets(3)"
137268648Sdelphij}
138268648Sdelphijgets_body()
139268648Sdelphij{
140268648Sdelphij	prog="$(atf_get_srcdir)/h_gets"
141268648Sdelphij
142268648Sdelphij	h_pass "$prog" "echo ok |"
143268648Sdelphij	# Begin FreeBSD
144268648Sdelphij	if true; then
145268648Sdelphij		h_fail "$prog" "echo 0123456789ab |"
146268648Sdelphij	else
147268648Sdelphij	# End FreeBSD
148268648Sdelphij	h_fail "$prog" "echo 0123456789 |"
149268648Sdelphij	# Begin FreeBSD
150268648Sdelphij	fi
151268648Sdelphij	# End FreeBSD
152268648Sdelphij}
153268648Sdelphij
154268648Sdelphijatf_test_case fgets
155268648Sdelphijfgets_head()
156268648Sdelphij{
157268648Sdelphij	atf_set "descr" "Checks fgets(3)"
158268648Sdelphij}
159268648Sdelphijfgets_body()
160268648Sdelphij{
161268648Sdelphij	prog="$(atf_get_srcdir)/h_fgets"
162268648Sdelphij
163268648Sdelphij	h_pass "$prog 10" "echo ok |"
164268648Sdelphij	# Begin FreeBSD
165268649Sdelphij	if true; then
166268648Sdelphij		h_fail "$prog 13" "echo 0123456789abc |"
167268648Sdelphij	else
168268648Sdelphij	# End FreeBSD
169268648Sdelphij	h_fail "$prog 11" "echo busted |"
170268648Sdelphij	# Begin FreeBSD
171268648Sdelphij	fi
172268648Sdelphij	# End FreeBSD
173268648Sdelphij}
174268648Sdelphij
175268648Sdelphijatf_test_case memcpy
176268648Sdelphijmemcpy_head()
177268648Sdelphij{
178268648Sdelphij	atf_set "descr" "Checks memcpy(3)"
179268648Sdelphij}
180268648Sdelphijmemcpy_body()
181268648Sdelphij{
182268648Sdelphij	prog="$(atf_get_srcdir)/h_memcpy"
183268648Sdelphij
184268648Sdelphij	h_pass "$prog 10"
185268648Sdelphij	# Begin FreeBSD
186268648Sdelphij	if true; then
187268648Sdelphij		h_fail "$prog 13"
188268648Sdelphij	else
189268648Sdelphij	# End FreeBSD
190268648Sdelphij	h_fail "$prog 11"
191268648Sdelphij	# Begin FreeBSD
192268648Sdelphij	fi
193268648Sdelphij	# End FreeBSD
194268648Sdelphij}
195268648Sdelphij
196268648Sdelphijatf_test_case memmove
197268648Sdelphijmemmove_head()
198219089Spjd{
199219089Spjd	atf_set "descr" "Checks memmove(3)"
200219089Spjd}
201276081Sdelphijmemmove_body()
202268649Sdelphij{
203268649Sdelphij	prog="$(atf_get_srcdir)/h_memmove"
204219089Spjd
205219089Spjd	h_pass "$prog 10"
206219089Spjd	# Begin FreeBSD
207219089Spjd	if true; then
208219089Spjd		h_fail "$prog 13"
209219089Spjd	else
210219089Spjd	# End FreeBSD
211219089Spjd	h_fail "$prog 11"
212219089Spjd	# Begin FreeBSD
213219089Spjd	fi
214268649Sdelphij	# End FreeBSD
215288553Smav}
216219089Spjd
217219089Spjdatf_test_case memset
218288553Smavmemset_head()
219219089Spjd{
220268648Sdelphij	atf_set "descr" "Checks memset(3)"
221268648Sdelphij}
222268648Sdelphijmemset_body()
223268648Sdelphij{
224268648Sdelphij	prog="$(atf_get_srcdir)/h_memset"
225268648Sdelphij
226219089Spjd	h_pass "$prog 10"
227219089Spjd	# Begin FreeBSD
228219089Spjd	if true; then
229219089Spjd		h_fail "$prog 13"
230268648Sdelphij	else
231219089Spjd	# End FreeBSD
232219089Spjd	h_fail "$prog 11"
233219089Spjd	# Begin FreeBSD
234219089Spjd	fi
235219089Spjd	# End FreeBSD
236288553Smav}
237288553Smav
238219089Spjdatf_test_case strcpy
239219089Spjdstrcpy_head()
240268648Sdelphij{
241268648Sdelphij	atf_set "descr" "Checks strcpy(3)"
242268648Sdelphij}
243288553Smavstrcpy_body()
244268648Sdelphij{
245219089Spjd	prog="$(atf_get_srcdir)/h_strcpy"
246219089Spjd
247219089Spjd	h_pass "$prog 0123456"
248219089Spjd	# Begin FreeBSD
249219089Spjd	if true; then
250219089Spjd		h_fail "$prog 0123456789ab"
251219089Spjd	else
252219089Spjd	# End FreeBSD
253219089Spjd	h_fail "$prog 0123456789"
254219089Spjd	# Begin FreeBSD
255219089Spjd	fi
256219089Spjd	# End FreeBSD
257219089Spjd}
258219089Spjd
259219089Spjdatf_test_case stpcpy
260219089Spjdstpcpy_head()
261219089Spjd{
262219089Spjd	atf_set "descr" "Checks stpcpy(3)"
263219089Spjd}
264219089Spjdstpcpy_body()
265219089Spjd{
266219089Spjd	prog="$(atf_get_srcdir)/h_stpcpy"
267288553Smav
268219089Spjd	h_pass "$prog 0123456"
269268648Sdelphij	# Begin FreeBSD
270268648Sdelphij	if true; then
271268648Sdelphij		h_fail "$prog 0123456789ab"
272268648Sdelphij	else
273219089Spjd	# End FreeBSD
274219089Spjd	h_fail "$prog 0123456789"
275219089Spjd	# Begin FreeBSD
276219089Spjd	fi
277219089Spjd	# End FreeBSD
278219089Spjd}
279219089Spjd
280219089Spjdatf_test_case strcat
281219089Spjdstrcat_head()
282219089Spjd{
283219089Spjd	atf_set "descr" "Checks strcat(3)"
284219089Spjd}
285219089Spjdstrcat_body()
286219089Spjd{
287219089Spjd	prog="$(atf_get_srcdir)/h_strcat"
288219089Spjd
289219089Spjd	h_pass "$prog 0123456"
290219089Spjd	h_fail "$prog 0123456789ABCDEF"
291219089Spjd}
292219089Spjd
293219089Spjdatf_test_case strncpy
294219089Spjdstrncpy_head()
295219089Spjd{
296219089Spjd	atf_set "descr" "Checks strncpy(3)"
297219089Spjd}
298219089Spjdstrncpy_body()
299219089Spjd{
300219089Spjd	prog="$(atf_get_srcdir)/h_strncpy"
301219089Spjd
302219089Spjd	h_pass "$prog 10"
303219089Spjd	# Begin FreeBSD
304219089Spjd	if true; then
305219089Spjd		h_fail "$prog 13"
306219089Spjd	else
307219089Spjd	# End FreeBSD
308219089Spjd	h_fail "$prog 11"
309219089Spjd	# Begin FreeBSD
310219089Spjd	fi
311219089Spjd	# End FreeBSD
312219089Spjd}
313219089Spjd
314268649Sdelphijatf_test_case stpncpy
315219089Spjdstpncpy_head()
316219089Spjd{
317219089Spjd	atf_set "descr" "Checks stpncpy(3)"
318219089Spjd}
319219089Spjdstpncpy_body()
320219089Spjd{
321219089Spjd	prog="$(atf_get_srcdir)/h_stpncpy"
322219089Spjd
323219089Spjd	h_pass "$prog 10"
324219089Spjd	# Begin FreeBSD
325219089Spjd	if true; then
326219089Spjd		h_fail "$prog 13"
327219089Spjd	else
328219089Spjd	# End FreeBSD
329219089Spjd	h_fail "$prog 11"
330219089Spjd	# Begin FreeBSD
331219089Spjd	fi
332219089Spjd	# End FreeBSD
333219089Spjd}
334219089Spjd
335219089Spjdatf_test_case strncat
336219089Spjdstrncat_head()
337219089Spjd{
338219089Spjd	atf_set "descr" "Checks strncat(3)"
339219089Spjd}
340219089Spjdstrncat_body()
341219089Spjd{
342219089Spjd	prog="$(atf_get_srcdir)/h_strncat"
343219089Spjd
344219089Spjd	# Begin FreeBSD
345219089Spjd	h_pass "$prog 8"
346219089Spjd	if true; then
347219089Spjd		h_fail "$prog 11"
348219089Spjd	else
349219089Spjd	# End FreeBSD
350290756Smav	h_fail "$prog 9"
351219089Spjd	# Begin FreeBSD
352219089Spjd	fi
353219089Spjd	# End FreeBSD
354276081Sdelphij}
355219089Spjd
356276081Sdelphijatf_test_case raw
357219089Spjdraw_head()
358219089Spjd{
359219089Spjd	atf_set "descr" "Checks raw array overflow"
360219089Spjd}
361219089Spjdraw_body()
362219089Spjd{
363219089Spjd	prog="$(atf_get_srcdir)/h_raw"
364219089Spjd	# Begin FreeBSD
365219089Spjd	[ -x $prog ] || atf_skip "$prog is missing; skipping testcase"
366219089Spjd	# End FreeBSD
367219089Spjd
368219089Spjd	h_pass "$prog 9"
369219089Spjd	# Begin FreeBSD
370219089Spjd	if true; then
371219089Spjd		h_fail "$prog 12"
372219089Spjd	else
373219089Spjd	# End FreeBSD
374219089Spjd	h_fail "$prog 10"
375219089Spjd	# Begin FreeBSD
376219089Spjd	fi
377219089Spjd	# End FreeBSD
378219089Spjd}
379219089Spjd
380219089Spjdatf_test_case read
381219089Spjdread_head()
382219089Spjd{
383219089Spjd	atf_set "descr" "Checks read(2)"
384219089Spjd}
385219089Spjdread_body()
386219089Spjd{
387219089Spjd	prog="$(atf_get_srcdir)/h_read"
388219089Spjd
389219089Spjd	h_pass "$prog 1024" "echo foo |"
390219089Spjd	# Begin FreeBSD
391219089Spjd	if true; then
392219089Spjd		h_fail "$prog 1027" "echo bar |"
393219089Spjd	else
394219089Spjd	# End FreeBSD
395219089Spjd	MAX_PATH=$(getconf _XOPEN_MAX_PATH) || atf_fail "getconf failed"
396219089Spjd	h_fail "$prog $(( $MAX_PATH + 1))" "echo bar |"
397219089Spjd	# Begin FreeBSD
398219089Spjd	fi
399219089Spjd	# End FreeBSD
400219089Spjd}
401219089Spjd
402219089Spjdatf_test_case readlink
403219089Spjdreadlink_head()
404219089Spjd{
405219089Spjd	atf_set "descr" "Checks readlink(2)"
406219089Spjd}
407219089Spjdreadlink_body()
408219089Spjd{
409219089Spjd	prog="$(atf_get_srcdir)/h_readlink"
410219089Spjd
411219089Spjd	# Begin FreeBSD
412219089Spjd	if true; then
413219089Spjd		h_pass "$prog 512"
414219089Spjd		h_fail "$prog 523"
415219089Spjd	else
416219089Spjd	# End FreeBSD
417219089Spjd	h_pass "$prog 1024"
418219089Spjd	h_fail "$prog 1025"
419219089Spjd	# Begin FreeBSD
420219089Spjd	fi
421219089Spjd	# End FreeBSD
422219089Spjd}
423219089Spjd
424219089Spjdatf_test_case getcwd
425219089Spjdgetcwd_head()
426268649Sdelphij{
427268649Sdelphij	atf_set "descr" "Checks getcwd(3)"
428268648Sdelphij}
429268648Sdelphijgetcwd_body()
430268648Sdelphij{
431268648Sdelphij	prog="$(atf_get_srcdir)/h_getcwd"
432219089Spjd
433219089Spjd	h_pass "$prog 1024"
434219089Spjd	# Begin FreeBSD
435219089Spjd	if false; then
436219089Spjd	# End FreeBSD
437219089Spjd	h_fail "$prog 1025"
438219089Spjd	# Begin FreeBSD
439219089Spjd	fi
440219089Spjd	# End FreeBSD
441219089Spjd}
442219089Spjd
443219089Spjdatf_init_test_cases()
444219089Spjd{
445219089Spjd	atf_add_test_case sprintf
446219089Spjd	atf_add_test_case vsprintf
447219089Spjd	atf_add_test_case snprintf
448219089Spjd	atf_add_test_case vsnprintf
449219089Spjd	atf_add_test_case gets
450219089Spjd	atf_add_test_case fgets
451219089Spjd	atf_add_test_case memcpy
452219089Spjd	atf_add_test_case memmove
453219089Spjd	atf_add_test_case memset
454219089Spjd	atf_add_test_case stpcpy
455219089Spjd	atf_add_test_case stpncpy
456219089Spjd	atf_add_test_case strcat
457219089Spjd	atf_add_test_case strcpy
458219089Spjd	atf_add_test_case strncat
459219089Spjd	atf_add_test_case strncpy
460219089Spjd	atf_add_test_case raw
461268648Sdelphij	atf_add_test_case read
462268648Sdelphij	atf_add_test_case readlink
463268648Sdelphij	atf_add_test_case getcwd
464268648Sdelphij}
465219089Spjd