set a client's address right after a connection is set
http://bugzilla.mindrot.org/show_bug.cgi?id=2257
This commit is contained in:
parent
81226fcc51
commit
9f170e3ec1
|
@ -0,0 +1,87 @@
|
|||
diff --git a/canohost.c b/canohost.c
|
||||
index f5cb854..c53cc39 100644
|
||||
--- a/canohost.c
|
||||
+++ b/canohost.c
|
||||
@@ -343,6 +343,21 @@ clear_cached_addr(void)
|
||||
cached_port = -1;
|
||||
}
|
||||
|
||||
+void set_remote_ipaddr(void) {
|
||||
+ if (canonical_host_ip != NULL)
|
||||
+ free(canonical_host_ip);
|
||||
+
|
||||
+ if (packet_connection_is_on_socket()) {
|
||||
+ canonical_host_ip =
|
||||
+ get_peer_ipaddr(packet_get_connection_in());
|
||||
+ if (canonical_host_ip == NULL)
|
||||
+ cleanup_exit(255);
|
||||
+ } else {
|
||||
+ /* If not on socket, return UNKNOWN. */
|
||||
+ canonical_host_ip = xstrdup("UNKNOWN");
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
/*
|
||||
* Returns the IP-address of the remote host as a string. The returned
|
||||
* string must not be freed.
|
||||
@@ -352,17 +367,9 @@ const char *
|
||||
get_remote_ipaddr(void)
|
||||
{
|
||||
/* Check whether we have cached the ipaddr. */
|
||||
- if (canonical_host_ip == NULL) {
|
||||
- if (packet_connection_is_on_socket()) {
|
||||
- canonical_host_ip =
|
||||
- get_peer_ipaddr(packet_get_connection_in());
|
||||
- if (canonical_host_ip == NULL)
|
||||
- cleanup_exit(255);
|
||||
- } else {
|
||||
- /* If not on socket, return UNKNOWN. */
|
||||
- canonical_host_ip = xstrdup("UNKNOWN");
|
||||
- }
|
||||
- }
|
||||
+ if (canonical_host_ip == NULL)
|
||||
+ set_remote_ipaddr();
|
||||
+
|
||||
return canonical_host_ip;
|
||||
}
|
||||
|
||||
diff --git a/canohost.h b/canohost.h
|
||||
index 4c8636f..4079953 100644
|
||||
--- a/canohost.h
|
||||
+++ b/canohost.h
|
||||
@@ -13,6 +13,7 @@
|
||||
*/
|
||||
|
||||
const char *get_canonical_hostname(int);
|
||||
+void set_remote_ipaddr(void);
|
||||
const char *get_remote_ipaddr(void);
|
||||
const char *get_remote_name_or_ip(u_int, int);
|
||||
|
||||
diff --git a/sshconnect.c b/sshconnect.c
|
||||
index 4d8c718..b0b4870 100644
|
||||
--- a/sshconnect.c
|
||||
+++ b/sshconnect.c
|
||||
@@ -61,6 +61,7 @@
|
||||
#include "roaming.h"
|
||||
#include "ssh2.h"
|
||||
#include "version.h"
|
||||
+#include "canohost.h"
|
||||
|
||||
char *client_version_string = NULL;
|
||||
char *server_version_string = NULL;
|
||||
@@ -172,6 +173,7 @@ ssh_proxy_connect(const char *host, u_short port, const char *proxy_command)
|
||||
packet_set_connection(pout[0], pin[1]);
|
||||
packet_set_timeout(options.server_alive_interval,
|
||||
options.server_alive_count_max);
|
||||
+ set_remote_ipaddr();
|
||||
|
||||
/* Indicate OK return */
|
||||
return 0;
|
||||
@@ -433,6 +435,7 @@ ssh_connect(const char *host, struct sockaddr_storage * hostaddr,
|
||||
packet_set_connection(sock, sock);
|
||||
packet_set_timeout(options.server_alive_interval,
|
||||
options.server_alive_count_max);
|
||||
+ set_remote_ipaddr();
|
||||
|
||||
return 0;
|
||||
}
|
|
@ -197,6 +197,9 @@ Patch908: openssh-6.4p1-CVE-2014-2653.patch
|
|||
Patch909: openssh-6.4p1-ignore-bad-env-var.patch
|
||||
# standardise on NI_MAXHOST for gethostname() string lengths (#1051490)
|
||||
Patch910: openssh-6.4p1-NI_MAXHOST.patch
|
||||
# set a client's address right after a connection is set
|
||||
# http://bugzilla.mindrot.org/show_bug.cgi?id=2257
|
||||
Patch911: openssh-6.4p1-set_remote_ipaddr.patch
|
||||
|
||||
License: BSD
|
||||
Group: Applications/Internet
|
||||
|
@ -425,6 +428,7 @@ popd
|
|||
%patch908 -p1 -b .CVE-2014-2653
|
||||
%patch909 -p1 -b .bad-env-var
|
||||
%patch910 -p1 -b .NI_MAXHOST
|
||||
%patch911 -p1 -b .set_remote_ipaddr
|
||||
|
||||
|
||||
%if 0
|
||||
|
|
Loading…
Reference in New Issue