Verify that getsockname succeeded in _dbus_listen_tcp_socket

Bug: https://bugs.freedesktop.org//show_bug.cgi?id=29881
Reviewed-by: Simon McVittie <simon.mcvittie@collabora.co.uk>
This commit is contained in:
Christian Dywan 2010-07-19 13:05:29 +02:00 committed by Simon McVittie
parent 14be9f738b
commit 68b1d6ad5f

View file

@ -1388,16 +1388,18 @@ _dbus_listen_tcp_socket (const char *host,
to use the same port */
if (!port || !strcmp(port, "0"))
{
int result;
struct sockaddr_storage addr;
socklen_t addrlen;
char portbuf[50];
addrlen = sizeof(addr);
getsockname(fd, (struct sockaddr*) &addr, &addrlen);
result = getsockname(fd, (struct sockaddr*) &addr, &addrlen);
if ((res = getnameinfo((struct sockaddr*)&addr, addrlen, NULL, 0,
portbuf, sizeof(portbuf),
NI_NUMERICHOST)) != 0)
if (result == -1 ||
(res = getnameinfo ((struct sockaddr*)&addr, addrlen, NULL, 0,
portbuf, sizeof(portbuf),
NI_NUMERICHOST)) != 0)
{
dbus_set_error (error, _dbus_error_from_errno (errno),
"Failed to resolve port \"%s:%s\": %s (%s)",