Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
SUSE:SLE-12-SP1:GA
xen.950
xsa140-qemut-4.patch
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File xsa140-qemut-4.patch of Package xen.950
References: bsc#939712 XSA-140 From 5a75d242fe019d05b46ef9bc330a6892525c84a7 Mon Sep 17 00:00:00 2001 From: Stefan Hajnoczi <stefanha@redhat.com> Date: Wed, 15 Jul 2015 18:17:01 +0100 Subject: [PATCH 4/7] rtl8139: check IP Header Length field The IP Header Length field was only checked in the IP checksum case, but is used in other cases too. Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com> --- hw/rtl8139.c | 19 ++++++++----------- 1 file changed, 8 insertions(+), 11 deletions(-) Index: xen-4.4.2-testing/tools/qemu-xen-traditional-dir-remote/hw/rtl8139.c =================================================================== --- xen-4.4.2-testing.orig/tools/qemu-xen-traditional-dir-remote/hw/rtl8139.c +++ xen-4.4.2-testing/tools/qemu-xen-traditional-dir-remote/hw/rtl8139.c @@ -2139,6 +2139,10 @@ static int rtl8139_cplus_transmit_one(RT } hlen = IP_HEADER_LENGTH(ip); + if (hlen < sizeof(ip_header) || hlen > eth_payload_len) { + goto skip_offload; + } + ip_protocol = ip->ip_p; ip_data_len = be16_to_cpu(ip->ip_len) - hlen; @@ -2146,16 +2150,9 @@ static int rtl8139_cplus_transmit_one(RT { DEBUG_PRINT(("RTL8139: +++ C+ mode need IP checksum\n")); - if (hlen<sizeof(ip_header) || hlen>eth_payload_len) {/* min header length */ - /* bad packet header len */ - /* or packet too short */ - } - else - { - ip->ip_sum = 0; - ip->ip_sum = ip_checksum(ip, hlen); - DEBUG_PRINT(("RTL8139: +++ C+ mode IP header len=%d checksum=%04x\n", hlen, ip->ip_sum)); - } + ip->ip_sum = 0; + ip->ip_sum = ip_checksum(ip, hlen); + DEBUG_PRINT(("RTL8139: +++ C+ mode IP header len=%d checksum=%04x\n", hlen, ip->ip_sum)); } if ((txdw0 & CP_TX_LGSEN) && ip_protocol == IP_PROTO_TCP)
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor