1# $NetBSD: t_ssp.sh,v 1.7 2014/04/06 19:28:59 christos Exp $ 2# 3# Copyright (c) 2008 The NetBSD Foundation, Inc. 4# All rights reserved. 5# 6# Redistribution and use in source and binary forms, with or without 7# modification, are permitted provided that the following conditions 8# are met: 9# 1. Redistributions of source code must retain the above copyright 10# notice, this list of conditions and the following disclaimer. 11# 2. Redistributions in binary form must reproduce the above copyright 12# notice, this list of conditions and the following disclaimer in the 13# documentation and/or other materials provided with the distribution. 14# 15# THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS 16# ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED 17# TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 18# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS 19# BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 20# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 21# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 22# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 23# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 24# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 25# POSSIBILITY OF SUCH DAMAGE. 26# 27 28h_pass() 29{ 30 echo "Executing command [ $2$1 ]" 31 eval $2 atf_check -s exit:0 -o ignore -e ignore $1 32} 33 34h_fail() 35{ 36 echo "Executing command [ $2$1 ]" 37 # Begin FreeBSD 38 ulimit -c 0 39 if true; then 40 eval $2 atf_check -s signal -o ignore -e ignore $1 41 else 42 # End FreeBSD 43 eval $2 atf_check -s signal:6 -o ignore -e ignore $1 44 # Begin FreeBSD 45 fi 46 # End FreeBSD 47} 48 49atf_test_case sprintf 50sprintf_head() 51{ 52 atf_set "descr" "Checks sprintf(3)" 53} 54sprintf_body() 55{ 56 prog="$(atf_get_srcdir)/h_sprintf" 57 58 h_pass "$prog ok" 59 # Begin FreeBSD 60 if true; then 61 h_fail "$prog 0123456789ab" 62 else 63 # End FreeBSD 64 h_fail "$prog 0123456789" 65 # Begin FreeBSD 66 fi 67 # End FreeBSD 68} 69 70atf_test_case vsprintf 71vsprintf_head() 72{ 73 atf_set "descr" "Checks vsprintf(3)" 74} 75vsprintf_body() 76{ 77 prog="$(atf_get_srcdir)/h_vsprintf" 78 79 h_pass "$prog ok" 80 # Begin FreeBSD 81 if true; then 82 h_fail "$prog 0123456789ab" 83 else 84 # End FreeBSD 85 h_fail "$prog 0123456789" 86 # Begin FreeBSD 87 fi 88 # End FreeBSD 89} 90 91atf_test_case snprintf 92snprintf_head() 93{ 94 atf_set "descr" "Checks snprintf(3)" 95} 96snprintf_body() 97{ 98 prog="$(atf_get_srcdir)/h_snprintf" 99 100 h_pass "$prog 10" 101 # Begin FreeBSD 102 if true; then 103 h_fail "$prog 13" 104 else 105 # End FreeBSD 106 h_fail "$prog 11" 107 # Begin FreeBSD 108 fi 109 # End FreeBSD 110} 111 112atf_test_case vsnprintf 113vsnprintf_head() 114{ 115 atf_set "descr" "Checks vsnprintf(3)" 116} 117vsnprintf_body() 118{ 119 prog="$(atf_get_srcdir)/h_vsnprintf" 120 121 h_pass "$prog 10" 122 # Begin FreeBSD 123 if true; then 124 h_fail "$prog 13" 125 else 126 # End FreeBSD 127 h_fail "$prog 11" 128 # Begin FreeBSD 129 fi 130 # End FreeBSD 131} 132 133atf_test_case gets 134gets_head() 135{ 136 atf_set "descr" "Checks gets(3)" 137} 138gets_body() 139{ 140 prog="$(atf_get_srcdir)/h_gets" 141 142 h_pass "$prog" "echo ok |" 143 # Begin FreeBSD 144 if true; then 145 h_fail "$prog" "echo 0123456789ab |" 146 else 147 # End FreeBSD 148 h_fail "$prog" "echo 0123456789 |" 149 # Begin FreeBSD 150 fi 151 # End FreeBSD 152} 153 154atf_test_case fgets 155fgets_head() 156{ 157 atf_set "descr" "Checks fgets(3)" 158} 159fgets_body() 160{ 161 prog="$(atf_get_srcdir)/h_fgets" 162 163 h_pass "$prog 10" "echo ok |" 164 # Begin FreeBSD 165 if true; then 166 h_fail "$prog 13" "echo 0123456789abc |" 167 else 168 # End FreeBSD 169 h_fail "$prog 11" "echo busted |" 170 # Begin FreeBSD 171 fi 172 # End FreeBSD 173} 174 175atf_test_case memcpy 176memcpy_head() 177{ 178 atf_set "descr" "Checks memcpy(3)" 179} 180memcpy_body() 181{ 182 prog="$(atf_get_srcdir)/h_memcpy" 183 184 h_pass "$prog 10" 185 # Begin FreeBSD 186 if true; then 187 h_fail "$prog 13" 188 else 189 # End FreeBSD 190 h_fail "$prog 11" 191 # Begin FreeBSD 192 fi 193 # End FreeBSD 194} 195 196atf_test_case memmove 197memmove_head() 198{ 199 atf_set "descr" "Checks memmove(3)" 200} 201memmove_body() 202{ 203 prog="$(atf_get_srcdir)/h_memmove" 204 205 h_pass "$prog 10" 206 # Begin FreeBSD 207 if true; then 208 h_fail "$prog 13" 209 else 210 # End FreeBSD 211 h_fail "$prog 11" 212 # Begin FreeBSD 213 fi 214 # End FreeBSD 215} 216 217atf_test_case memset 218memset_head() 219{ 220 atf_set "descr" "Checks memset(3)" 221} 222memset_body() 223{ 224 prog="$(atf_get_srcdir)/h_memset" 225 226 h_pass "$prog 10" 227 # Begin FreeBSD 228 if true; then 229 h_fail "$prog 13" 230 else 231 # End FreeBSD 232 h_fail "$prog 11" 233 # Begin FreeBSD 234 fi 235 # End FreeBSD 236} 237 238atf_test_case strcpy 239strcpy_head() 240{ 241 atf_set "descr" "Checks strcpy(3)" 242} 243strcpy_body() 244{ 245 prog="$(atf_get_srcdir)/h_strcpy" 246 247 h_pass "$prog 0123456" 248 # Begin FreeBSD 249 if true; then 250 h_fail "$prog 0123456789ab" 251 else 252 # End FreeBSD 253 h_fail "$prog 0123456789" 254 # Begin FreeBSD 255 fi 256 # End FreeBSD 257} 258 259atf_test_case stpcpy 260stpcpy_head() 261{ 262 atf_set "descr" "Checks stpcpy(3)" 263} 264stpcpy_body() 265{ 266 prog="$(atf_get_srcdir)/h_stpcpy" 267 268 h_pass "$prog 0123456" 269 # Begin FreeBSD 270 if true; then 271 h_fail "$prog 0123456789ab" 272 else 273 # End FreeBSD 274 h_fail "$prog 0123456789" 275 # Begin FreeBSD 276 fi 277 # End FreeBSD 278} 279 280atf_test_case strcat 281strcat_head() 282{ 283 atf_set "descr" "Checks strcat(3)" 284} 285strcat_body() 286{ 287 prog="$(atf_get_srcdir)/h_strcat" 288 289 h_pass "$prog 0123456" 290 h_fail "$prog 0123456789ABCDEF" 291} 292 293atf_test_case strncpy 294strncpy_head() 295{ 296 atf_set "descr" "Checks strncpy(3)" 297} 298strncpy_body() 299{ 300 prog="$(atf_get_srcdir)/h_strncpy" 301 302 h_pass "$prog 10" 303 # Begin FreeBSD 304 if true; then 305 h_fail "$prog 13" 306 else 307 # End FreeBSD 308 h_fail "$prog 11" 309 # Begin FreeBSD 310 fi 311 # End FreeBSD 312} 313 314atf_test_case stpncpy 315stpncpy_head() 316{ 317 atf_set "descr" "Checks stpncpy(3)" 318} 319stpncpy_body() 320{ 321 prog="$(atf_get_srcdir)/h_stpncpy" 322 323 h_pass "$prog 10" 324 # Begin FreeBSD 325 if true; then 326 h_fail "$prog 13" 327 else 328 # End FreeBSD 329 h_fail "$prog 11" 330 # Begin FreeBSD 331 fi 332 # End FreeBSD 333} 334 335atf_test_case strncat 336strncat_head() 337{ 338 atf_set "descr" "Checks strncat(3)" 339} 340strncat_body() 341{ 342 prog="$(atf_get_srcdir)/h_strncat" 343 344 # Begin FreeBSD 345 h_pass "$prog 8" 346 if true; then 347 h_fail "$prog 11" 348 else 349 # End FreeBSD 350 h_fail "$prog 9" 351 # Begin FreeBSD 352 fi 353 # End FreeBSD 354} 355 356atf_test_case raw 357raw_head() 358{ 359 atf_set "descr" "Checks raw array overflow" 360} 361raw_body() 362{ 363 prog="$(atf_get_srcdir)/h_raw" 364 # Begin FreeBSD 365 [ -x $prog ] || atf_skip "$prog is missing; skipping testcase" 366 # End FreeBSD 367 368 h_pass "$prog 9" 369 # Begin FreeBSD 370 if true; then 371 h_fail "$prog 12" 372 else 373 # End FreeBSD 374 h_fail "$prog 10" 375 # Begin FreeBSD 376 fi 377 # End FreeBSD 378} 379 380atf_test_case read 381read_head() 382{ 383 atf_set "descr" "Checks read(2)" 384} 385read_body() 386{ 387 prog="$(atf_get_srcdir)/h_read" 388 389 h_pass "$prog 1024" "echo foo |" 390 # Begin FreeBSD 391 if true; then 392 h_fail "$prog 1027" "echo bar |" 393 else 394 # End FreeBSD 395 h_fail "$prog 1025" "echo bar |" 396 # Begin FreeBSD 397 fi 398 # End FreeBSD 399} 400 401atf_test_case readlink 402readlink_head() 403{ 404 atf_set "descr" "Checks readlink(2)" 405} 406readlink_body() 407{ 408 prog="$(atf_get_srcdir)/h_readlink" 409 410 # Begin FreeBSD 411 if true; then 412 h_pass "$prog 512" 413 h_fail "$prog 523" 414 else 415 # End FreeBSD 416 h_pass "$prog 1024" 417 h_fail "$prog 1025" 418 # Begin FreeBSD 419 fi 420 # End FreeBSD 421} 422 423atf_test_case getcwd 424getcwd_head() 425{ 426 atf_set "descr" "Checks getcwd(3)" 427} 428getcwd_body() 429{ 430 prog="$(atf_get_srcdir)/h_getcwd" 431 432 h_pass "$prog 1024" 433 # Begin FreeBSD 434 if false; then 435 # End FreeBSD 436 h_fail "$prog 1025" 437 # Begin FreeBSD 438 fi 439 # End FreeBSD 440} 441 442atf_init_test_cases() 443{ 444 atf_add_test_case sprintf 445 atf_add_test_case vsprintf 446 atf_add_test_case snprintf 447 atf_add_test_case vsnprintf 448 atf_add_test_case gets 449 atf_add_test_case fgets 450 atf_add_test_case memcpy 451 atf_add_test_case memmove 452 atf_add_test_case memset 453 atf_add_test_case stpcpy 454 atf_add_test_case stpncpy 455 atf_add_test_case strcat 456 atf_add_test_case strcpy 457 atf_add_test_case strncat 458 atf_add_test_case strncpy 459 atf_add_test_case raw 460 atf_add_test_case read 461 atf_add_test_case readlink 462 atf_add_test_case getcwd 463} 464