Pablo Greco e6a3ae
From 3bb5804776e5141690ff6fbb5b07b2a0307391ee Mon Sep 17 00:00:00 2001
Pablo Greco e6a3ae
From: =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= <marcandre.lureau@redhat.com>
Pablo Greco e6a3ae
Date: Tue, 28 Jan 2020 13:32:53 +0000
Pablo Greco e6a3ae
Subject: [PATCH 1/2] slirp: disable tcp_emu()
Pablo Greco e6a3ae
MIME-Version: 1.0
Pablo Greco e6a3ae
Content-Type: text/plain; charset=UTF-8
Pablo Greco e6a3ae
Content-Transfer-Encoding: 8bit
Pablo Greco e6a3ae
Pablo Greco e6a3ae
RH-Author: Marc-André Lureau <marcandre.lureau@redhat.com>
Pablo Greco e6a3ae
Message-id: <20200128133253.794107-2-marcandre.lureau@redhat.com>
Pablo Greco e6a3ae
Patchwork-id: 93569
Pablo Greco e6a3ae
O-Subject: [RHEL-8.2.0 qemu-kvm + RHEL-7.7 qemu-kvm + RHEL-6.11 qemu-kvm PATCH 1/1] slirp: disable tcp_emu()
Pablo Greco e6a3ae
Bugzilla: 1791677
Pablo Greco e6a3ae
RH-Acked-by: Danilo de Paula <ddepaula@redhat.com>
Pablo Greco e6a3ae
RH-Acked-by: Eduardo Habkost <ehabkost@redhat.com>
Pablo Greco e6a3ae
RH-Acked-by: Stefan Hajnoczi <stefanha@redhat.com>
Pablo Greco e6a3ae
Pablo Greco e6a3ae
Since libslirp 4.1, tcp_emu() is disabled by default because it is
Pablo Greco e6a3ae
known to cause several CVEs and is not useful today in most
Pablo Greco e6a3ae
cases. Qemu upstream doesn't have an option to enable it back at this
Pablo Greco e6a3ae
point, it's not clear if we ever want to expose that option anyway.
Pablo Greco e6a3ae
Pablo Greco e6a3ae
See also upstream commit 07c2a44b67e ("emu: disable by default")
Pablo Greco e6a3ae
Pablo Greco e6a3ae
Fixes: https://bugzilla.redhat.com/show_bug.cgi?id=1791677
Pablo Greco e6a3ae
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Pablo Greco e6a3ae
Signed-off-by: Danilo C. L. de Paula <ddepaula@redhat.com>
Pablo Greco e6a3ae
---
Pablo Greco e6a3ae
 slirp/tcp_subr.c | 4 ++--
Pablo Greco e6a3ae
 slirp/udp.c      | 2 +-
Pablo Greco e6a3ae
 2 files changed, 3 insertions(+), 3 deletions(-)
Pablo Greco e6a3ae
Pablo Greco e6a3ae
diff --git a/slirp/tcp_subr.c b/slirp/tcp_subr.c
Pablo Greco e6a3ae
index b95ba23..ac14366 100644
Pablo Greco e6a3ae
--- a/slirp/tcp_subr.c
Pablo Greco e6a3ae
+++ b/slirp/tcp_subr.c
Pablo Greco e6a3ae
@@ -568,7 +568,7 @@ tcp_tos(struct socket *so)
Pablo Greco e6a3ae
 	while(tcptos[i].tos) {
Pablo Greco e6a3ae
 		if ((tcptos[i].fport && (ntohs(so->so_fport) == tcptos[i].fport)) ||
Pablo Greco e6a3ae
 		    (tcptos[i].lport && (ntohs(so->so_lport) == tcptos[i].lport))) {
Pablo Greco e6a3ae
-			so->so_emu = tcptos[i].emu;
Pablo Greco e6a3ae
+			so->so_emu = 0; /* disabled */
Pablo Greco e6a3ae
 			return tcptos[i].tos;
Pablo Greco e6a3ae
 		}
Pablo Greco e6a3ae
 		i++;
Pablo Greco e6a3ae
@@ -578,7 +578,7 @@ tcp_tos(struct socket *so)
Pablo Greco e6a3ae
 	for (emup = tcpemu; emup; emup = emup->next) {
Pablo Greco e6a3ae
 		if ((emup->fport && (ntohs(so->so_fport) == emup->fport)) ||
Pablo Greco e6a3ae
 		    (emup->lport && (ntohs(so->so_lport) == emup->lport))) {
Pablo Greco e6a3ae
-			so->so_emu = emup->emu;
Pablo Greco e6a3ae
+			so->so_emu = 0; /* disabled */
Pablo Greco e6a3ae
 			return emup->tos;
Pablo Greco e6a3ae
 		}
Pablo Greco e6a3ae
 	}
Pablo Greco e6a3ae
diff --git a/slirp/udp.c b/slirp/udp.c
Pablo Greco e6a3ae
index 227d779..f5f5548 100644
Pablo Greco e6a3ae
--- a/slirp/udp.c
Pablo Greco e6a3ae
+++ b/slirp/udp.c
Pablo Greco e6a3ae
@@ -313,7 +313,7 @@ udp_tos(struct socket *so)
Pablo Greco e6a3ae
 	while(udptos[i].tos) {
Pablo Greco e6a3ae
 		if ((udptos[i].fport && ntohs(so->so_fport) == udptos[i].fport) ||
Pablo Greco e6a3ae
 		    (udptos[i].lport && ntohs(so->so_lport) == udptos[i].lport)) {
Pablo Greco e6a3ae
-		    	so->so_emu = udptos[i].emu;
Pablo Greco e6a3ae
+			so->so_emu = 0; /* disabled */
Pablo Greco e6a3ae
 			return udptos[i].tos;
Pablo Greco e6a3ae
 		}
Pablo Greco e6a3ae
 		i++;
Pablo Greco e6a3ae
-- 
Pablo Greco e6a3ae
1.8.3.1
Pablo Greco e6a3ae