mirror of
https://git.tartarus.org/simon/putty.git
synced 2025-01-25 01:02:24 +00:00
If you configure Unix PuTTY to use a proxy, tell it to even proxy
localhost connections, and also enable X forwarding in such a way that it will attempt to connect to a Unix-domain X server socket, an assertion will fail when proxy_for_destination() tries to call sk_getaddr(). Fix by ensuring that Unix-domain sockets are _never_ proxied, since they fundamentally can't be. [originally from svn r9688]
This commit is contained in:
parent
36b8d450f0
commit
58870f60e4
@ -118,6 +118,7 @@ SockAddr sk_nonamelookup(const char *host);
|
|||||||
void sk_getaddr(SockAddr addr, char *buf, int buflen);
|
void sk_getaddr(SockAddr addr, char *buf, int buflen);
|
||||||
int sk_hostname_is_local(char *name);
|
int sk_hostname_is_local(char *name);
|
||||||
int sk_address_is_local(SockAddr addr);
|
int sk_address_is_local(SockAddr addr);
|
||||||
|
int sk_address_is_special_local(SockAddr addr);
|
||||||
int sk_addrtype(SockAddr addr);
|
int sk_addrtype(SockAddr addr);
|
||||||
void sk_addrcopy(SockAddr addr, char *buf);
|
void sk_addrcopy(SockAddr addr, char *buf);
|
||||||
void sk_addr_free(SockAddr addr);
|
void sk_addr_free(SockAddr addr);
|
||||||
|
9
proxy.c
9
proxy.c
@ -285,6 +285,15 @@ static int proxy_for_destination (SockAddr addr, char *hostname, int port,
|
|||||||
int hostip_len, hostname_len;
|
int hostip_len, hostname_len;
|
||||||
const char *exclude_list;
|
const char *exclude_list;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Special local connections such as Unix-domain sockets
|
||||||
|
* unconditionally cannot be proxied, even in proxy-localhost
|
||||||
|
* mode. There just isn't any way to ask any known proxy type for
|
||||||
|
* them.
|
||||||
|
*/
|
||||||
|
if (addr && sk_address_is_special_local(addr))
|
||||||
|
return 0; /* do not proxy */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Check the host name and IP against the hard-coded
|
* Check the host name and IP against the hard-coded
|
||||||
* representations of `localhost'.
|
* representations of `localhost'.
|
||||||
|
@ -390,6 +390,11 @@ int sk_address_is_local(SockAddr addr)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int sk_address_is_special_local(SockAddr addr)
|
||||||
|
{
|
||||||
|
return addr->superfamily == UNIX;
|
||||||
|
}
|
||||||
|
|
||||||
int sk_addrtype(SockAddr addr)
|
int sk_addrtype(SockAddr addr)
|
||||||
{
|
{
|
||||||
SockAddrStep step;
|
SockAddrStep step;
|
||||||
|
@ -667,6 +667,11 @@ int sk_address_is_local(SockAddr addr)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int sk_address_is_special_local(SockAddr addr)
|
||||||
|
{
|
||||||
|
return 0; /* no Unix-domain socket analogue here */
|
||||||
|
}
|
||||||
|
|
||||||
int sk_addrtype(SockAddr addr)
|
int sk_addrtype(SockAddr addr)
|
||||||
{
|
{
|
||||||
SockAddrStep step;
|
SockAddrStep step;
|
||||||
|
Loading…
Reference in New Issue
Block a user