diff --git a/src/salloc/opt.c b/src/salloc/opt.c index 7e5992c186fd59c2364f8fa776a06d93d5908261..ce39f6d8649a51eff55480579d43c701da1ed561 100644 --- a/src/salloc/opt.c +++ b/src/salloc/opt.c @@ -774,11 +774,15 @@ void set_options(const int argc, char **argv) } break; case LONG_OPT_UID: + if (opt.euid != (uid_t) -1) + fatal ("duplicate --uid option"); opt.euid = uid_from_string (optarg); if (opt.euid == (uid_t) -1) fatal ("--uid=\"%s\" invalid", optarg); break; case LONG_OPT_GID: + if (opt.egid != (gid_t) -1) + fatal ("duplicate --gid option"); opt.egid = gid_from_string (optarg); if (opt.egid == (gid_t) -1) fatal ("--gid=\"%s\" invalid", optarg); @@ -1121,9 +1125,6 @@ static bool _opt_verify(void) if ((opt.egid != (gid_t) -1) && (opt.egid != opt.gid)) opt.gid = opt.egid; - if ((opt.egid != (gid_t) -1) && (opt.egid != opt.gid)) - opt.gid = opt.egid; - if (opt.immediate) { char *sched_name = slurm_get_sched_type(); if (strcmp(sched_name, "sched/wiki") == 0) { diff --git a/src/sbatch/opt.c b/src/sbatch/opt.c index b2e6872b60c3cfe080247d34bde07811a762a634..61e604cc69dd2de1052732d23880ed3d0b04f603 100644 --- a/src/sbatch/opt.c +++ b/src/sbatch/opt.c @@ -1170,11 +1170,15 @@ static void _set_options(int argc, char **argv) opt.jobid_set = true; break; case LONG_OPT_UID: + if (opt.euid != (uid_t) -1) + fatal ("duplicate --uid option"); opt.euid = uid_from_string (optarg); if (opt.euid == (uid_t) -1) fatal ("--uid=\"%s\" invalid", optarg); break; case LONG_OPT_GID: + if (opt.egid != (gid_t) -1) + fatal ("duplicate --gid option"); opt.egid = gid_from_string (optarg); if (opt.egid == (gid_t) -1) fatal ("--gid=\"%s\" invalid", optarg); @@ -1886,9 +1890,6 @@ static bool _opt_verify(void) if ((opt.egid != (gid_t) -1) && (opt.egid != opt.gid)) opt.gid = opt.egid; - if ((opt.egid != (gid_t) -1) && (opt.egid != opt.gid)) - opt.gid = opt.egid; - if (opt.immediate) { char *sched_name = slurm_get_sched_type(); if (strcmp(sched_name, "sched/wiki") == 0) { diff --git a/src/srun/opt.c b/src/srun/opt.c index 17d4198111ba2198c30b0f144e9ac345471ea355..4e90b62c8e32bdb4cb780c79bc8513bd924c8474 100644 --- a/src/srun/opt.c +++ b/src/srun/opt.c @@ -1353,11 +1353,15 @@ static void set_options(const int argc, char **argv) _get_int(optarg, "max-exit-timeout", true); break; case LONG_OPT_UID: + if (opt.euid != (uid_t) -1) + fatal ("duplicate --uid option"); opt.euid = uid_from_string (optarg); if (opt.euid == (uid_t) -1) fatal ("--uid=\"%s\" invalid", optarg); break; case LONG_OPT_GID: + if (opt.egid != (gid_t) -1) + fatal ("duplicate --gid option"); opt.egid = gid_from_string (optarg); if (opt.egid == (gid_t) -1) fatal ("--gid=\"%s\" invalid", optarg); @@ -2012,9 +2016,6 @@ static bool _opt_verify(void) if ((opt.egid != (gid_t) -1) && (opt.egid != opt.gid)) opt.gid = opt.egid; - if ((opt.egid != (gid_t) -1) && (opt.egid != opt.gid)) - opt.gid = opt.egid; - if (opt.propagate && parse_rlimits( opt.propagate, PROPAGATE_RLIMITS)) { error( "--propagate=%s is not valid.", opt.propagate ); verified = false;