VirtualBox

Changeset 85146 in vbox for trunk/include/VBox/vmm


Ignore:
Timestamp:
Jul 9, 2020 10:20:38 AM (5 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
139093
Message:

Dev/E1000,PDM: (bugref:9764) disable UFO, UDP header checks, zero MSS handling.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/include/VBox/vmm/pdmnetinline.h

    r82968 r85146  
    542542        case PDMNETWORKGSOTYPE_IPV4_UDP:
    543543            if (iSeg == 0)
     544            {
     545                if (pGso->offHdr2 + sizeof(RTNETUDP::uh_ulen) > cbFrame)
     546                    return 0; /* Incomplete UDP header! */
     547                /* uh_ulen cannot exceed cbFrame - pGso->offHdr2 (offset of UDP header) */
     548                if ((unsigned)(pGso->offHdr2 + RT_BE2H_U16(((PCRTNETUDP)&pbFrame[pGso->offHdr2])->uh_ulen)) > cbFrame)
     549                    if (cbFrame > UINT16_MAX)
     550                        ((PRTNETUDP)&pbFrame[pGso->offHdr2])->uh_ulen = 0xFFFF;
     551                    else
     552                        ((PRTNETUDP)&pbFrame[pGso->offHdr2])->uh_ulen = RT_H2BE_U16((uint16_t)(cbFrame - pGso->offHdr2));
     553                Assert((unsigned)(pGso->offHdr2 + ((PCRTNETUDP)&pbFrame[pGso->offHdr2])->uh_ulen) <= cbFrame);
    544554                pdmNetGsoUpdateUdpHdrUfo(RTNetIPv4PseudoChecksum((PRTNETIPV4)&pbFrame[pGso->offHdr1]),
    545555                                         pbSegHdrs, pbFrame, pGso->offHdr2);
     556            }
    546557            pdmNetGsoUpdateIPv4HdrUfo(pbSegHdrs, pGso->offHdr1, cbSegPayload, iSeg * pGso->cbMaxSeg,
    547558                                      cbSegHdrs, iSeg + 1 == cSegs);
Note: See TracChangeset for help on using the changeset viewer.

© 2025 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette