mirror of
https://git.tartarus.org/simon/putty.git
synced 2025-07-01 03:22:48 -05:00
sk_address_is_local() failed to cope when presented with a Unix-domain socket.
This could cause Unix PuTTY to segfault when X forwarding over an SSH session through a proxy. (sk_getaddr() wouldn't cope either -- in that case, add an assertion to make it more obvious; I don't think it should ever happen.) [originally from svn r8391]
This commit is contained in:
@ -301,7 +301,9 @@ static int sk_nextaddr(SockAddr addr, SockAddrStep *step)
|
||||
|
||||
void sk_getaddr(SockAddr addr, char *buf, int buflen)
|
||||
{
|
||||
|
||||
/* XXX not clear what we should return for Unix-domain sockets; let's
|
||||
* hope the question never arises */
|
||||
assert(addr->superfamily != UNIX);
|
||||
if (addr->superfamily == UNRESOLVED) {
|
||||
strncpy(buf, addr->hostname, buflen);
|
||||
buf[buflen-1] = '\0';
|
||||
@ -359,9 +361,10 @@ static int sockaddr_is_loopback(struct sockaddr *sa)
|
||||
|
||||
int sk_address_is_local(SockAddr addr)
|
||||
{
|
||||
|
||||
if (addr->superfamily == UNRESOLVED)
|
||||
return 0; /* we don't know; assume not */
|
||||
else if (addr->superfamily == UNIX)
|
||||
return 1;
|
||||
else {
|
||||
#ifndef NO_IPV6
|
||||
return sockaddr_is_loopback(addr->ais->ai_addr);
|
||||
|
Reference in New Issue
Block a user