From 25fd2b61f8b5a5b5dfa399d9de2c1ba0fc55a329 Mon Sep 17 00:00:00 2001 From: Enrico Scholz Date: Mon, 15 Mar 2004 21:37:06 +0000 Subject: [PATCH] return indication about place of error git-svn-id: http://svn.linux-vserver.org/svn/util-vserver/trunk@1250 94cd875c-1c1d-0410-91d2-eb244daf1a30 --- util-vserver/lib_internal/jail.h | 2 +- util-vserver/lib_internal/jailintotempdir.c | 25 ++++++++++++++----------- 2 files changed, 15 insertions(+), 12 deletions(-) diff --git a/util-vserver/lib_internal/jail.h b/util-vserver/lib_internal/jail.h index eb0c9ac..4851d40 100644 --- a/util-vserver/lib_internal/jail.h +++ b/util-vserver/lib_internal/jail.h @@ -21,6 +21,6 @@ #include -bool jailIntoTempDir(); +bool jailIntoTempDir(char const **err_pos); #endif // H_UTIL_VSERVER_LIB_INTERNAL_JAIL_H diff --git a/util-vserver/lib_internal/jailintotempdir.c b/util-vserver/lib_internal/jailintotempdir.c index 9f95434..d1ad9a8 100644 --- a/util-vserver/lib_internal/jailintotempdir.c +++ b/util-vserver/lib_internal/jailintotempdir.c @@ -27,22 +27,25 @@ #include bool -jailIntoTempDir() +jailIntoTempDir(char const **err_pos) { + gid_t const id = 1; char buf[] = "/tmp/jaildir.XXXXXX"; - char const * d = mkdtemp(buf); - gid_t id = 1; + char const * d = mkdtemp(buf); + char const * err = "mkdtemp()"; if (d==0 || - chdir(d)==-1 || - rmdir(d)==-1 || - chroot(".")==-1 || - setgroups(1, &id)==-1 || - setgid(id)==-1 || - setuid(id)==-1 || - getgid()!=id || - getuid()!=id) + (err="chdir()", chdir(d)==-1) || + (err="rmdir()", rmdir(d)==-1) || + (err="chroot()", chroot(".")==-1) || + (err="setgroups()",setgroups(1, &id)==-1) || + (err="setgid()", setgid(id)==-1) || + (err="setuid()", setuid(id)==-1) || + (err="getgid()", getgid()!=id) || + (err="getuid()", getuid()!=id)) { + if (err_pos!=0) *err_pos = err; return false; + } return true; } -- 1.8.1.5