Have 'salloc' use $SHELL or /bin/sh as the fallback shell. This is useful in situations where glibc’s Name Service Switch (NSS) is dysfunctional (with ‘getpwuid’ returning NULL), which can happen when /etc/nsswitch.conf specifies plugins that fail to be loaded in user code, for 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 --- 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; 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 { + 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[]) 8bfc75541e27532aa40d9b8ea227cb76b573'>commitdiff
path: root/tests/guix-download.sh
AgeCommit message (Expand)Author
2023-04-21tests: Fix checks for expected failures....Addresses <https://issues.guix.gnu.org/62406>. With 'set -e', a return status inverted with '!' does not cause the shell to exit immediately. Instead use '&& false' to indicate an expected failure. * tests/guix-archive.sh, tests/guix-build-branch.sh, tests/guix-build.sh, tests/guix-daemon.sh, tests/guix-download.sh, tests/guix-environment-container.sh, tests/guix-environment.sh, tests/guix-gc.sh, tests/guix-git-authenticate.sh, tests/guix-graph.sh, tests/guix-hash.sh, tests/guix-home.sh, tests/guix-pack-relocatable.sh, tests/guix-pack.sh, tests/guix-package-aliases.sh, tests/guix-package-net.sh, tests/guix-package.sh, tests/guix-refresh.sh, tests/guix-shell.sh, tests/guix-style.sh, tests/guix-system.sh: Replace uses of '! ...' with '... && false' or `test ! ...` as appropriate. Signed-off-by: Ludovic Courtès <ludo@gnu.org> Eric Bavier