From: Jason Wang Date: Mon, 30 Nov 2015 07:00:06 +0000 (+0800) Subject: pcnet: fix rx buffer overflow(CVE-2015-7512) X-Git-Url: http://xenbits.xensource.com/gitweb?a=commitdiff_plain;h=75c57190671cd2cfdfbbc448fb3c752dc46018d8;p=qemu-upstream-4.6-testing.git 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 --- diff --git a/hw/net/pcnet.c b/hw/net/pcnet.c index f5109329c..9f0ab412c 100644 --- a/hw/net/pcnet.c +++ b/hw/net/pcnet.c @@ -1086,6 +1086,12 @@ ssize_t pcnet_receive(NetClientState *nc, const uint8_t *buf, size_t size_) 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;