summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDamien Miller <djm@mindrot.org>2003-03-26 16:03:05 +1100
committerDamien Miller <djm@mindrot.org>2003-03-26 16:03:05 +1100
commitae225aa5594655e3fa5685b4dd7f2ae0e1a5e2d7 (patch)
tree12a5834c04756633ea56b7759372d4a6b4e3e1cc
parentc0d2468298d069cb0d234a4b1b9465b8edc8e005 (diff)
- Fix sshd BindAddress and -b options for systems using fake-getaddrinfo.V_3_6_P1V_3_6
Report from murple@murple.net, diagnosis from dtucker@zip.com.au
-rw-r--r--ChangeLog4
-rw-r--r--openbsd-compat/fake-getaddrinfo.c8
2 files changed, 9 insertions, 3 deletions
diff --git a/ChangeLog b/ChangeLog
index cdcd73df..9a7e2ea9 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -6,6 +6,8 @@
srp@srparish.net, help from djm
- (djm) Fix getpeerid support for 64 bit BE systems. From
Arnd Bergmann <arndb@de.ibm.com>
+ - Fix sshd BindAddress and -b options for systems using fake-getaddrinfo.
+ Report from murple@murple.net, diagnosis from dtucker@zip.com.au
- Release 3.6p1
20030324
@@ -1256,4 +1258,4 @@
save auth method before monitor_reset_key_state(); bugzilla bug #284;
ok provos@
-$Id: ChangeLog,v 1.2633.2.8 2003/03/26 05:02:47 djm Exp $
+$Id: ChangeLog,v 1.2633.2.9 2003/03/26 05:03:05 djm Exp $
diff --git a/openbsd-compat/fake-getaddrinfo.c b/openbsd-compat/fake-getaddrinfo.c
index e0477660..bc58f30a 100644
--- a/openbsd-compat/fake-getaddrinfo.c
+++ b/openbsd-compat/fake-getaddrinfo.c
@@ -12,7 +12,7 @@
#include "includes.h"
#include "ssh.h"
-RCSID("$Id: fake-getaddrinfo.c,v 1.4 2003/02/24 01:35:09 djm Exp $");
+RCSID("$Id: fake-getaddrinfo.c,v 1.4.2.1 2003/03/26 05:03:06 djm Exp $");
#ifndef HAVE_GAI_STRERROR
char *gai_strerror(int ecode)
@@ -71,6 +71,7 @@ int getaddrinfo(const char *hostname, const char *servname,
struct in_addr in;
int i;
long int port;
+ u_long addr;
port = 0;
if (servname != NULL) {
@@ -86,7 +87,10 @@ int getaddrinfo(const char *hostname, const char *servname,
}
if (hints && hints->ai_flags & AI_PASSIVE) {
- if (NULL != (*res = malloc_ai(port, htonl(0x00000000))))
+ addr = htonl(0x00000000);
+ if (hostname && inet_aton(hostname, &in) != 0)
+ addr = in.s_addr;
+ if (NULL != (*res = malloc_ai(port, addr)))
return 0;
else
return EAI_MEMORY;