diff --git a/pkgs/tools/networking/dropbear/pass-path.patch b/pkgs/tools/networking/dropbear/pass-path.patch index 1e223e0ad64..2ce08b05799 100644 --- a/pkgs/tools/networking/dropbear/pass-path.patch +++ b/pkgs/tools/networking/dropbear/pass-path.patch @@ -1,31 +1,36 @@ diff --git a/svr-chansession.c b/svr-chansession.c -index 23dad8c..32cac13 100644 +index e44299e..7ef750a 100644 --- a/svr-chansession.c +++ b/svr-chansession.c -@@ -823,6 +823,7 @@ static void addchildpid(struct ChanSess *chansess, pid_t pid) { +@@ -893,6 +893,8 @@ static void addchildpid(struct ChanSess *chansess, pid_t pid) { static void execchild(void *user_data) { struct ChanSess *chansess = user_data; char *usershell = NULL; + const char *path = DEFAULT_PATH; ++ const char *ldpath = NULL; - /* with uClinux we'll have vfork()ed, so don't want to overwrite the - * hostkey. can't think of a workaround to clear it */ -@@ -835,6 +836,9 @@ static void execchild(void *user_data) { - reseedrandom(); + /* with uClinux we'll have vfork()ed, so don't want to overwrite the + * hostkey. can't think of a workaround to clear it */ +@@ -905,6 +907,10 @@ static void execchild(void *user_data) { + seedrandom(); #endif -+ if (getenv("PATH")) -+ path = getenv("PATH"); ++ if (getenv("PATH")) ++ path = getenv("PATH"); ++ ldpath = getenv("LD_LIBRARY_PATH"); + /* clear environment */ /* 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. */ -@@ -878,7 +882,7 @@ static void execchild(void *user_data) { +@@ -948,7 +954,10 @@ static void execchild(void *user_data) { addnewvar("LOGNAME", ses.authstate.pw_name); addnewvar("HOME", ses.authstate.pw_dir); addnewvar("SHELL", get_user_shell()); - addnewvar("PATH", DEFAULT_PATH); + addnewvar("PATH", path); ++ if (ldpath != NULL) { ++ addnewvar("LD_LIBRARY_PATH", ldpath); ++ } if (chansess->term != NULL) { addnewvar("TERM", chansess->term); }