nixpkgs/pkgs/tools/networking/dropbear/pass-path.patch

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

40 lines
1.3 KiB
Diff
Raw Normal View History

diff --git a/svr-chansession.c b/svr-chansession.c
index 9ae2e60..2db7598 100644
--- a/svr-chansession.c
+++ b/svr-chansession.c
@@ -948,6 +948,8 @@ static void addchildpid(struct ChanSess *chansess, pid_t pid) {
static void execchild(const void *user_data) {
const struct ChanSess *chansess = user_data;
char *usershell = NULL;
+ const char *path = (getuid() == 0) ? DEFAULT_ROOT_PATH : DEFAULT_PATH;
2015-10-18 15:29:46 +00:00
+ const char *ldpath = NULL;
char *cp = NULL;
char *envcp = getenv("LANG");
if (envcp != NULL) {
@@ -965,6 +967,11 @@ static void execchild(const void *user_data) {
2015-10-18 15:29:46 +00:00
seedrandom();
#endif
+ if (getenv("PATH")) {
2015-10-18 15:29:46 +00:00
+ path = getenv("PATH");
+ }
2015-10-18 15:29:46 +00:00
+ ldpath = getenv("LD_LIBRARY_PATH");
+
/* clear environment if -e was not set */
/* if we're debugging using valgrind etc, we need to keep the LD_PRELOAD
* etc. This is hazardous, so should only be used for debugging. */
@@ -1012,10 +1019,9 @@ static void execchild(const void *user_data) {
addnewvar("LOGNAME", ses.authstate.pw_name);
addnewvar("HOME", ses.authstate.pw_dir);
addnewvar("SHELL", get_user_shell());
- if (getuid() == 0) {
- addnewvar("PATH", DEFAULT_ROOT_PATH);
- } else {
- addnewvar("PATH", DEFAULT_PATH);
+ addnewvar("PATH", path);
2015-10-18 15:29:46 +00:00
+ if (ldpath != NULL) {
+ addnewvar("LD_LIBRARY_PATH", ldpath);
}
if (cp != NULL) {
addnewvar("LANG", cp);