fixed '--uid' option (it's required_argument but not no_argument)
authorEnrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
Sat, 13 Mar 2004 03:23:21 +0000 (03:23 +0000)
committerEnrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
Sat, 13 Mar 2004 03:23:21 +0000 (03:23 +0000)
drop privileges after migrate()

git-svn-id: http://svn.linux-vserver.org/svn/util-vserver/trunk@1246 94cd875c-1c1d-0410-91d2-eb244daf1a30

util-vserver/src/vcontext.c

index 78d38fd..34fcdd8 100644 (file)
@@ -75,7 +75,7 @@ CMDLINE_OPTIONS[] = {
   { "endsetup",     no_argument,        0, CMD_ENDSETUP },
   { "disconnect",   no_argument,       0, CMD_DISCONNECT },
   { "silent",       no_argument,               0, CMD_SILENT },
-  { "uid",          no_argument,               0, CMD_UID },
+  { "uid",          required_argument,  0, CMD_UID },
   { "chroot",       no_argument,               0, CMD_CHROOT },
   { "syncsock",     required_argument,         0, CMD_SYNCSOCK },
   { "syncmsg",      required_argument,         0, CMD_SYNCMSG },
@@ -355,14 +355,6 @@ doit(struct Arguments const *args, char *argv[])
     if (args->do_chroot)
       Echroot(".");
 
-    if (args->uid!=(uid_t)(-1) && getuid()!=args->uid) {
-      Esetuid(args->uid);
-      if (getuid()!=args->uid) {
-       WRITE_MSG(2, "vcontext: Something went wrong while changing the UID\n");
-       exit(255);
-      }
-    }
-
     setFlags(args, xid);
 
 #if 0
@@ -373,6 +365,14 @@ doit(struct Arguments const *args, char *argv[])
     if (args->do_migrate && !args->do_migrateself)
       Evc_migrate_context(xid);
 
+    if (args->uid!=(uid_t)(-1) && getuid()!=args->uid) {
+      Esetuid(args->uid);
+      if (getuid()!=args->uid) {
+       WRITE_MSG(2, "vcontext: Something went wrong while changing the UID\n");
+       exit(255);
+      }
+    }
+    
     doExternalSync(ext_sync_fd, args->sync_msg);
     doSyncStage1(p, args->do_disconnect);
     execvp (argv[optind],argv+optind);