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