From 23e3939b4738076c0ed91baf6bc8ec1dff74f1f5 Mon Sep 17 00:00:00 2001
From: "Mark A. Grondona" <mgrondona@llnl.gov>
Date: Tue, 26 Mar 2013 14:44:30 -0700
Subject: [PATCH] Fix spank_option_getopt in local context

In local context (srun, sbatch, salloc), spank_option_getopt() would
always return that an option was found due to a missing check for
spopt->found in spank_option_getopt.

This patch fixes the issue.
---
 src/common/plugstack.c | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/src/common/plugstack.c b/src/common/plugstack.c
index 6d306f38e17..c3ca324d31c 100644
--- a/src/common/plugstack.c
+++ b/src/common/plugstack.c
@@ -1528,6 +1528,13 @@ spank_option_getopt (spank_t sp, struct spank_option *opt, char **argp)
 	                         (ListFindF) _opt_by_name,
 	                         opt->name);
 	if (spopt) {
+		/*
+		 *  Return failure if option is cached but hasn't been
+		 *   used on the command line or specified by user.
+		 */
+		if (!spopt->found)
+			return (ESPANK_ERROR);
+
 		if (opt->has_arg && argp)
 			*argp = spopt->optarg;
 		return (ESPANK_SUCCESS);
-- 
GitLab