chiark / gitweb /
dropbear: update to 2018.76 (#2356)
[termux-packages] / packages / dropbear / svr-auth.c.patch
1 diff -uNr dropbear-2018.76/svr-auth.c dropbear-2018.76.mod/svr-auth.c
2 --- dropbear-2018.76/svr-auth.c 2018-02-27 16:25:12.000000000 +0200
3 +++ dropbear-2018.76.mod/svr-auth.c     2018-04-21 13:48:35.083741369 +0300
4 @@ -93,6 +93,9 @@
5         }
6  
7         username = buf_getstring(ses.payload, &userlen);
8 +       m_free(username);
9 +       username = getlogin();
10 +       userlen = strlen(username);
11         servicename = buf_getstring(ses.payload, &servicelen);
12         methodname = buf_getstring(ses.payload, &methodlen);
13  
14 @@ -102,7 +105,6 @@
15                                         SSH_SERVICE_CONNECTION_LEN) != 0)) {
16                 
17                 /* TODO - disconnect here */
18 -               m_free(username);
19                 m_free(servicename);
20                 m_free(methodname);
21                 dropbear_exit("unknown service in auth");
22 @@ -192,7 +194,6 @@
23  
24  out:
25  
26 -       m_free(username);
27         m_free(servicename);
28         m_free(methodname);
29  }
30 @@ -320,9 +321,10 @@
31         usershell = ses.authstate.pw_shell;
32         if (usershell[0] == '\0') {
33                 /* empty shell in /etc/passwd means /bin/sh according to passwd(5) */
34 -               usershell = "/bin/sh";
35 +               usershell = "@TERMUX_PREFIX@/bin/sh";
36         }
37  
38 +   goto goodshell;
39         /* check the shell is valid. If /etc/shells doesn't exist, getusershell()
40          * should return some standard shells like "/bin/sh" and "/bin/csh" (this
41          * is platform-specific) */
42 @@ -343,7 +345,7 @@
43         return DROPBEAR_FAILURE;
44         
45  goodshell:
46 -       endusershell();
47 +       //endusershell();
48         TRACE(("matching shell"))
49  
50         TRACE(("uid = %d", ses.authstate.pw_uid))