Port lib/libc/ssp to FreeBSD

In most cases, the buffers and data were resized, but when dealing with the
helpers, some of the code was adjusted to fail more reliably

Submitted by: pho
This commit is contained in:
Enji Cooper 2014-11-03 23:36:41 +00:00
parent 217eb1256d
commit f001698bc1
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=274066
5 changed files with 199 additions and 1 deletions

View File

@ -41,5 +41,9 @@ main(int argc, char *argv[])
char b[10];
size_t len = atoi(argv[1]);
(void)memset(b, 0, len);
#ifdef __FreeBSD__
return b[0]; /* keeps optimizer from zapping the call to memset() */
#else
return 0;
#endif
}

View File

@ -36,12 +36,30 @@ __RCSID("$NetBSD: h_read.c,v 1.1 2010/12/27 02:04:19 pgoyette Exp $");
#include <unistd.h>
#include <stdlib.h>
#ifdef __FreeBSD__
#include <fcntl.h>
int
main(int argc, char *argv[])
{
char b[MAXPATHLEN];
int fd, n;
size_t len = atoi(argv[1]);
fd = open("/dev/zero", O_RDONLY);
if ((n = read(fd, b, len)) == -1)
abort();
(void)printf("%s\n", b);
return (0);
}
#else
int
main(int argc, char *argv[])
{
char b[MAXPATHLEN];
size_t len = atoi(argv[1]);
(void)read(0, b, len);
(void)printf("%s\n", b);
return 0;
}
#endif

View File

@ -36,12 +36,31 @@ __RCSID("$NetBSD: h_readlink.c,v 1.1 2010/12/27 02:04:19 pgoyette Exp $");
#include <unistd.h>
#include <stdlib.h>
#ifdef __FreeBSD__
#include <err.h>
#include <string.h>
#endif
int
main(int argc, char *argv[])
{
#ifdef __FreeBSD__
char b[512], *sl;
int n;
size_t len = atoi(argv[1]);
sl = malloc(len);
memset(sl, 'a', len);
sl[len - 1] = 0;
unlink("symlink");
if (symlink(sl, "symlink") == -1)
err(1, "symlink()");
n = readlink("symlink", b, len);
unlink("symlink");
#else
char b[MAXPATHLEN];
size_t len = atoi(argv[1]);
(void)readlink("/", b, len);
#endif
(void)printf("%s\n", b);
return 0;
}

View File

@ -39,7 +39,13 @@ main(int argc, char *argv[])
{
char b[10];
size_t len = atoi(argv[1]);
#ifdef __FreeBSD__
char c[] = "01234567890123456789";
c[len] = 0;
(void)snprintf(b, len, "%s", c);
#else
(void)snprintf(b, len, "%s", "0123456789");
#endif
(void)printf("%s\n", b);
return 0;
}

View File

@ -34,7 +34,15 @@ h_pass()
h_fail()
{
echo "Executing command [ $2$1 ]"
# Begin FreeBSD
if true; then
eval $2 atf_check -s signal -o ignore -e ignore $1
else
# End FreeBSD
eval $2 atf_check -s signal:6 -o ignore -e ignore $1
# Begin FreeBSD
fi
# End FreeBSD
}
atf_test_case sprintf
@ -47,7 +55,15 @@ sprintf_body()
prog="$(atf_get_srcdir)/h_sprintf"
h_pass "$prog ok"
# Begin FreeBSD
if true; then
h_fail "$prog 0123456789ab"
else
# End FreeBSD
h_fail "$prog 0123456789"
# Begin FreeBSD
fi
# End FreeBSD
}
atf_test_case vsprintf
@ -60,7 +76,15 @@ vsprintf_body()
prog="$(atf_get_srcdir)/h_vsprintf"
h_pass "$prog ok"
# Begin FreeBSD
if true; then
h_fail "$prog 0123456789ab"
else
# End FreeBSD
h_fail "$prog 0123456789"
# Begin FreeBSD
fi
# End FreeBSD
}
atf_test_case snprintf
@ -73,7 +97,15 @@ snprintf_body()
prog="$(atf_get_srcdir)/h_snprintf"
h_pass "$prog 10"
# Begin FreeBSD
if true; then
h_fail "$prog 13"
else
# End FreeBSD
h_fail "$prog 11"
# Begin FreeBSD
fi
# End FreeBSD
}
atf_test_case vsnprintf
@ -86,7 +118,15 @@ vsnprintf_body()
prog="$(atf_get_srcdir)/h_vsnprintf"
h_pass "$prog 10"
# Begin FreeBSD
if true; then
h_fail "$prog 13"
else
# End FreeBSD
h_fail "$prog 11"
# Begin FreeBSD
fi
# End FreeBSD
}
atf_test_case gets
@ -99,7 +139,15 @@ gets_body()
prog="$(atf_get_srcdir)/h_gets"
h_pass "$prog" "echo ok |"
# Begin FreeBSD
if true; then
h_fail "$prog" "echo 0123456789ab |"
else
# End FreeBSD
h_fail "$prog" "echo 0123456789 |"
# Begin FreeBSD
fi
# End FreeBSD
}
atf_test_case fgets
@ -112,7 +160,15 @@ fgets_body()
prog="$(atf_get_srcdir)/h_fgets"
h_pass "$prog 10" "echo ok |"
# Begin FreeBSD
if true; then
h_fail "$prog 13" "echo 0123456789abc |"
else
# End FreeBSD
h_fail "$prog 11" "echo busted |"
# Begin FreeBSD
fi
# End FreeBSD
}
atf_test_case memcpy
@ -125,7 +181,15 @@ memcpy_body()
prog="$(atf_get_srcdir)/h_memcpy"
h_pass "$prog 10"
# Begin FreeBSD
if true; then
h_fail "$prog 13"
else
# End FreeBSD
h_fail "$prog 11"
# Begin FreeBSD
fi
# End FreeBSD
}
atf_test_case memmove
@ -138,7 +202,15 @@ memmove_body()
prog="$(atf_get_srcdir)/h_memmove"
h_pass "$prog 10"
# Begin FreeBSD
if true; then
h_fail "$prog 13"
else
# End FreeBSD
h_fail "$prog 11"
# Begin FreeBSD
fi
# End FreeBSD
}
atf_test_case memset
@ -151,7 +223,15 @@ memset_body()
prog="$(atf_get_srcdir)/h_memset"
h_pass "$prog 10"
# Begin FreeBSD
if true; then
h_fail "$prog 13"
else
# End FreeBSD
h_fail "$prog 11"
# Begin FreeBSD
fi
# End FreeBSD
}
atf_test_case strcpy
@ -164,7 +244,15 @@ strcpy_body()
prog="$(atf_get_srcdir)/h_strcpy"
h_pass "$prog 0123456"
# Begin FreeBSD
if true; then
h_fail "$prog 0123456789ab"
else
# End FreeBSD
h_fail "$prog 0123456789"
# Begin FreeBSD
fi
# End FreeBSD
}
atf_test_case stpcpy
@ -177,7 +265,15 @@ stpcpy_body()
prog="$(atf_get_srcdir)/h_stpcpy"
h_pass "$prog 0123456"
# Begin FreeBSD
if true; then
h_fail "$prog 0123456789ab"
else
# End FreeBSD
h_fail "$prog 0123456789"
# Begin FreeBSD
fi
# End FreeBSD
}
atf_test_case strcat
@ -203,7 +299,15 @@ strncpy_body()
prog="$(atf_get_srcdir)/h_strncpy"
h_pass "$prog 10"
# Begin FreeBSD
if true; then
h_fail "$prog 13"
else
# End FreeBSD
h_fail "$prog 11"
# Begin FreeBSD
fi
# End FreeBSD
}
atf_test_case stpncpy
@ -216,7 +320,15 @@ stpncpy_body()
prog="$(atf_get_srcdir)/h_stpncpy"
h_pass "$prog 10"
# Begin FreeBSD
if true; then
h_fail "$prog 13"
else
# End FreeBSD
h_fail "$prog 11"
# Begin FreeBSD
fi
# End FreeBSD
}
atf_test_case strncat
@ -228,8 +340,16 @@ strncat_body()
{
prog="$(atf_get_srcdir)/h_strncat"
# Begin FreeBSD
h_pass "$prog 8"
if true; then
h_fail "$prog 11"
else
# End FreeBSD
h_fail "$prog 9"
# Begin FreeBSD
fi
# End FreeBSD
}
atf_test_case raw
@ -242,7 +362,15 @@ raw_body()
prog="$(atf_get_srcdir)/h_raw"
h_pass "$prog 9"
# Begin FreeBSD
if true; then
h_fail "$prog 12"
else
# End FreeBSD
h_fail "$prog 10"
# Begin FreeBSD
fi
# End FreeBSD
}
atf_test_case read
@ -255,7 +383,15 @@ read_body()
prog="$(atf_get_srcdir)/h_read"
h_pass "$prog 1024" "echo foo |"
# Begin FreeBSD
if true; then
h_fail "$prog 1027" "echo bar |"
else
# End FreeBSD
h_fail "$prog 1025" "echo bar |"
# Begin FreeBSD
fi
# End FreeBSD
}
atf_test_case readlink
@ -267,8 +403,17 @@ readlink_body()
{
prog="$(atf_get_srcdir)/h_readlink"
# Begin FreeBSD
if true; then
h_pass "$prog 512"
h_fail "$prog 523"
else
# End FreeBSD
h_pass "$prog 1024"
h_fail "$prog 1025"
# Begin FreeBSD
fi
# End FreeBSD
}
atf_test_case getcwd
@ -281,7 +426,13 @@ getcwd_body()
prog="$(atf_get_srcdir)/h_getcwd"
h_pass "$prog 1024"
# Begin FreeBSD
if false; then
# End FreeBSD
h_fail "$prog 1025"
# Begin FreeBSD
fi
# End FreeBSD
}
atf_init_test_cases()