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.13.0~81 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=9ded6907e66b89c3c74620a4485e8f752f092a60;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 --- diff --git a/dbus/dbus-sysdeps-unix.c b/dbus/dbus-sysdeps-unix.c index f103323c5..9f859845d 100644 --- a/dbus/dbus-sysdeps-unix.c +++ b/dbus/dbus-sysdeps-unix.c @@ -1581,11 +1581,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;