From 28c7fe4b82d21c82f41231600da078cceec91f33 Mon Sep 17 00:00:00 2001
From: Moe Jette <jette1@llnl.gov>
Date: Wed, 25 Jun 2008 16:49:15 +0000
Subject: [PATCH] svn merge -r14337:14342
 https://eris.llnl.gov/svn/slurm/branches/slurm-1.2

---
 src/salloc/opt.c | 7 ++++---
 src/sbatch/opt.c | 7 ++++---
 src/srun/opt.c   | 7 ++++---
 3 files changed, 12 insertions(+), 9 deletions(-)

diff --git a/src/salloc/opt.c b/src/salloc/opt.c
index 7e5992c186f..ce39f6d8649 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 b2e6872b60c..61e604cc69d 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 17d4198111b..4e90b62c8e3 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;
-- 
GitLab