]> asedeno.scripts.mit.edu Git - PuTTY.git/commitdiff
Control of 'addr' is now handed over to {platform_,}new_connection() and
authorJacob Nevins <jacobn@chiark.greenend.org.uk>
Thu, 7 Aug 2003 16:04:33 +0000 (16:04 +0000)
committerJacob Nevins <jacobn@chiark.greenend.org.uk>
Thu, 7 Aug 2003 16:04:33 +0000 (16:04 +0000)
sk_new() on invocation; these functions become responsible for (eventually)
freeing it. The caller must not do anything with 'addr' after it's been passed
in. (Ick.)

Why:
A SOCKS5 crash appears to have been caused by overzealous freeing of
a SockAddr (ssh.c:1.257 [r2492]), which for proxied connections is
squirreled away long-term (and this can't easily be avoided).

It would have been nice to make a copy of the SockAddr, in case the caller has
a use for it, but one of the implementations (uxnet.c) hides a "struct
addrinfo" in there, and we have no defined way to duplicate those. (None of the
current callers _do_ have a further use for the SockAddr.)

As far as I can tell, everything _except_ proxying only needs addr for the
duration of the call, so sk_addr_free()s immediately. If I'm mistaken, it
should at least be easier to find the offending free()...

[originally from svn r3383]
[r2492 == bdd6633970d9c53ce0ad97b460c8c684285bb15e]


No differences found