diff options
Diffstat (limited to 'lib/libc/tests/secure/fortify_unistd_test.c')
-rw-r--r-- | lib/libc/tests/secure/fortify_unistd_test.c | 462 |
1 files changed, 322 insertions, 140 deletions
diff --git a/lib/libc/tests/secure/fortify_unistd_test.c b/lib/libc/tests/secure/fortify_unistd_test.c index e467ba849bd4..b12ef2bbb8ea 100644 --- a/lib/libc/tests/secure/fortify_unistd_test.c +++ b/lib/libc/tests/secure/fortify_unistd_test.c @@ -4,6 +4,7 @@ #define TMPFILE_SIZE (1024 * 32) #include <sys/param.h> +#include <sys/jail.h> #include <sys/random.h> #include <sys/resource.h> #include <sys/select.h> @@ -162,7 +163,31 @@ replace_stdin(void) close(fd); } -ATF_TC_WITHOUT_HEAD(getcwd_before_end); +#define JAIL_HOSTNAME "host.example.com" +#define JAIL_DOMAINNAME "example.com" +static void +dhost_jail(void) +{ + struct iovec iov[4]; + int jid; + + iov[0].iov_base = __DECONST(char *, "host.hostname"); + iov[0].iov_len = sizeof("host.hostname"); + iov[1].iov_base = __DECONST(char *, JAIL_HOSTNAME); + iov[1].iov_len = sizeof(JAIL_HOSTNAME); + iov[2].iov_base = __DECONST(char *, "host.domainname"); + iov[2].iov_len = sizeof("host.domainname"); + iov[3].iov_base = __DECONST(char *, JAIL_DOMAINNAME); + iov[3].iov_len = sizeof(JAIL_DOMAINNAME); + + jid = jail_set(iov, nitems(iov), JAIL_CREATE | JAIL_ATTACH); + ATF_REQUIRE_MSG(jid > 0, "Jail creation failed: %s", strerror(errno)); +} + +ATF_TC(getcwd_before_end); +ATF_TC_HEAD(getcwd_before_end, tc) +{ +} ATF_TC_BODY(getcwd_before_end, tc) { #define BUF &__stack.__buf @@ -180,7 +205,10 @@ ATF_TC_BODY(getcwd_before_end, tc) } -ATF_TC_WITHOUT_HEAD(getcwd_end); +ATF_TC(getcwd_end); +ATF_TC_HEAD(getcwd_end, tc) +{ +} ATF_TC_BODY(getcwd_end, tc) { #define BUF &__stack.__buf @@ -198,7 +226,10 @@ ATF_TC_BODY(getcwd_end, tc) } -ATF_TC_WITHOUT_HEAD(getcwd_heap_before_end); +ATF_TC(getcwd_heap_before_end); +ATF_TC_HEAD(getcwd_heap_before_end, tc) +{ +} ATF_TC_BODY(getcwd_heap_before_end, tc) { #define BUF __stack.__buf @@ -218,7 +249,10 @@ ATF_TC_BODY(getcwd_heap_before_end, tc) } -ATF_TC_WITHOUT_HEAD(getcwd_heap_end); +ATF_TC(getcwd_heap_end); +ATF_TC_HEAD(getcwd_heap_end, tc) +{ +} ATF_TC_BODY(getcwd_heap_end, tc) { #define BUF __stack.__buf @@ -238,7 +272,10 @@ ATF_TC_BODY(getcwd_heap_end, tc) } -ATF_TC_WITHOUT_HEAD(getcwd_heap_after_end); +ATF_TC(getcwd_heap_after_end); +ATF_TC_HEAD(getcwd_heap_after_end, tc) +{ +} ATF_TC_BODY(getcwd_heap_after_end, tc) { #define BUF __stack.__buf @@ -289,7 +326,10 @@ monitor: } -ATF_TC_WITHOUT_HEAD(getgrouplist_before_end); +ATF_TC(getgrouplist_before_end); +ATF_TC_HEAD(getgrouplist_before_end, tc) +{ +} ATF_TC_BODY(getgrouplist_before_end, tc) { #define BUF &__stack.__buf @@ -308,7 +348,10 @@ ATF_TC_BODY(getgrouplist_before_end, tc) } -ATF_TC_WITHOUT_HEAD(getgrouplist_end); +ATF_TC(getgrouplist_end); +ATF_TC_HEAD(getgrouplist_end, tc) +{ +} ATF_TC_BODY(getgrouplist_end, tc) { #define BUF &__stack.__buf @@ -327,7 +370,10 @@ ATF_TC_BODY(getgrouplist_end, tc) } -ATF_TC_WITHOUT_HEAD(getgrouplist_heap_before_end); +ATF_TC(getgrouplist_heap_before_end); +ATF_TC_HEAD(getgrouplist_heap_before_end, tc) +{ +} ATF_TC_BODY(getgrouplist_heap_before_end, tc) { #define BUF __stack.__buf @@ -348,7 +394,10 @@ ATF_TC_BODY(getgrouplist_heap_before_end, tc) } -ATF_TC_WITHOUT_HEAD(getgrouplist_heap_end); +ATF_TC(getgrouplist_heap_end); +ATF_TC_HEAD(getgrouplist_heap_end, tc) +{ +} ATF_TC_BODY(getgrouplist_heap_end, tc) { #define BUF __stack.__buf @@ -369,7 +418,10 @@ ATF_TC_BODY(getgrouplist_heap_end, tc) } -ATF_TC_WITHOUT_HEAD(getgrouplist_heap_after_end); +ATF_TC(getgrouplist_heap_after_end); +ATF_TC_HEAD(getgrouplist_heap_after_end, tc) +{ +} ATF_TC_BODY(getgrouplist_heap_after_end, tc) { #define BUF __stack.__buf @@ -421,7 +473,10 @@ monitor: } -ATF_TC_WITHOUT_HEAD(getgroups_before_end); +ATF_TC(getgroups_before_end); +ATF_TC_HEAD(getgroups_before_end, tc) +{ +} ATF_TC_BODY(getgroups_before_end, tc) { #define BUF &__stack.__buf @@ -439,7 +494,10 @@ ATF_TC_BODY(getgroups_before_end, tc) } -ATF_TC_WITHOUT_HEAD(getgroups_end); +ATF_TC(getgroups_end); +ATF_TC_HEAD(getgroups_end, tc) +{ +} ATF_TC_BODY(getgroups_end, tc) { #define BUF &__stack.__buf @@ -457,7 +515,10 @@ ATF_TC_BODY(getgroups_end, tc) } -ATF_TC_WITHOUT_HEAD(getgroups_heap_before_end); +ATF_TC(getgroups_heap_before_end); +ATF_TC_HEAD(getgroups_heap_before_end, tc) +{ +} ATF_TC_BODY(getgroups_heap_before_end, tc) { #define BUF __stack.__buf @@ -477,7 +538,10 @@ ATF_TC_BODY(getgroups_heap_before_end, tc) } -ATF_TC_WITHOUT_HEAD(getgroups_heap_end); +ATF_TC(getgroups_heap_end); +ATF_TC_HEAD(getgroups_heap_end, tc) +{ +} ATF_TC_BODY(getgroups_heap_end, tc) { #define BUF __stack.__buf @@ -497,7 +561,10 @@ ATF_TC_BODY(getgroups_heap_end, tc) } -ATF_TC_WITHOUT_HEAD(getgroups_heap_after_end); +ATF_TC(getgroups_heap_after_end); +ATF_TC_HEAD(getgroups_heap_after_end, tc) +{ +} ATF_TC_BODY(getgroups_heap_after_end, tc) { #define BUF __stack.__buf @@ -548,7 +615,10 @@ monitor: } -ATF_TC_WITHOUT_HEAD(getloginclass_before_end); +ATF_TC(getloginclass_before_end); +ATF_TC_HEAD(getloginclass_before_end, tc) +{ +} ATF_TC_BODY(getloginclass_before_end, tc) { #define BUF &__stack.__buf @@ -566,7 +636,10 @@ ATF_TC_BODY(getloginclass_before_end, tc) } -ATF_TC_WITHOUT_HEAD(getloginclass_end); +ATF_TC(getloginclass_end); +ATF_TC_HEAD(getloginclass_end, tc) +{ +} ATF_TC_BODY(getloginclass_end, tc) { #define BUF &__stack.__buf @@ -584,7 +657,10 @@ ATF_TC_BODY(getloginclass_end, tc) } -ATF_TC_WITHOUT_HEAD(getloginclass_heap_before_end); +ATF_TC(getloginclass_heap_before_end); +ATF_TC_HEAD(getloginclass_heap_before_end, tc) +{ +} ATF_TC_BODY(getloginclass_heap_before_end, tc) { #define BUF __stack.__buf @@ -604,7 +680,10 @@ ATF_TC_BODY(getloginclass_heap_before_end, tc) } -ATF_TC_WITHOUT_HEAD(getloginclass_heap_end); +ATF_TC(getloginclass_heap_end); +ATF_TC_HEAD(getloginclass_heap_end, tc) +{ +} ATF_TC_BODY(getloginclass_heap_end, tc) { #define BUF __stack.__buf @@ -624,7 +703,10 @@ ATF_TC_BODY(getloginclass_heap_end, tc) } -ATF_TC_WITHOUT_HEAD(getloginclass_heap_after_end); +ATF_TC(getloginclass_heap_after_end); +ATF_TC_HEAD(getloginclass_heap_after_end, tc) +{ +} ATF_TC_BODY(getloginclass_heap_after_end, tc) { #define BUF __stack.__buf @@ -675,7 +757,10 @@ monitor: } -ATF_TC_WITHOUT_HEAD(pread_before_end); +ATF_TC(pread_before_end); +ATF_TC_HEAD(pread_before_end, tc) +{ +} ATF_TC_BODY(pread_before_end, tc) { #define BUF &__stack.__buf @@ -696,7 +781,10 @@ ATF_TC_BODY(pread_before_end, tc) } -ATF_TC_WITHOUT_HEAD(pread_end); +ATF_TC(pread_end); +ATF_TC_HEAD(pread_end, tc) +{ +} ATF_TC_BODY(pread_end, tc) { #define BUF &__stack.__buf @@ -717,7 +805,10 @@ ATF_TC_BODY(pread_end, tc) } -ATF_TC_WITHOUT_HEAD(pread_heap_before_end); +ATF_TC(pread_heap_before_end); +ATF_TC_HEAD(pread_heap_before_end, tc) +{ +} ATF_TC_BODY(pread_heap_before_end, tc) { #define BUF __stack.__buf @@ -739,7 +830,10 @@ ATF_TC_BODY(pread_heap_before_end, tc) } -ATF_TC_WITHOUT_HEAD(pread_heap_end); +ATF_TC(pread_heap_end); +ATF_TC_HEAD(pread_heap_end, tc) +{ +} ATF_TC_BODY(pread_heap_end, tc) { #define BUF __stack.__buf @@ -761,7 +855,10 @@ ATF_TC_BODY(pread_heap_end, tc) } -ATF_TC_WITHOUT_HEAD(pread_heap_after_end); +ATF_TC(pread_heap_after_end); +ATF_TC_HEAD(pread_heap_after_end, tc) +{ +} ATF_TC_BODY(pread_heap_after_end, tc) { #define BUF __stack.__buf @@ -814,7 +911,10 @@ monitor: } -ATF_TC_WITHOUT_HEAD(read_before_end); +ATF_TC(read_before_end); +ATF_TC_HEAD(read_before_end, tc) +{ +} ATF_TC_BODY(read_before_end, tc) { #define BUF &__stack.__buf @@ -835,7 +935,10 @@ ATF_TC_BODY(read_before_end, tc) } -ATF_TC_WITHOUT_HEAD(read_end); +ATF_TC(read_end); +ATF_TC_HEAD(read_end, tc) +{ +} ATF_TC_BODY(read_end, tc) { #define BUF &__stack.__buf @@ -856,7 +959,10 @@ ATF_TC_BODY(read_end, tc) } -ATF_TC_WITHOUT_HEAD(read_heap_before_end); +ATF_TC(read_heap_before_end); +ATF_TC_HEAD(read_heap_before_end, tc) +{ +} ATF_TC_BODY(read_heap_before_end, tc) { #define BUF __stack.__buf @@ -878,7 +984,10 @@ ATF_TC_BODY(read_heap_before_end, tc) } -ATF_TC_WITHOUT_HEAD(read_heap_end); +ATF_TC(read_heap_end); +ATF_TC_HEAD(read_heap_end, tc) +{ +} ATF_TC_BODY(read_heap_end, tc) { #define BUF __stack.__buf @@ -900,7 +1009,10 @@ ATF_TC_BODY(read_heap_end, tc) } -ATF_TC_WITHOUT_HEAD(read_heap_after_end); +ATF_TC(read_heap_after_end); +ATF_TC_HEAD(read_heap_after_end, tc) +{ +} ATF_TC_BODY(read_heap_after_end, tc) { #define BUF __stack.__buf @@ -953,7 +1065,10 @@ monitor: } -ATF_TC_WITHOUT_HEAD(readlink_before_end); +ATF_TC(readlink_before_end); +ATF_TC_HEAD(readlink_before_end, tc) +{ +} ATF_TC_BODY(readlink_before_end, tc) { #define BUF &__stack.__buf @@ -974,7 +1089,10 @@ ATF_TC_BODY(readlink_before_end, tc) } -ATF_TC_WITHOUT_HEAD(readlink_end); +ATF_TC(readlink_end); +ATF_TC_HEAD(readlink_end, tc) +{ +} ATF_TC_BODY(readlink_end, tc) { #define BUF &__stack.__buf @@ -995,7 +1113,10 @@ ATF_TC_BODY(readlink_end, tc) } -ATF_TC_WITHOUT_HEAD(readlink_heap_before_end); +ATF_TC(readlink_heap_before_end); +ATF_TC_HEAD(readlink_heap_before_end, tc) +{ +} ATF_TC_BODY(readlink_heap_before_end, tc) { #define BUF __stack.__buf @@ -1017,7 +1138,10 @@ ATF_TC_BODY(readlink_heap_before_end, tc) } -ATF_TC_WITHOUT_HEAD(readlink_heap_end); +ATF_TC(readlink_heap_end); +ATF_TC_HEAD(readlink_heap_end, tc) +{ +} ATF_TC_BODY(readlink_heap_end, tc) { #define BUF __stack.__buf @@ -1039,7 +1163,10 @@ ATF_TC_BODY(readlink_heap_end, tc) } -ATF_TC_WITHOUT_HEAD(readlink_heap_after_end); +ATF_TC(readlink_heap_after_end); +ATF_TC_HEAD(readlink_heap_after_end, tc) +{ +} ATF_TC_BODY(readlink_heap_after_end, tc) { #define BUF __stack.__buf @@ -1092,7 +1219,10 @@ monitor: } -ATF_TC_WITHOUT_HEAD(readlinkat_before_end); +ATF_TC(readlinkat_before_end); +ATF_TC_HEAD(readlinkat_before_end, tc) +{ +} ATF_TC_BODY(readlinkat_before_end, tc) { #define BUF &__stack.__buf @@ -1113,7 +1243,10 @@ ATF_TC_BODY(readlinkat_before_end, tc) } -ATF_TC_WITHOUT_HEAD(readlinkat_end); +ATF_TC(readlinkat_end); +ATF_TC_HEAD(readlinkat_end, tc) +{ +} ATF_TC_BODY(readlinkat_end, tc) { #define BUF &__stack.__buf @@ -1134,7 +1267,10 @@ ATF_TC_BODY(readlinkat_end, tc) } -ATF_TC_WITHOUT_HEAD(readlinkat_heap_before_end); +ATF_TC(readlinkat_heap_before_end); +ATF_TC_HEAD(readlinkat_heap_before_end, tc) +{ +} ATF_TC_BODY(readlinkat_heap_before_end, tc) { #define BUF __stack.__buf @@ -1156,7 +1292,10 @@ ATF_TC_BODY(readlinkat_heap_before_end, tc) } -ATF_TC_WITHOUT_HEAD(readlinkat_heap_end); +ATF_TC(readlinkat_heap_end); +ATF_TC_HEAD(readlinkat_heap_end, tc) +{ +} ATF_TC_BODY(readlinkat_heap_end, tc) { #define BUF __stack.__buf @@ -1178,7 +1317,10 @@ ATF_TC_BODY(readlinkat_heap_end, tc) } -ATF_TC_WITHOUT_HEAD(readlinkat_heap_after_end); +ATF_TC(readlinkat_heap_after_end); +ATF_TC_HEAD(readlinkat_heap_after_end, tc) +{ +} ATF_TC_BODY(readlinkat_heap_after_end, tc) { #define BUF __stack.__buf @@ -1231,53 +1373,57 @@ monitor: } -ATF_TC_WITHOUT_HEAD(getdomainname_before_end); +ATF_TC(getdomainname_before_end); +ATF_TC_HEAD(getdomainname_before_end, tc) +{ + atf_tc_set_md_var(tc, "require.user", "root"); +} ATF_TC_BODY(getdomainname_before_end, tc) { #define BUF &__stack.__buf struct { uint8_t padding_l; - unsigned char __buf[4]; + unsigned char __buf[12]; uint8_t padding_r; } __stack; const size_t __bufsz __unused = sizeof(__stack.__buf); - const size_t __len = 4 - 1; + const size_t __len = 12 - 1; const size_t __idx __unused = __len - 1; - char sysdomain[256]; - - (void)getdomainname(sysdomain, __len); - if (strlen(sysdomain) <= __len) - atf_tc_skip("domain name too short for testing"); + dhost_jail(); getdomainname(__stack.__buf, __len); #undef BUF } -ATF_TC_WITHOUT_HEAD(getdomainname_end); +ATF_TC(getdomainname_end); +ATF_TC_HEAD(getdomainname_end, tc) +{ + atf_tc_set_md_var(tc, "require.user", "root"); +} ATF_TC_BODY(getdomainname_end, tc) { #define BUF &__stack.__buf struct { uint8_t padding_l; - unsigned char __buf[4]; + unsigned char __buf[12]; uint8_t padding_r; } __stack; const size_t __bufsz __unused = sizeof(__stack.__buf); - const size_t __len = 4; + const size_t __len = 12; const size_t __idx __unused = __len - 1; - char sysdomain[256]; - - (void)getdomainname(sysdomain, __len); - if (strlen(sysdomain) <= __len) - atf_tc_skip("domain name too short for testing"); + dhost_jail(); getdomainname(__stack.__buf, __len); #undef BUF } -ATF_TC_WITHOUT_HEAD(getdomainname_heap_before_end); +ATF_TC(getdomainname_heap_before_end); +ATF_TC_HEAD(getdomainname_heap_before_end, tc) +{ + atf_tc_set_md_var(tc, "require.user", "root"); +} ATF_TC_BODY(getdomainname_heap_before_end, tc) { #define BUF __stack.__buf @@ -1286,15 +1432,11 @@ ATF_TC_BODY(getdomainname_heap_before_end, tc) unsigned char * __buf; uint8_t padding_r; } __stack; - const size_t __bufsz __unused = sizeof(*__stack.__buf) * (4); - const size_t __len = 4 - 1; + const size_t __bufsz __unused = sizeof(*__stack.__buf) * (12); + const size_t __len = 12 - 1; const size_t __idx __unused = __len - 1; - char sysdomain[256]; - - (void)getdomainname(sysdomain, __len); - if (strlen(sysdomain) <= __len) - atf_tc_skip("domain name too short for testing"); + dhost_jail(); __stack.__buf = malloc(__bufsz); getdomainname(__stack.__buf, __len); @@ -1302,7 +1444,11 @@ ATF_TC_BODY(getdomainname_heap_before_end, tc) } -ATF_TC_WITHOUT_HEAD(getdomainname_heap_end); +ATF_TC(getdomainname_heap_end); +ATF_TC_HEAD(getdomainname_heap_end, tc) +{ + atf_tc_set_md_var(tc, "require.user", "root"); +} ATF_TC_BODY(getdomainname_heap_end, tc) { #define BUF __stack.__buf @@ -1311,15 +1457,11 @@ ATF_TC_BODY(getdomainname_heap_end, tc) unsigned char * __buf; uint8_t padding_r; } __stack; - const size_t __bufsz __unused = sizeof(*__stack.__buf) * (4); - const size_t __len = 4; + const size_t __bufsz __unused = sizeof(*__stack.__buf) * (12); + const size_t __len = 12; const size_t __idx __unused = __len - 1; - char sysdomain[256]; - - (void)getdomainname(sysdomain, __len); - if (strlen(sysdomain) <= __len) - atf_tc_skip("domain name too short for testing"); + dhost_jail(); __stack.__buf = malloc(__bufsz); getdomainname(__stack.__buf, __len); @@ -1327,7 +1469,11 @@ ATF_TC_BODY(getdomainname_heap_end, tc) } -ATF_TC_WITHOUT_HEAD(getdomainname_heap_after_end); +ATF_TC(getdomainname_heap_after_end); +ATF_TC_HEAD(getdomainname_heap_after_end, tc) +{ + atf_tc_set_md_var(tc, "require.user", "root"); +} ATF_TC_BODY(getdomainname_heap_after_end, tc) { #define BUF __stack.__buf @@ -1336,17 +1482,13 @@ ATF_TC_BODY(getdomainname_heap_after_end, tc) unsigned char * __buf; uint8_t padding_r; } __stack; - const size_t __bufsz __unused = sizeof(*__stack.__buf) * (4); - const size_t __len = 4 + 1; + const size_t __bufsz __unused = sizeof(*__stack.__buf) * (12); + const size_t __len = 12 + 1; const size_t __idx __unused = __len - 1; pid_t __child; int __status; - char sysdomain[256]; - - (void)getdomainname(sysdomain, __len); - if (strlen(sysdomain) <= __len) - atf_tc_skip("domain name too short for testing"); + dhost_jail(); __child = fork(); ATF_REQUIRE(__child >= 0); if (__child > 0) @@ -1383,7 +1525,10 @@ monitor: } -ATF_TC_WITHOUT_HEAD(getentropy_before_end); +ATF_TC(getentropy_before_end); +ATF_TC_HEAD(getentropy_before_end, tc) +{ +} ATF_TC_BODY(getentropy_before_end, tc) { #define BUF &__stack.__buf @@ -1401,7 +1546,10 @@ ATF_TC_BODY(getentropy_before_end, tc) } -ATF_TC_WITHOUT_HEAD(getentropy_end); +ATF_TC(getentropy_end); +ATF_TC_HEAD(getentropy_end, tc) +{ +} ATF_TC_BODY(getentropy_end, tc) { #define BUF &__stack.__buf @@ -1419,7 +1567,10 @@ ATF_TC_BODY(getentropy_end, tc) } -ATF_TC_WITHOUT_HEAD(getentropy_heap_before_end); +ATF_TC(getentropy_heap_before_end); +ATF_TC_HEAD(getentropy_heap_before_end, tc) +{ +} ATF_TC_BODY(getentropy_heap_before_end, tc) { #define BUF __stack.__buf @@ -1439,7 +1590,10 @@ ATF_TC_BODY(getentropy_heap_before_end, tc) } -ATF_TC_WITHOUT_HEAD(getentropy_heap_end); +ATF_TC(getentropy_heap_end); +ATF_TC_HEAD(getentropy_heap_end, tc) +{ +} ATF_TC_BODY(getentropy_heap_end, tc) { #define BUF __stack.__buf @@ -1459,7 +1613,10 @@ ATF_TC_BODY(getentropy_heap_end, tc) } -ATF_TC_WITHOUT_HEAD(getentropy_heap_after_end); +ATF_TC(getentropy_heap_after_end); +ATF_TC_HEAD(getentropy_heap_after_end, tc) +{ +} ATF_TC_BODY(getentropy_heap_after_end, tc) { #define BUF __stack.__buf @@ -1510,55 +1667,57 @@ monitor: } -ATF_TC_WITHOUT_HEAD(gethostname_before_end); +ATF_TC(gethostname_before_end); +ATF_TC_HEAD(gethostname_before_end, tc) +{ + atf_tc_set_md_var(tc, "require.user", "root"); +} ATF_TC_BODY(gethostname_before_end, tc) { #define BUF &__stack.__buf struct { uint8_t padding_l; - unsigned char __buf[4]; + unsigned char __buf[17]; uint8_t padding_r; } __stack; const size_t __bufsz __unused = sizeof(__stack.__buf); - const size_t __len = 4 - 1; + const size_t __len = 17 - 1; const size_t __idx __unused = __len - 1; - char syshost[256]; - int error; - - error = gethostname(syshost, __len); - if (error != 0 || strlen(syshost) <= __len) - atf_tc_skip("hostname too short for testing"); + dhost_jail(); gethostname(__stack.__buf, __len); #undef BUF } -ATF_TC_WITHOUT_HEAD(gethostname_end); +ATF_TC(gethostname_end); +ATF_TC_HEAD(gethostname_end, tc) +{ + atf_tc_set_md_var(tc, "require.user", "root"); +} ATF_TC_BODY(gethostname_end, tc) { #define BUF &__stack.__buf struct { uint8_t padding_l; - unsigned char __buf[4]; + unsigned char __buf[17]; uint8_t padding_r; } __stack; const size_t __bufsz __unused = sizeof(__stack.__buf); - const size_t __len = 4; + const size_t __len = 17; const size_t __idx __unused = __len - 1; - char syshost[256]; - int error; - - error = gethostname(syshost, __len); - if (error != 0 || strlen(syshost) <= __len) - atf_tc_skip("hostname too short for testing"); + dhost_jail(); gethostname(__stack.__buf, __len); #undef BUF } -ATF_TC_WITHOUT_HEAD(gethostname_heap_before_end); +ATF_TC(gethostname_heap_before_end); +ATF_TC_HEAD(gethostname_heap_before_end, tc) +{ + atf_tc_set_md_var(tc, "require.user", "root"); +} ATF_TC_BODY(gethostname_heap_before_end, tc) { #define BUF __stack.__buf @@ -1567,16 +1726,11 @@ ATF_TC_BODY(gethostname_heap_before_end, tc) unsigned char * __buf; uint8_t padding_r; } __stack; - const size_t __bufsz __unused = sizeof(*__stack.__buf) * (4); - const size_t __len = 4 - 1; + const size_t __bufsz __unused = sizeof(*__stack.__buf) * (17); + const size_t __len = 17 - 1; const size_t __idx __unused = __len - 1; - char syshost[256]; - int error; - - error = gethostname(syshost, __len); - if (error != 0 || strlen(syshost) <= __len) - atf_tc_skip("hostname too short for testing"); + dhost_jail(); __stack.__buf = malloc(__bufsz); gethostname(__stack.__buf, __len); @@ -1584,7 +1738,11 @@ ATF_TC_BODY(gethostname_heap_before_end, tc) } -ATF_TC_WITHOUT_HEAD(gethostname_heap_end); +ATF_TC(gethostname_heap_end); +ATF_TC_HEAD(gethostname_heap_end, tc) +{ + atf_tc_set_md_var(tc, "require.user", "root"); +} ATF_TC_BODY(gethostname_heap_end, tc) { #define BUF __stack.__buf @@ -1593,16 +1751,11 @@ ATF_TC_BODY(gethostname_heap_end, tc) unsigned char * __buf; uint8_t padding_r; } __stack; - const size_t __bufsz __unused = sizeof(*__stack.__buf) * (4); - const size_t __len = 4; + const size_t __bufsz __unused = sizeof(*__stack.__buf) * (17); + const size_t __len = 17; const size_t __idx __unused = __len - 1; - char syshost[256]; - int error; - - error = gethostname(syshost, __len); - if (error != 0 || strlen(syshost) <= __len) - atf_tc_skip("hostname too short for testing"); + dhost_jail(); __stack.__buf = malloc(__bufsz); gethostname(__stack.__buf, __len); @@ -1610,7 +1763,11 @@ ATF_TC_BODY(gethostname_heap_end, tc) } -ATF_TC_WITHOUT_HEAD(gethostname_heap_after_end); +ATF_TC(gethostname_heap_after_end); +ATF_TC_HEAD(gethostname_heap_after_end, tc) +{ + atf_tc_set_md_var(tc, "require.user", "root"); +} ATF_TC_BODY(gethostname_heap_after_end, tc) { #define BUF __stack.__buf @@ -1619,18 +1776,13 @@ ATF_TC_BODY(gethostname_heap_after_end, tc) unsigned char * __buf; uint8_t padding_r; } __stack; - const size_t __bufsz __unused = sizeof(*__stack.__buf) * (4); - const size_t __len = 4 + 1; + const size_t __bufsz __unused = sizeof(*__stack.__buf) * (17); + const size_t __len = 17 + 1; const size_t __idx __unused = __len - 1; pid_t __child; int __status; - char syshost[256]; - int error; - - error = gethostname(syshost, __len); - if (error != 0 || strlen(syshost) <= __len) - atf_tc_skip("hostname too short for testing"); + dhost_jail(); __child = fork(); ATF_REQUIRE(__child >= 0); if (__child > 0) @@ -1667,7 +1819,10 @@ monitor: } -ATF_TC_WITHOUT_HEAD(getlogin_r_before_end); +ATF_TC(getlogin_r_before_end); +ATF_TC_HEAD(getlogin_r_before_end, tc) +{ +} ATF_TC_BODY(getlogin_r_before_end, tc) { #define BUF &__stack.__buf @@ -1685,7 +1840,10 @@ ATF_TC_BODY(getlogin_r_before_end, tc) } -ATF_TC_WITHOUT_HEAD(getlogin_r_end); +ATF_TC(getlogin_r_end); +ATF_TC_HEAD(getlogin_r_end, tc) +{ +} ATF_TC_BODY(getlogin_r_end, tc) { #define BUF &__stack.__buf @@ -1703,7 +1861,10 @@ ATF_TC_BODY(getlogin_r_end, tc) } -ATF_TC_WITHOUT_HEAD(getlogin_r_heap_before_end); +ATF_TC(getlogin_r_heap_before_end); +ATF_TC_HEAD(getlogin_r_heap_before_end, tc) +{ +} ATF_TC_BODY(getlogin_r_heap_before_end, tc) { #define BUF __stack.__buf @@ -1723,7 +1884,10 @@ ATF_TC_BODY(getlogin_r_heap_before_end, tc) } -ATF_TC_WITHOUT_HEAD(getlogin_r_heap_end); +ATF_TC(getlogin_r_heap_end); +ATF_TC_HEAD(getlogin_r_heap_end, tc) +{ +} ATF_TC_BODY(getlogin_r_heap_end, tc) { #define BUF __stack.__buf @@ -1743,7 +1907,10 @@ ATF_TC_BODY(getlogin_r_heap_end, tc) } -ATF_TC_WITHOUT_HEAD(getlogin_r_heap_after_end); +ATF_TC(getlogin_r_heap_after_end); +ATF_TC_HEAD(getlogin_r_heap_after_end, tc) +{ +} ATF_TC_BODY(getlogin_r_heap_after_end, tc) { #define BUF __stack.__buf @@ -1794,7 +1961,10 @@ monitor: } -ATF_TC_WITHOUT_HEAD(ttyname_r_before_end); +ATF_TC(ttyname_r_before_end); +ATF_TC_HEAD(ttyname_r_before_end, tc) +{ +} ATF_TC_BODY(ttyname_r_before_end, tc) { #define BUF &__stack.__buf @@ -1817,7 +1987,10 @@ ATF_TC_BODY(ttyname_r_before_end, tc) } -ATF_TC_WITHOUT_HEAD(ttyname_r_end); +ATF_TC(ttyname_r_end); +ATF_TC_HEAD(ttyname_r_end, tc) +{ +} ATF_TC_BODY(ttyname_r_end, tc) { #define BUF &__stack.__buf @@ -1840,7 +2013,10 @@ ATF_TC_BODY(ttyname_r_end, tc) } -ATF_TC_WITHOUT_HEAD(ttyname_r_heap_before_end); +ATF_TC(ttyname_r_heap_before_end); +ATF_TC_HEAD(ttyname_r_heap_before_end, tc) +{ +} ATF_TC_BODY(ttyname_r_heap_before_end, tc) { #define BUF __stack.__buf @@ -1865,7 +2041,10 @@ ATF_TC_BODY(ttyname_r_heap_before_end, tc) } -ATF_TC_WITHOUT_HEAD(ttyname_r_heap_end); +ATF_TC(ttyname_r_heap_end); +ATF_TC_HEAD(ttyname_r_heap_end, tc) +{ +} ATF_TC_BODY(ttyname_r_heap_end, tc) { #define BUF __stack.__buf @@ -1890,7 +2069,10 @@ ATF_TC_BODY(ttyname_r_heap_end, tc) } -ATF_TC_WITHOUT_HEAD(ttyname_r_heap_after_end); +ATF_TC(ttyname_r_heap_after_end); +ATF_TC_HEAD(ttyname_r_heap_after_end, tc) +{ +} ATF_TC_BODY(ttyname_r_heap_after_end, tc) { #define BUF __stack.__buf |