mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-03-07 17:28:15 +00:00
nodedev_hal: fix segfault when virDBusGetSystemBus fails
Thie patch fixes the segfault: error : nodeStateInitialize:658 : DBus not available, disabling HAL driver: internal error: Unable to get DBus system bus connection: Failed to connect to socket /var/run/dbus/system_bus_socket: No such file or directory error : nodeStateInitialize:719 : ?: Caught Segmentation violation dumping internal log buffer: This segfault occurs at the below VIR_ERROR: failure: if (dbus_error_is_set(&err)) { VIR_ERROR(_("%s: %s"), err.name, err.message); When virDBusGetSystemBus fails, the code jumps to the above failure path. However, the err variable is not correctly initialized before calling virDBusGetSystemBus. As a result, dbus_error_is_set may pass over the uninitialized err variable whose name or message may point to somewhere unknown memory region, which causes a segfault on VIR_ERROR. The new code initializes the err variable before calling virDBusGetSystemBus. Signed-off-by: Ryota Ozaki <ozaki.ryota@gmail.com>
This commit is contained in:
parent
4b9862775c
commit
87176d0ce9
@ -652,6 +652,7 @@ nodeStateInitialize(bool privileged ATTRIBUTE_UNUSED,
|
||||
}
|
||||
nodeDeviceLock(driverState);
|
||||
|
||||
dbus_error_init(&err);
|
||||
if (!(sysbus = virDBusGetSystemBus())) {
|
||||
virErrorPtr verr = virGetLastError();
|
||||
VIR_ERROR(_("DBus not available, disabling HAL driver: %s"),
|
||||
@ -660,7 +661,6 @@ nodeStateInitialize(bool privileged ATTRIBUTE_UNUSED,
|
||||
goto failure;
|
||||
}
|
||||
|
||||
dbus_error_init(&err);
|
||||
hal_ctx = libhal_ctx_new();
|
||||
if (hal_ctx == NULL) {
|
||||
VIR_ERROR(_("libhal_ctx_new returned NULL"));
|
||||
|
Loading…
x
Reference in New Issue
Block a user