diff -u -r ../dropbear-2013.62/cli-auth.c ./cli-auth.c --- ../dropbear-2013.62/cli-auth.c 2013-12-03 14:39:15.000000000 +0100 +++ ./cli-auth.c 2014-01-05 21:21:37.926812382 +0100 @@ -32,6 +32,10 @@ #include "packet.h" #include "runopts.h" +char * getpass (const char *prompt) { + return ""; +} + void cli_authinitialise() { memset(&ses.authstate, 0, sizeof(ses.authstate)); #ifdef ENABLE_CLI_ANYTCPFWD diff -u -r ../dropbear-2013.62/sshpty.c ./sshpty.c --- ../dropbear-2013.62/sshpty.c 2013-12-03 14:39:15.000000000 +0100 +++ ./sshpty.c 2014-01-05 21:21:37.930812382 +0100 @@ -22,6 +22,10 @@ #include "errno.h" #include "sshpty.h" +#ifdef __ANDROID__ +# define USE_DEV_PTMX 1 +#endif + /* Pty allocated with _getpty gets broken if we do I_PUSH:es to it. */ #if defined(HAVE__GETPTY) || defined(HAVE_OPENPTY) #undef HAVE_DEV_PTMX @@ -380,6 +384,7 @@ tty_name, strerror(errno)); } + /* if (st.st_uid != pw->pw_uid || st.st_gid != gid) { if (chown(tty_name, pw->pw_uid, gid) < 0) { if (errno == EROFS && @@ -409,4 +414,5 @@ } } } + */ } diff -u -r ../dropbear-2013.62/svr-agentfwd.c ./svr-agentfwd.c --- ../dropbear-2013.62/svr-agentfwd.c 2013-12-03 14:39:15.000000000 +0100 +++ ./svr-agentfwd.c 2014-01-05 21:21:37.930812382 +0100 @@ -218,10 +218,12 @@ /* drop to user privs to make the dir/file */ uid = getuid(); gid = getgid(); + /* if ((setegid(ses.authstate.pw_gid)) < 0 || (seteuid(ses.authstate.pw_uid)) < 0) { dropbear_exit("Failed to set euid"); } + */ memset((void*)&addr, 0x0, sizeof(addr)); addr.sun_family = AF_UNIX; diff -u -r ../dropbear-2013.62/svr-chansession.c ./svr-chansession.c --- ../dropbear-2013.62/svr-chansession.c 2013-12-03 14:39:15.000000000 +0100 +++ ./svr-chansession.c 2014-01-05 21:32:15.438797159 +0100 @@ -874,6 +874,8 @@ #endif /* clear environment */ + /* termux: do not clear environment on android */ +#ifndef __ANDROID__ /* 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. */ #ifndef DEBUG_VALGRIND @@ -886,6 +888,7 @@ } #endif /* HAVE_CLEARENV */ #endif /* DEBUG_VALGRIND */ +#endif /* __ANDROID__ */ /* We can only change uid/gid as root ... */ if (getuid() == 0) { @@ -911,12 +914,14 @@ } } + /* termux: do not modify environment since we did not clean it */ +#ifndef __ANDROID__ /* set env vars */ addnewvar("USER", ses.authstate.pw_name); addnewvar("LOGNAME", ses.authstate.pw_name); addnewvar("HOME", ses.authstate.pw_dir); addnewvar("SHELL", get_user_shell()); - addnewvar("PATH", DEFAULT_PATH); +#endif /* __ANDROID__ */ if (chansess->term != NULL) { addnewvar("TERM", chansess->term); }