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

Andrey Vagin avagin at parallels.com
Tue Aug 26 12:51:49 PDT 2014


On Fri, Aug 22, 2014 at 01:58:42PM +0400, Pavel Tikhomirov wrote:
> 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

Acked-by: Andrey Vagin <avagin at parallels.com>

> 
> Signed-off-by: Pavel Tikhomirov <ptikhomirov 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 1fd9015..b337b0f 100755
> --- a/test/zdtm.sh
> +++ b/test/zdtm.sh
> @@ -225,6 +225,7 @@ mntns_open
>  mntns_link_remap
>  mntns_link_ghost
>  socket-uid-gid

^^^^ What is this?

> +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..3d7497a 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) {
> +		err("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