dropbear: pass LD_LIBRARY_PATH through
This commit is contained in:
parent
8f967a3056
commit
cdc7e23e38
@ -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);
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user