At the beginning of virInhibitorAcquire() the system D-Bus
connection is obtained by calling virGDBusGetSystemBus(). If
there's no D-Bus available then an debug message is printed out
and function returns early. Problem is, in case of no D-Bus an
error message was reported by virGDBusGetSystemBus() and thus
logs were polluted which may mislead users.
Just check whether D-Bus is available first (by calling
virGDBusHasSystemBus()). If it is then virGDBusGetSystemBus()
should return a valid connection. Nevertheless, respect previous
logic and don't propagate error to the caller, just return 0.
Resolves: https://issues.redhat.com/browse/RHEL-79088
Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Jiri Denemark <jdenemar@redhat.com>
VIR_DEBUG("what=%s who=%s why=%s mode=%s",
NULLSTR(what), NULLSTR(who), NULLSTR(why), NULLSTR(mode));
- if (!(systemBus = virGDBusGetSystemBus())) {
+ if (!virGDBusHasSystemBus()) {
VIR_DEBUG("system dbus not available, skipping system inhibitor");
return 0;
}
+ if (!(systemBus = virGDBusGetSystemBus()))
+ return 0;
+
if (virSystemdHasLogind() < 0) {
VIR_DEBUG("logind not available, skipping system inhibitor");
return 0;