dropbear: pass LD_LIBRARY_PATH through

This commit is contained in:
Nikolay Amiantov 2015-10-18 18:29:46 +03:00
parent 8f967a3056
commit cdc7e23e38

View File

@ -1,31 +1,36 @@
diff --git a/svr-chansession.c b/svr-chansession.c diff --git a/svr-chansession.c b/svr-chansession.c
index 23dad8c..32cac13 100644 index e44299e..7ef750a 100644
--- a/svr-chansession.c --- a/svr-chansession.c
+++ b/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) { static void execchild(void *user_data) {
struct ChanSess *chansess = user_data; struct ChanSess *chansess = user_data;
char *usershell = NULL; char *usershell = NULL;
+ const char *path = DEFAULT_PATH; + const char *path = DEFAULT_PATH;
+ const char *ldpath = NULL;
/* with uClinux we'll have vfork()ed, so don't want to overwrite the /* with uClinux we'll have vfork()ed, so don't want to overwrite the
* hostkey. can't think of a workaround to clear it */ * hostkey. can't think of a workaround to clear it */
@@ -835,6 +836,9 @@ static void execchild(void *user_data) { @@ -905,6 +907,10 @@ static void execchild(void *user_data) {
reseedrandom(); seedrandom();
#endif #endif
+ if (getenv("PATH")) + if (getenv("PATH"))
+ path = getenv("PATH"); + path = getenv("PATH");
+ ldpath = getenv("LD_LIBRARY_PATH");
+ +
/* clear environment */ /* clear environment */
/* if we're debugging using valgrind etc, we need to keep the LD_PRELOAD /* 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. */ * 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("LOGNAME", ses.authstate.pw_name);
addnewvar("HOME", ses.authstate.pw_dir); addnewvar("HOME", ses.authstate.pw_dir);
addnewvar("SHELL", get_user_shell()); addnewvar("SHELL", get_user_shell());
- addnewvar("PATH", DEFAULT_PATH); - addnewvar("PATH", DEFAULT_PATH);
+ addnewvar("PATH", path); + addnewvar("PATH", path);
+ if (ldpath != NULL) {
+ addnewvar("LD_LIBRARY_PATH", ldpath);
+ }
if (chansess->term != NULL) { if (chansess->term != NULL) {
addnewvar("TERM", chansess->term); addnewvar("TERM", chansess->term);
} }