From 081afc57ebf82cfd6140678555b4d4088c6533b4 Mon Sep 17 00:00:00 2001 From: Enrico Scholz Date: Sat, 13 Mar 2004 03:23:21 +0000 Subject: [PATCH] fixed '--uid' option (it's required_argument but not no_argument) 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 | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/util-vserver/src/vcontext.c b/util-vserver/src/vcontext.c index 78d38fd..34fcdd8 100644 --- a/util-vserver/src/vcontext.c +++ b/util-vserver/src/vcontext.c @@ -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); -- 1.8.1.5