Skip to content

Commit

Permalink
rtl8139: check TCP Data Offset field (CVE-2015-5165)
Browse files Browse the repository at this point in the history
The TCP Data Offset field contains the length of the header.  Make sure
it is valid and does not exceed the IP data length.

Reported-by: 朱东海(启路) <donghai.zdh@alibaba-inc.com>
Reviewed-by: Jason Wang <jasowang@redhat.com>
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
  • Loading branch information
stefanhaRH committed Aug 3, 2015
1 parent 4240be4 commit 8357946
Showing 1 changed file with 5 additions and 0 deletions.
5 changes: 5 additions & 0 deletions hw/net/rtl8139.c
Expand Up @@ -2239,6 +2239,11 @@ static int rtl8139_cplus_transmit_one(RTL8139State *s)

int tcp_hlen = TCP_HEADER_DATA_OFFSET(p_tcp_hdr);

/* Invalid TCP data offset? */
if (tcp_hlen < sizeof(tcp_header) || tcp_hlen > ip_data_len) {
goto skip_offload;
}

/* ETH_MTU = ip header len + tcp header len + payload */
int tcp_data_len = ip_data_len - tcp_hlen;
int tcp_chunk_size = ETH_MTU - hlen - tcp_hlen;
Expand Down

0 comments on commit 8357946

Please sign in to comment.