]> git.ipfire.org Git - thirdparty/openssh-portable.git/commitdiff
upstream: produce a useful error message if the user's shell is set
authordjm@openbsd.org <djm@openbsd.org>
Fri, 9 Aug 2019 05:05:54 +0000 (05:05 +0000)
committerDamien Miller <djm@mindrot.org>
Fri, 9 Aug 2019 05:11:30 +0000 (15:11 +1000)
incorrectly during "match exec" processing. bz#2791 reported by Dario
Bertini; ok dtucker

OpenBSD-Commit-ID: cf9eddd6a6be726cb73bd9c3936f3888cd85c03d

readconf.c

index 27b535e1ff5f7b436e866e9f2014aebf804bbad0..d1b7871ec010c4fc0505cd3097f612510684e5b6 100644 (file)
@@ -1,4 +1,4 @@
-/* $OpenBSD: readconf.c,v 1.307 2019/06/28 13:35:04 deraadt Exp $ */
+/* $OpenBSD: readconf.c,v 1.308 2019/08/09 05:05:54 djm Exp $ */
 /*
  * Author: Tatu Ylonen <ylo@cs.hut.fi>
  * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
@@ -486,6 +486,11 @@ execute_in_shell(const char *cmd)
        if ((shell = getenv("SHELL")) == NULL)
                shell = _PATH_BSHELL;
 
+       if (access(shell, X_OK) == -1) {
+               fatal("Shell \"%s\" is not executable: %s",
+                   shell, strerror(errno));
+       }
+
        /* Need this to redirect subprocess stdin/out */
        if ((devnull = open(_PATH_DEVNULL, O_RDWR)) == -1)
                fatal("open(/dev/null): %s", strerror(errno));