Ensure DBusError is set if _dbus_read_nonce() fail

In _dbus_send_nonce() which call in _dbus_read_nonce() and assert on an
error is set if _dbus_read_nonce() fail. However, in _dbus_read_nonce(),
it may fail on fopen() and left error is unset. This will crash us if
assertions hasn't been disabled.

Bug: https://bugs.freedesktop.org/show_bug.cgi?id=72298
Reviewed-by: Simon McVittie <simon.mcvittie@collabora.co.uk>
This commit is contained in:
Chengwei Yang 2013-12-06 10:53:28 +08:00 committed by Simon McVittie
parent f4618906b0
commit 15a5b2637c

View file

@ -113,7 +113,15 @@ _dbus_read_nonce (const DBusString *fname, DBusString *nonce, DBusError* error)
fp = fopen (_dbus_string_get_const_data (fname), "rb");
if (!fp)
return FALSE;
{
dbus_set_error (error,
_dbus_error_from_system_errno (),
"Failed to open %s for read: %s",
_dbus_string_get_const_data (fname),
_dbus_strerror_from_errno ());
return FALSE;
}
nread = fread (buffer, 1, sizeof buffer - 1, fp);
fclose (fp);
if (!nread)