Blame SOURCES/libvirt-qemu-require-reply-from-guest-agent-in-qemuAgentGetInterfaces.patch

99cbc7
From 7d621673b5e33c2dcd7e247f37b3d1bd298b66d8 Mon Sep 17 00:00:00 2001
99cbc7
Message-Id: <7d621673b5e33c2dcd7e247f37b3d1bd298b66d8@dist-git>
99cbc7
From: =?UTF-8?q?J=C3=A1n=20Tomko?= <jtomko@redhat.com>
99cbc7
Date: Thu, 10 Jan 2019 12:49:11 +0100
99cbc7
Subject: [PATCH] qemu: require reply from guest agent in
99cbc7
 qemuAgentGetInterfaces
99cbc7
MIME-Version: 1.0
99cbc7
Content-Type: text/plain; charset=UTF-8
99cbc7
Content-Transfer-Encoding: 8bit
99cbc7
99cbc7
Since its introduction in commit 0977b8aa071 (released in v1.2.14)
99cbc7
qemuAgentGetInterfaces calls qemuAgentCommand with needReply=false,
99cbc7
which allows qemuAgentCommand to return 0 even when it did not get
99cbc7
any reply from the agent.
99cbc7
99cbc7
Set needReply to true, since we dereference it right after.
99cbc7
99cbc7
This can be hit if libvirt is waiting for an event from the agent
99cbc7
(e.g. shutdown) and the agent cannot reply in time (e.g. due to
99cbc7
the guest being shut down), as reported in:
99cbc7
https://bugzilla.redhat.com/show_bug.cgi?id=1663051
99cbc7
99cbc7
Signed-off-by: Ján Tomko <jtomko@redhat.com>
99cbc7
Reviewed-by: Jiri Denemark <jdenemar@redhat.com>
99cbc7
(cherry picked from commit 7cfd1fbb1332ae5df678b9f41a62156cb2e88c73)
99cbc7
Signed-off-by: Ján Tomko <jtomko@redhat.com>
99cbc7
99cbc7
8.0: https://bugzilla.redhat.com/show_bug.cgi?id=1665000
99cbc7
CVE-2019-3840
99cbc7
Message-Id: <714971c077bf26ec0d1a2b7283cafb7ab253ccd5.1547120910.git.jtomko@redhat.com>
99cbc7
99cbc7
Reviewed-by: Jiri Denemark <jdenemar@redhat.com>
99cbc7
---
99cbc7
 src/qemu/qemu_agent.c | 2 +-
99cbc7
 1 file changed, 1 insertion(+), 1 deletion(-)
99cbc7
99cbc7
diff --git a/src/qemu/qemu_agent.c b/src/qemu/qemu_agent.c
99cbc7
index 986e37b07d..d6fd02a4b6 100644
99cbc7
--- a/src/qemu/qemu_agent.c
99cbc7
+++ b/src/qemu/qemu_agent.c
99cbc7
@@ -1987,7 +1987,7 @@ qemuAgentGetInterfaces(qemuAgentPtr mon,
99cbc7
     if (!(cmd = qemuAgentMakeCommand("guest-network-get-interfaces", NULL)))
99cbc7
         goto cleanup;
99cbc7
 
99cbc7
-    if (qemuAgentCommand(mon, cmd, &reply, false,
99cbc7
+    if (qemuAgentCommand(mon, cmd, &reply, true,
99cbc7
                          VIR_DOMAIN_QEMU_AGENT_COMMAND_BLOCK) < 0)
99cbc7
         goto cleanup;
99cbc7
 
99cbc7
-- 
99cbc7
2.21.0
99cbc7