From: Enrico Scholz Date: Mon, 15 Mar 2004 21:37:06 +0000 (+0000) Subject: return indication about place of error X-Git-Tag: VERSION_0_10~324 X-Git-Url: http://git.linux-vserver.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=25fd2b61f8b5a5b5dfa399d9de2c1ba0fc55a329;p=util-vserver.git return indication about place of error git-svn-id: http://svn.linux-vserver.org/svn/util-vserver/trunk@1250 94cd875c-1c1d-0410-91d2-eb244daf1a30 --- 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; }