blob: 50b8a6cee8ed7621aabe761bba2d0767a9c6be4c [file] [log] [blame]
Patrick Williamsf1e5d692016-03-30 15:21:19 -05001From 8b98a2f07175d46c3f7217639bd5e03f2ec56343 Mon Sep 17 00:00:00 2001
2From: Jason Wang <jasowang@redhat.com>
3Date: Mon, 30 Nov 2015 15:00:06 +0800
4Subject: [PATCH] pcnet: fix rx buffer overflow(CVE-2015-7512)
5
6Backends could provide a packet whose length is greater than buffer
7size. Check for this and truncate the packet to avoid rx buffer
8overflow in this case.
9
10Cc: Prasad J Pandit <pjp@fedoraproject.org>
11Cc: qemu-stable@nongnu.org
12Reviewed-by: Michael S. Tsirkin <mst@redhat.com>
13Signed-off-by: Jason Wang <jasowang@redhat.com>
14
15Upsteam_Status: Backport
16
17http://git.qemu.org/?p=qemu.git;a=commit;h=8b98a2f07175d46c3f7217639bd5e03f2ec56343
18
19CVE: CVE-2015-7512
20[Yocto # 9013]
21
22Signed-off-by: Armin Kuster <akuster@mvista.com>
23
24---
25 hw/net/pcnet.c | 6 ++++++
26 1 file changed, 6 insertions(+)
27
28Index: qemu-2.4.0/hw/net/pcnet.c
29===================================================================
30--- qemu-2.4.0.orig/hw/net/pcnet.c
31+++ qemu-2.4.0/hw/net/pcnet.c
32@@ -1065,6 +1065,12 @@ ssize_t pcnet_receive(NetClientState *nc
33 int pktcount = 0;
34
35 if (!s->looptest) {
36+ if (size > 4092) {
37+#ifdef PCNET_DEBUG_RMD
38+ fprintf(stderr, "pcnet: truncates rx packet.\n");
39+#endif
40+ size = 4092;
41+ }
42 memcpy(src, buf, size);
43 /* no need to compute the CRC */
44 src[size] = 0;