_dbus_listen_tcp_socket: avoid leaking listen_fd in unlikely circumstances
authorSimon McVittie <simon.mcvittie@collabora.co.uk>
Thu, 3 Feb 2011 17:59:07 +0000 (17:59 +0000)
committerSimon McVittie <simon.mcvittie@collabora.co.uk>
Wed, 2 Nov 2011 15:19:30 +0000 (15:19 +0000)
commitec350d8d06f5b55fa42834f4d651ea9018e02650
tree456df5140e35b3423bd7db622e1b0dfbbef202c5
parent93e9941de6908f731e3f9b0fac1083f0e9a47dd5
_dbus_listen_tcp_socket: avoid leaking listen_fd in unlikely circumstances

If getaddrinfo (with port == 0) succeeds, the kernel gives us a port when
we first listen on a socket, we jump back to redo_lookup_with_port,
and getaddrinfo (with the nonzero port) fails, we leak listen_fd and all
the fds in it.

From the department of "without static analysis we'd never have spotted
this", or possibly "backward goto considered harmful".

Bug: https://bugs.freedesktop.org/show_bug.cgi?id=29881
Bug-NB: NB#180486 CID-2389
Reviewed-by: Will Thompson <will.thompson@collabora.co.uk>
dbus/dbus-sysdeps-unix.c