From 8b98a2f07175d46c3f7217639bd5e03f2ec56343 Mon Sep 17 00:00:00 2001 From: Jason Wang Date: Mon, 30 Nov 2015 15:00:06 +0800 Subject: [PATCH] pcnet: fix rx buffer overflow(CVE-2015-7512) Backends could provide a packet whose length is greater than buffer size. Check for this and truncate the packet to avoid rx buffer overflow in this case. Cc: Prasad J Pandit Cc: qemu-stable@nongnu.org Reviewed-by: Michael S. Tsirkin Signed-off-by: Jason Wang Upsteam_Status: Backport http://git.qemu.org/?p=qemu.git;a=commit;h=8b98a2f07175d46c3f7217639bd5e03f2ec56343 CVE: CVE-2015-7512 [Yocto # 9013] Signed-off-by: Armin Kuster --- hw/net/pcnet.c | 6 ++++++ 1 file changed, 6 insertions(+) Index: qemu-2.4.0/hw/net/pcnet.c =================================================================== --- qemu-2.4.0.orig/hw/net/pcnet.c +++ qemu-2.4.0/hw/net/pcnet.c @@ -1065,6 +1065,12 @@ ssize_t pcnet_receive(NetClientState *nc int pktcount = 0; if (!s->looptest) { + if (size > 4092) { +#ifdef PCNET_DEBUG_RMD + fprintf(stderr, "pcnet: truncates rx packet.\n"); +#endif + size = 4092; + } memcpy(src, buf, size); /* no need to compute the CRC */ src[size] = 0;