summaryrefslogtreecommitdiff
path: root/gnu/packages/patches/slurm-23-salloc-fallback-shell.patch
diff options
context:
space:
mode:
Diffstat (limited to 'gnu/packages/patches/slurm-23-salloc-fallback-shell.patch')
-rw-r--r--gnu/packages/patches/slurm-23-salloc-fallback-shell.patch33
1 files changed, 10 insertions, 23 deletions
diff --git a/gnu/packages/patches/slurm-23-salloc-fallback-shell.patch b/gnu/packages/patches/slurm-23-salloc-fallback-shell.patch
index 53605bf3ae..daaeb9358f 100644
--- a/gnu/packages/patches/slurm-23-salloc-fallback-shell.patch
+++ b/gnu/packages/patches/slurm-23-salloc-fallback-shell.patch
@@ -8,32 +8,19 @@ instance because user code is linked against an incompatible libc.
Similar patch submitted upstream: https://bugs.schedmd.com/show_bug.cgi?id=19896
diff --git a/src/salloc/opt.c b/src/salloc/opt.c
-index ffff7c8..74563ad 100644
+index f535600..848f099 100644
--- a/src/salloc/opt.c
+++ b/src/salloc/opt.c
-@@ -329,6 +329,7 @@ static void _opt_args(int argc, char **argv, int het_job_offset)
- * NOTE: This function is NOT reentrant (see getpwuid_r if needed) */
- static char *_get_shell(void)
- {
-+ char *shell;
- struct passwd *pw_ent_ptr;
+@@ -333,8 +333,10 @@ static char *_get_shell(void)
+ if (uid == SLURM_AUTH_NOBODY)
+ uid = getuid();
- if (opt.uid == SLURM_AUTH_NOBODY)
-@@ -336,11 +337,13 @@ static char *_get_shell(void)
- else
- pw_ent_ptr = getpwuid(opt.uid);
-
-- if (!pw_ent_ptr) {
-- pw_ent_ptr = getpwnam("nobody");
-- warning("no user information for user %u", opt.uid);
-+ if (pw_ent_ptr) {
-+ shell = pw_ent_ptr->pw_shell;
-+ } else {
+- if (!(shell = uid_to_shell(uid)))
+- fatal("no user information for user %u", uid);
++ if (!(shell = uid_to_shell(uid))) {
+ shell = getenv("SHELL") ?: "/bin/sh";
+ warning("no user information for user %u, using '%s' as the shell", opt.uid, shell);
- }
-- return pw_ent_ptr->pw_shell;
-+ return shell;
- }
++ }
- static void _salloc_default_command(int *argcp, char **argvp[])
+ return shell;
+ }