From: Simon McVittie Date: Tue, 21 Nov 2017 14:43:01 +0000 (+0000) Subject: _dbus_listen_tcp_socket: Don't rely on dbus_realloc setting errno X-Git-Tag: dbus-1.12.4~22 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=c393aefb34dd466265a33fe5c431b747d7a44b86;p=thirdparty%2Fdbus.git _dbus_listen_tcp_socket: Don't rely on dbus_realloc setting errno dbus_realloc() doesn't guarantee to set errno (if it did, the only reasonable thing it could set it to would be ENOMEM). In particular, faking OOM conditions doesn't set it. This can cause an assertion failure when OOM tests assert that the only error that can validly occur is DBUS_ERROR_NO_MEMORY. Signed-off-by: Simon McVittie Reviewed-by: Philip Withnall Bug: https://bugs.freedesktop.org/show_bug.cgi?id=89104 (cherry picked from commit 9ded6907e66b89c3c74620a4485e8f752f092a60) --- diff --git a/dbus/dbus-sysdeps-unix.c b/dbus/dbus-sysdeps-unix.c index bebf2073b..b0ba89919 100644 --- a/dbus/dbus-sysdeps-unix.c +++ b/dbus/dbus-sysdeps-unix.c @@ -1576,11 +1576,9 @@ _dbus_listen_tcp_socket (const char *host, newlisten_fd = dbus_realloc(listen_fd, sizeof(DBusSocket)*(nlisten_fd+1)); if (!newlisten_fd) { - saved_errno = errno; _dbus_close (fd, NULL); - dbus_set_error (error, _dbus_error_from_errno (saved_errno), - "Failed to allocate file handle array: %s", - _dbus_strerror (saved_errno)); + dbus_set_error (error, DBUS_ERROR_NO_MEMORY, + "Failed to allocate file handle array"); goto failed; } listen_fd = newlisten_fd;