Mercurial > dropbear
diff svr-chansession.c @ 974:7c9377467934
Combine code for SSH_CONNECTION and SSH_CLIENT
author | Matt Johnston <matt@ucc.asn.au> |
---|---|
date | Tue, 21 Oct 2014 22:33:49 +0800 |
parents | eb5cb4f45cd6 |
children | d3925ed45a85 |
line wrap: on
line diff
--- a/svr-chansession.c Tue Oct 21 21:43:20 2014 +0800 +++ b/svr-chansession.c Tue Oct 21 22:33:49 2014 +0800 @@ -603,34 +603,26 @@ return DROPBEAR_SUCCESS; } -static char* make_connection_string() { +static void make_connection_string(struct ChanSess *chansess) { char *local_ip, *local_port, *remote_ip, *remote_port; size_t len; - char *ret; get_socket_address(ses.sock_in, &local_ip, &local_port, &remote_ip, &remote_port, 0); - len = strlen(local_ip) + strlen(local_port) + strlen(remote_ip) + strlen(remote_port) + 4; - ret = m_malloc(len); - snprintf(ret, len, "%s %s %s %s", remote_ip, remote_port, local_ip, local_port); + + /* "remoteip remoteport localip localport" */ + len = strlen(local_ip) + strlen(remote_ip) + 20; + chansess->connection_string = m_malloc(len); + snprintf(chansess->connection_string, len, "%s %s %s %s", remote_ip, remote_port, local_ip, local_port); + + /* deprecated but bash only loads .bashrc if SSH_CLIENT is set */ + /* "remoteip remoteport localport" */ + len = strlen(remote_ip) + 20; + chansess->client_string = m_malloc(len); + snprintf(chansess->client_string, len, "%s %s %s", remote_ip, remote_port, local_port); + m_free(local_ip); m_free(local_port); m_free(remote_ip); m_free(remote_port); - return ret; -} - -static char* make_client_string() { - char *local_ip, *local_port, *remote_ip, *remote_port; - size_t len; - char *ret; - get_socket_address(ses.sock_in, &local_ip, &local_port, &remote_ip, &remote_port, 0); - len = strlen(local_ip) + strlen(local_port) + strlen(remote_ip) + strlen(remote_port) + 4; - ret = m_malloc(len); - snprintf(ret, len, "%s %s %s", remote_ip, remote_port, local_port); - m_free(local_ip); - m_free(local_port); - m_free(remote_ip); - m_free(remote_port); - return ret; } /* Handle a command request from the client. This is used for both shell @@ -693,8 +685,7 @@ /* uClinux will vfork(), so there'll be a race as connection_string is freed below. */ #ifndef USE_VFORK - chansess->connection_string = make_connection_string(); - chansess->client_string = make_client_string(); + make_connection_string(chansess); #endif if (chansess->term == NULL) {