[CRIU] [PATCH] zdtm/cwd01: avoid resolving an abs path

Andrew Vagin avagin at openvz.org
Mon Dec 22 23:52:46 PST 2014


We may not have permissions for this.

Reported-by: Mr Jenkins
Fixes: 7dbd38dbc939 ("zdtm: set additional groups along with uids and gids")
Cc: Ruslan Kuprieiev <kupruser at gmail.com>
Signed-off-by: Andrew Vagin <avagin at openvz.org>
---
 test/zdtm/live/static/cwd01.c | 16 ++++++++++------
 1 file changed, 10 insertions(+), 6 deletions(-)

diff --git a/test/zdtm/live/static/cwd01.c b/test/zdtm/live/static/cwd01.c
index 13fd2a7..a0a9f8a 100644
--- a/test/zdtm/live/static/cwd01.c
+++ b/test/zdtm/live/static/cwd01.c
@@ -5,6 +5,9 @@
 #include <string.h>
 #include <sys/wait.h>
 #include <linux/limits.h>
+#include <sys/types.h>
+#include <fcntl.h>
+
 
 #include "zdtmtst.h"
 
@@ -16,8 +19,8 @@ TEST_OPTION(dirname, string, "directory name", 1);
 
 int main(int argc, char **argv)
 {
-	char cwd0[PATH_MAX], cwd1[PATH_MAX], cwd2[PATH_MAX];
-	int pid, p[2], aux, aux2;
+	char cwd1[PATH_MAX], cwd2[PATH_MAX];
+	int pid, p[2], aux, aux2, fd;
 
 	test_init(argc, argv);
 
@@ -30,8 +33,9 @@ int main(int argc, char **argv)
 		exit(aux ? 1 : 0);
 	}
 
-	if (!getcwd(cwd0, sizeof(cwd0))) {
-		err("can't get cwd: %m\n");
+	fd = open(".", O_DIRECTORY | O_RDONLY);
+	if (fd == -1) {
+		err("Unable to open the current dir");
 		exit(1);
 	}
 
@@ -87,8 +91,8 @@ int main(int argc, char **argv)
 		pass();
 cleanup:
 	/* return to the initial dir before writing out results */
-	if (chdir(cwd0)) {
-		err("can't change directory to %s: %m\n", cwd0);
+	if (fchdir(fd)) {
+		err("can't restore cwd");
 		exit(1);
 	}
 
-- 
1.9.3



More information about the CRIU mailing list