mirror of
https://git.tartarus.org/simon/putty.git
synced 2025-01-09 01:18:00 +00:00
sshproxy: keep addr and free it on close.
The caller of new_connection has relinquished ownership of the SockAddr it passes in. So the receiver of that SockAddr must remember to free it, or else we leak memory. (Additionally, this means SshProxy will be able to remember the address during its run, e.g. to use in calls to its Plug. But that's not implemented yet.)
This commit is contained in:
parent
bff0c590e5
commit
80f5105dad
@ -65,6 +65,8 @@ typedef struct SshProxy {
|
||||
bufchain ssh_to_socket;
|
||||
bool rcvd_eof_ssh_to_socket, sent_eof_ssh_to_socket;
|
||||
|
||||
SockAddr *addr;
|
||||
|
||||
/* Traits implemented: we're a Socket from the point of view of
|
||||
* the client connection, and a Seat from the POV of the SSH
|
||||
* backend we instantiate. */
|
||||
@ -86,6 +88,7 @@ static void sshproxy_close(Socket *s)
|
||||
{
|
||||
SshProxy *sp = container_of(s, SshProxy, sock);
|
||||
|
||||
sk_addr_free(sp->addr);
|
||||
sfree(sp->errmsg);
|
||||
conf_free(sp->conf);
|
||||
if (sp->backend)
|
||||
@ -460,6 +463,8 @@ Socket *sshproxy_new_connection(SockAddr *addr, const char *hostname,
|
||||
psb_init(&sp->psb);
|
||||
bufchain_init(&sp->ssh_to_socket);
|
||||
|
||||
sp->addr = addr;
|
||||
|
||||
sp->conf = conf_new();
|
||||
/* Try to treat proxy_hostname as the title of a saved session. If
|
||||
* that fails, set up a default Conf of our own treating it as a
|
||||
|
Loading…
Reference in New Issue
Block a user