svn commit: r464689 - in head/devel/libvirt: . files
Roman Bogorodskiy
novel at FreeBSD.org
Fri Mar 16 15:20:29 UTC 2018
Author: novel
Date: Fri Mar 16 15:20:28 2018
New Revision: 464689
URL: https://svnweb.freebsd.org/changeset/ports/464689
Log:
devel/libvirt: add a fix for QEMU agent denial of service vulnerability
Add a fix from upstream master for QEMU agent
denial of service (LSN-2018-0004, CVE-2018-1064).
Security: https://security.libvirt.org/2018/0004.html
Added:
head/devel/libvirt/files/patch-src_qemu_qemu__agent.c (contents, props changed)
Modified:
head/devel/libvirt/Makefile
Modified: head/devel/libvirt/Makefile
==============================================================================
--- head/devel/libvirt/Makefile Fri Mar 16 14:29:38 2018 (r464688)
+++ head/devel/libvirt/Makefile Fri Mar 16 15:20:28 2018 (r464689)
@@ -3,7 +3,7 @@
PORTNAME= libvirt
PORTVERSION= 4.1.0
-PORTREVISION= 1
+PORTREVISION= 2
CATEGORIES= devel
MASTER_SITES= http://libvirt.org/sources/ \
ftp://libvirt.org/libvirt/
Added: head/devel/libvirt/files/patch-src_qemu_qemu__agent.c
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ head/devel/libvirt/files/patch-src_qemu_qemu__agent.c Fri Mar 16 15:20:28 2018 (r464689)
@@ -0,0 +1,31 @@
+--- src/qemu/qemu_agent.c.orig 2018-02-26 09:02:18 UTC
++++ src/qemu/qemu_agent.c
+@@ -53,6 +53,15 @@ VIR_LOG_INIT("qemu.qemu_agent");
+ #define DEBUG_IO 0
+ #define DEBUG_RAW_IO 0
+
++/* We read from QEMU until seeing a \r\n pair to indicate a
++ * completed reply or event. To avoid memory denial-of-service
++ * though, we must have a size limit on amount of data we
++ * buffer. 10 MB is large enough that it ought to cope with
++ * normal QEMU replies, and small enough that we're not
++ * consuming unreasonable mem.
++ */
++#define QEMU_AGENT_MAX_RESPONSE (10 * 1024 * 1024)
++
+ /* When you are the first to uncomment this,
+ * don't forget to uncomment the corresponding
+ * part in qemuAgentIOProcessEvent as well.
+@@ -535,6 +544,12 @@ qemuAgentIORead(qemuAgentPtr mon)
+ int ret = 0;
+
+ if (avail < 1024) {
++ if (mon->bufferLength >= QEMU_AGENT_MAX_RESPONSE) {
++ virReportSystemError(ERANGE,
++ _("No complete agent response found in %d bytes"),
++ QEMU_AGENT_MAX_RESPONSE);
++ return -1;
++ }
+ if (VIR_REALLOC_N(mon->buffer,
+ mon->bufferLength + 1024) < 0)
+ return -1;
More information about the svn-ports-all
mailing list