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