diff options
Diffstat (limited to 'gnu/packages/patches/slurm-23-salloc-fallback-shell.patch')
-rw-r--r-- | gnu/packages/patches/slurm-23-salloc-fallback-shell.patch | 33 |
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; + } |