Commit 59c968a3 authored by Pavel Tikhomirov's avatar Pavel Tikhomirov Committed by Pavel Emelyanov

zdtm: test that UNIX socket owner/group don't change

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: 's avatarPavel Tikhomirov <ptikhomirov@parallels.com>
Acked-by: 's avatarAndrey Vagin <avagin@parallels.com>
Signed-off-by: 's avatarPavel Emelyanov <xemul@parallels.com>
parent dd375ceb
...@@ -225,6 +225,7 @@ deleted_dev ...@@ -225,6 +225,7 @@ deleted_dev
mntns_open mntns_open
mntns_link_remap mntns_link_remap
mntns_link_ghost mntns_link_ghost
sockets00
" "
source $(readlink -f `dirname $0`/env.sh) || exit 1 source $(readlink -f `dirname $0`/env.sh) || exit 1
......
...@@ -11,6 +11,7 @@ ...@@ -11,6 +11,7 @@
#include <sys/wait.h> #include <sys/wait.h>
#include <sys/un.h> #include <sys/un.h>
#include <sys/stat.h> #include <sys/stat.h>
#include <sys/mount.h>
#include <limits.h> #include <limits.h>
#include <fcntl.h> #include <fcntl.h>
...@@ -36,6 +37,8 @@ int main(int argc, char *argv[]) ...@@ -36,6 +37,8 @@ int main(int argc, char *argv[])
char path[PATH_MAX]; char path[PATH_MAX];
char buf[64]; char buf[64];
char *cwd; char *cwd;
uid_t uid = 18943;
gid_t gid = 58467;
int ret; int ret;
...@@ -74,6 +77,12 @@ int main(int argc, char *argv[]) ...@@ -74,6 +77,12 @@ int main(int argc, char *argv[])
exit(1); exit(1);
} }
ret = chown(path, uid, gid);
if (ret) {
err("chown");
exit(1);
}
ret = listen(ssk_icon[0], 16); ret = listen(ssk_icon[0], 16);
if (ret) { if (ret) {
fail("bind\n"); fail("bind\n");
...@@ -119,6 +128,12 @@ int main(int argc, char *argv[]) ...@@ -119,6 +128,12 @@ int main(int argc, char *argv[])
exit(1); 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); ret = accept(ssk_icon[0], NULL, NULL);
if (ret < 0) { if (ret < 0) {
fail("accept\n"); fail("accept\n");
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment