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:
parent
217eb1256d
commit
f001698bc1
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=274066
@ -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
|
||||
}
|
||||
|
@ -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
|
||||
|
@ -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;
|
||||
}
|
||||
|
@ -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;
|
||||
}
|
||||
|
@ -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()
|
||||
|
Loading…
Reference in New Issue
Block a user