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 <pjp@fedoraproject.org> Cc: qemu-stable@nongnu.org Signed-off-by: Jason Wang <jasowang@redhat.com> [BR: BSC#957162] Signed-off-by: Bruce Rogers <brogers@suse.com>
This commit is contained in:
@@ -1086,6 +1086,12 @@ ssize_t pcnet_receive(NetClientState *nc, const uint8_t *buf, size_t size_)
|
|||||||
int pktcount = 0;
|
int pktcount = 0;
|
||||||
|
|
||||||
if (!s->looptest) {
|
if (!s->looptest) {
|
||||||
|
if (size > 4092) {
|
||||||
|
#ifdef PCNET_DEBUG_RMD
|
||||||
|
fprintf(stderr, "pcnet: truncates rx packet.\n");
|
||||||
|
#endif
|
||||||
|
size = 4092;
|
||||||
|
}
|
||||||
memcpy(src, buf, size);
|
memcpy(src, buf, size);
|
||||||
/* no need to compute the CRC */
|
/* no need to compute the CRC */
|
||||||
src[size] = 0;
|
src[size] = 0;
|
||||||
|
Reference in New Issue
Block a user