ATF_TC_BODY(mlock_limits, tc) { struct rlimit res; void *buf; pid_t pid; int sta; buf = malloc(page); ATF_REQUIRE(buf != NULL); pid = fork(); ATF_REQUIRE(pid >= 0); if (pid == 0) { for (ssize_t i = page; i >= 2; i -= 100) { res.rlim_cur = i - 1; res.rlim_max = i - 1; (void)fprintf(stderr, "trying to lock %zd bytes " "with %zu byte limit\n", i, (size_t)res.rlim_cur); if (setrlimit(RLIMIT_MEMLOCK, &res) != 0) _exit(EXIT_FAILURE); errno = 0; #ifdef __FreeBSD__ /* * NetBSD doesn't conform to POSIX with ENOMEM requirement; * FreeBSD does. * * See: NetBSD PR # kern/48962 for more details. */ if (mlock(buf, i) != -1 || errno != ENOMEM) { #else if (mlock(buf, i) != -1 || errno != EAGAIN) { #endif (void)munlock(buf, i); _exit(EXIT_FAILURE); } } _exit(EXIT_SUCCESS); } (void)wait(&sta); if (WIFEXITED(sta) == 0 || WEXITSTATUS(sta) != EXIT_SUCCESS) atf_tc_fail("mlock(2) locked beyond system limits"); free(buf); } #ifdef __FreeBSD__ ATF_TC_WITH_CLEANUP(mlock_mmap); #else ATF_TC(mlock_mmap); #endif ATF_TC_HEAD(mlock_mmap, tc) { atf_tc_set_md_var(tc, "descr", "Test mlock(2)-mmap(2) interaction"); #ifdef __FreeBSD__ atf_tc_set_md_var(tc, "require.config", "allow_sysctl_side_effects"); atf_tc_set_md_var(tc, "require.user", "root"); #endif }
ATF_TC_HEAD(totext, tc) { atf_tc_set_md_var(tc, "descr", "masterfile totext tests"); }
ATF_TC_HEAD(dumpraw, tc) { atf_tc_set_md_var(tc, "descr", "dns_master_dump*() functions " "dump valid raw files"); }
ATF_TC_HEAD(master_includelist, tc) { atf_tc_set_md_var(tc, "descr", "dns_master_loadfile4() returns " "names of included file"); }
ATF_TC_HEAD(blanklines, tc) { atf_tc_set_md_var(tc, "descr", "dns_master_loadfile() handles " "non-empty blank lines"); }
ATF_TC_HEAD(badclass, tc) { atf_tc_set_md_var(tc, "descr", "dns_master_loadfile() returns " "DNS_R_BADCLASS when record class " "doesn't match zone class"); }
ATF_TC_HEAD(maxrdata, tc) { atf_tc_set_md_var(tc, "descr", "dns_master_loadfile() returns " "ISC_R_SUCCESS when record is maximum " "size"); }
ATF_TC_HEAD (fork_stop, tc) { atf_tc_set_md_var (tc, "descr", "Helper test case for the t_fork test " "program"); }
ATF_TC_HEAD (srcdir_exists, tc) { atf_tc_set_md_var (tc, "descr", "Helper test case for the t_srcdir test " "program"); }
ATF_TC_HEAD (expect_timeout_and_hang, tc) { atf_tc_set_md_var (tc, "timeout", "1"); }
ATF_TC_HEAD (expect_timeout_but_pass, tc) { atf_tc_set_md_var (tc, "timeout", "1"); }
ATF_TC_HEAD (config_multi_value, tc) { atf_tc_set_md_var (tc, "descr", "Helper test case for the t_config test " "program"); }
ATF_TC_HEAD(paccept_nonblock, tc) { atf_tc_set_md_var(tc, "descr", "Check that fcntl(2) resets " "the non-blocking flag on non-blocking sockets"); }
ATF_TC_HEAD(isinf_basic, tc) { atf_tc_set_md_var(tc, "descr", "Verify that isinf(3) works"); }
ATF_TC_HEAD(noowner, tc) { atf_tc_set_md_var(tc, "descr", "dns_master_loadfile() accepts broken " "zones with no TTL for first record " "if it is an SOA"); }
ATF_TC_HEAD (result_newlines_skip, tc) { atf_tc_set_md_var (tc, "descr", "Helper test case for the t_result test " "program"); }
ATF_TC_HEAD(nottl, tc) { atf_tc_set_md_var(tc, "descr", "dns_master_loadfile() returns " "DNS_R_NOOWNER when no owner name " "is specified"); }
ATF_TC_HEAD (cleanup_fail, tc) { atf_tc_set_md_var (tc, "descr", "Helper test case for the t_cleanup test " "program"); }
ATF_TC_HEAD(toobig, tc) { atf_tc_set_md_var(tc, "descr", "dns_master_loadfile() returns " "ISC_R_NOSPACE when record is too big"); }
ATF_TC_HEAD(serialize, tc) { atf_tc_set_md_var(tc, "descr", "Test writing an rbt to file"); }
ATF_TC_HEAD(dnsnokey, tc) { atf_tc_set_md_var(tc, "descr", "dns_master_loadfile() understands " "DNSKEY with no key material"); }
ATF_TC_HEAD(deserialize_corrupt, tc) { atf_tc_set_md_var(tc, "descr", "Test reading a corrupt map file"); }
ATF_TC_HEAD(includefail, tc) { atf_tc_set_md_var(tc, "descr", "dns_master_loadfile() understands " "$INCLUDE failures"); }
ATF_TC_HEAD(serialize_align, tc) { atf_tc_set_md_var(tc, "descr", "Test the dns_rbt_serialize_align() function."); }
ATF_TC_HEAD(leadingzero, tc) { atf_tc_set_md_var(tc, "descr", "dns_master_loadfile() allows " "leading zeroes in SOA"); }
ATF_TC_HEAD(array_replace_dict_by_name_test, tc) { atf_tc_set_md_var(tc, "descr", "Test xbps_array_replace_dict_by_name"); }
ATF_TC_HEAD(loadraw, tc) { atf_tc_set_md_var(tc, "descr", "dns_master_loadfile() loads a " "valid raw file and returns success"); }
ATF_TC_HEAD(unexpected, tc) { atf_tc_set_md_var(tc, "descr", "dns_master_loadfile() returns " "DNS_R_UNEXPECTED when file ends " "too soon"); }
ATF_TC_HEAD(neworigin, tc) { atf_tc_set_md_var(tc, "descr", "dns_master_loadfile() rejects " "zones with inherited name following " "$ORIGIN"); }
ATF_TC_HEAD(mlock_limits, tc) { atf_tc_set_md_var(tc, "descr", "Test system limits with mlock(2)"); }