From: Christian Dywan Date: Mon, 19 Jul 2010 11:05:29 +0000 (+0200) Subject: Verify that getsockname succeeded in _dbus_listen_tcp_socket X-Git-Tag: dbus-1.4.4~44 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=68b1d6ad5f914c84bf73da23c533655f9d379c41;p=thirdparty%2Fdbus.git Verify that getsockname succeeded in _dbus_listen_tcp_socket Bug: https://bugs.freedesktop.org//show_bug.cgi?id=29881 Reviewed-by: Simon McVittie --- diff --git a/dbus/dbus-sysdeps-unix.c b/dbus/dbus-sysdeps-unix.c index 20700ae3f..56761e60c 100644 --- a/dbus/dbus-sysdeps-unix.c +++ b/dbus/dbus-sysdeps-unix.c @@ -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)",