From: Michal Privoznik <mpriv...@redhat.com>

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 <mpriv...@redhat.com>
---
 src/util/virinhibitor.c | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/src/util/virinhibitor.c b/src/util/virinhibitor.c
index a95021de5a..6796938936 100644
--- a/src/util/virinhibitor.c
+++ b/src/util/virinhibitor.c
@@ -70,11 +70,14 @@ virInhibitorAcquire(const char *what,
     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;
-- 
2.49.0

Reply via email to