Module Name: src
Committed By: christos
Date: Sun Jul 7 14:27:47 UTC 2024
Modified Files:
src/tests/lib/libc/c063: t_faccessat.c
Log Message:
Add more tests for absolute paths with different fds. (from Svivraj)
To generate a diff of this commit:
cvs rdiff -u -r1.3 -r1.4 src/tests/lib/libc/c063/t_faccessat.c
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/tests/lib/libc/c063/t_faccessat.c
diff -u src/tests/lib/libc/c063/t_faccessat.c:1.3 src/tests/lib/libc/c063/t_faccessat.c:1.4
--- src/tests/lib/libc/c063/t_faccessat.c:1.3 Tue Jan 10 10:13:56 2017
+++ src/tests/lib/libc/c063/t_faccessat.c Sun Jul 7 10:27:47 2024
@@ -1,4 +1,4 @@
-/* $NetBSD: t_faccessat.c,v 1.3 2017/01/10 15:13:56 christos Exp $ */
+/* $NetBSD: t_faccessat.c,v 1.4 2024/07/07 14:27:47 christos Exp $ */
/*-
* Copyright (c) 2012 The NetBSD Foundation, Inc.
@@ -29,7 +29,7 @@
* POSSIBILITY OF SUCH DAMAGE.
*/
#include <sys/cdefs.h>
-__RCSID("$NetBSD: t_faccessat.c,v 1.3 2017/01/10 15:13:56 christos Exp $");
+__RCSID("$NetBSD: t_faccessat.c,v 1.4 2024/07/07 14:27:47 christos Exp $");
#include <sys/param.h>
#include <sys/stat.h>
@@ -72,7 +72,7 @@ ATF_TC(faccessat_fdcwd);
ATF_TC_HEAD(faccessat_fdcwd, tc)
{
atf_tc_set_md_var(tc, "descr",
- "See that faccessat works with fd as AT_FDCWD");
+ "See that faccessat works with fd as AT_FDCWD");
}
ATF_TC_BODY(faccessat_fdcwd, tc)
{
@@ -90,7 +90,7 @@ ATF_TC(faccessat_fdcwderr);
ATF_TC_HEAD(faccessat_fdcwderr, tc)
{
atf_tc_set_md_var(tc, "descr",
- "See that faccessat fails with fd as AT_FDCWD and bad path");
+ "See that faccessat fails with fd as AT_FDCWD and bad path");
}
ATF_TC_BODY(faccessat_fdcwderr, tc)
{
@@ -171,6 +171,68 @@ ATF_TC_BODY(faccessat_fdlink, tc)
ATF_REQUIRE(close(dfd) == 0);
}
+ATF_TC(faccessat_abs);
+ATF_TC_HEAD(faccessat_abs, tc)
+{
+ atf_tc_set_md_var(tc, "descr", "See that faccessat works with invalid "
+ "fd when absolute path is provided.");
+}
+ATF_TC_BODY(faccessat_abs, tc)
+{
+ int fd;
+ char cwd[MAXPATHLEN];
+ char abs_path[MAXPATHLEN];
+
+ ATF_REQUIRE(mkdir(DIR, 0755) == 0);
+ ATF_REQUIRE((fd = open(FILE, O_CREAT|O_RDWR, 0644)) != -1);
+ ATF_REQUIRE(close(fd) == 0);
+
+ ATF_REQUIRE(getcwd(cwd, MAXPATHLEN));
+ snprintf(abs_path, sizeof(abs_path), "%s/%s", cwd, FILE);
+ ATF_REQUIRE(faccessat(-1, abs_path, W_OK, 0) == 0);
+
+}
+
+ATF_TC(faccessat_abs_fddir);
+ATF_TC_HEAD(faccessat_abs_fddir, tc)
+{
+ atf_tc_set_md_var(tc, "descr", "See that faccessat works with "
+ "fd of directory when absolute path is provided.");
+}
+ATF_TC_BODY(faccessat_abs_fddir, tc)
+{
+ int dfd;
+ char cwd[MAXPATHLEN];
+ char abs_path[MAXPATHLEN];
+
+ ATF_REQUIRE(mkdir(DIR, 0755) == 0);
+ ATF_REQUIRE((dfd = open(DIR, O_RDONLY, 0)) != -1);
+ ATF_REQUIRE(close(dfd) == 0);
+
+ ATF_REQUIRE(getcwd(cwd, MAXPATHLEN));
+ snprintf(abs_path, sizeof(abs_path), "%s/%s", cwd, DIR);
+ ATF_REQUIRE(faccessat(dfd, abs_path, W_OK, 0) == 0);
+
+}
+
+ATF_TC(faccessat_abs_fdcwd);
+ATF_TC_HEAD(faccessat_abs_fdcwd, tc)
+{
+ atf_tc_set_md_var(tc, "descr", "See that faccessat works with fd "
+ "of current directory when absolute path is provided.");
+}
+ATF_TC_BODY(faccessat_abs_fdcwd, tc)
+{
+ char cwd[MAXPATHLEN];
+ char abs_path[MAXPATHLEN];
+
+ ATF_REQUIRE(mkdir(DIR, 0755) == 0);
+
+ ATF_REQUIRE(getcwd(cwd, MAXPATHLEN));
+ snprintf(abs_path, sizeof(abs_path), "%s/%s", cwd, DIR);
+ ATF_REQUIRE(faccessat(AT_FDCWD, abs_path, W_OK, 0) == 0);
+}
+
ATF_TP_ADD_TCS(tp)
{
@@ -181,6 +243,9 @@ ATF_TP_ADD_TCS(tp)
ATF_TP_ADD_TC(tp, faccessat_fderr2);
ATF_TP_ADD_TC(tp, faccessat_fderr3);
ATF_TP_ADD_TC(tp, faccessat_fdlink);
+ ATF_TP_ADD_TC(tp, faccessat_abs);
+ ATF_TP_ADD_TC(tp, faccessat_abs_fddir);
+ ATF_TP_ADD_TC(tp, faccessat_abs_fdcwd);
return atf_no_error();
}