[CRIU] [PATCH v5] zdtm: test that UNIX socket owner/group don't change

Pavel Tikhomirov ptikhomirov at parallels.com
Tue Aug 26 23:39:20 PDT 2014


In container c/r(OVZ) UNIX socket uid and gid restored from
connected peer credentials instead of inode once.

https://bugzilla.openvz.org/show_bug.cgi?id=2969

changes:
v2 - cleanup headers, close socket, use err instead fail,
print id's on error.
v3 - wrong patch
v4 - move to sockets00, correct patch-message
v5 - minor cleanup

Signed-off-by: Pavel Tikhomirov <ptikhomirov at parallels.com>
Acked-by: Andrey Vagin <avagin at parallels.com>
---
 test/zdtm.sh                      |  1 +
 test/zdtm/live/static/sockets00.c | 15 +++++++++++++++
 2 files changed, 16 insertions(+)

diff --git a/test/zdtm.sh b/test/zdtm.sh
index da85c92..ab0fed2 100755
--- a/test/zdtm.sh
+++ b/test/zdtm.sh
@@ -223,6 +223,7 @@ deleted_dev
 mntns_open
 mntns_link_remap
 mntns_link_ghost
+sockets00
 "
 
 source $(readlink -f `dirname $0`/env.sh) || exit 1
diff --git a/test/zdtm/live/static/sockets00.c b/test/zdtm/live/static/sockets00.c
index 6ff93ab..28beb08 100644
--- a/test/zdtm/live/static/sockets00.c
+++ b/test/zdtm/live/static/sockets00.c
@@ -11,6 +11,7 @@
 #include <sys/wait.h>
 #include <sys/un.h>
 #include <sys/stat.h>
+#include <sys/mount.h>
 #include <limits.h>
 #include <fcntl.h>
 
@@ -36,6 +37,8 @@ int main(int argc, char *argv[])
 	char path[PATH_MAX];
 	char buf[64];
 	char *cwd;
+	uid_t uid = 18943;
+	gid_t gid = 58467;
 
 	int ret;
 
@@ -74,6 +77,12 @@ int main(int argc, char *argv[])
 		exit(1);
 	}
 
+	ret = chown(path, uid, gid);
+	if (ret) {
+		err("chown");
+		exit(1);
+	}
+
 	ret = listen(ssk_icon[0], 16);
 	if (ret) {
 		fail("bind\n");
@@ -119,6 +128,12 @@ int main(int argc, char *argv[])
 		exit(1);
 	}
 
+	if (st_b.st_uid != uid || st_b.st_gid != gid) {
+		fail("Owner user or group for %s corrupted, uid=%d, gid=%d",
+		    path, st_b.st_uid, st_b.st_gid);
+		exit(1);
+	}
+
 	ret = accept(ssk_icon[0], NULL, NULL);
 	if (ret < 0) {
 		fail("accept\n");
-- 
1.9.3



More information about the CRIU mailing list