From 43c4e65c661ac50a1644e458778fedd5361006ca Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Llu=C3=ADs=20Batlle=20i=20Rossell?= Date: Mon, 25 Apr 2011 14:57:46 +0000 Subject: [PATCH] Now I patch dropbear properly for it to inherit the PATH. svn path=/nixpkgs/trunk/; revision=26968 --- .../tools/networking/dropbear/pass-path.patch | 26 +++++++++++++++---- 1 file changed, 21 insertions(+), 5 deletions(-) diff --git a/pkgs/tools/networking/dropbear/pass-path.patch b/pkgs/tools/networking/dropbear/pass-path.patch index d664b00de350..1e223e0ad64d 100644 --- a/pkgs/tools/networking/dropbear/pass-path.patch +++ b/pkgs/tools/networking/dropbear/pass-path.patch @@ -1,15 +1,31 @@ -Allow sessions to inherit the PATH from the parent dropbear. - diff --git a/svr-chansession.c b/svr-chansession.c -index 23dad8c..9af8e55 100644 +index 23dad8c..32cac13 100644 --- a/svr-chansession.c +++ b/svr-chansession.c -@@ -878,7 +878,7 @@ static void execchild(void *user_data) { +@@ -823,6 +823,7 @@ 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; + + /* 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(); + #endif + ++ if (getenv("PATH")) ++ path = getenv("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) { addnewvar("LOGNAME", ses.authstate.pw_name); addnewvar("HOME", ses.authstate.pw_dir); addnewvar("SHELL", get_user_shell()); - addnewvar("PATH", DEFAULT_PATH); -+ addnewvar("PATH", getenv("PATH")); ++ addnewvar("PATH", path); if (chansess->term != NULL) { addnewvar("TERM", chansess->term); }