VirtualBox

Changeset 28502 in vbox


Ignore:
Timestamp:
Apr 20, 2010 7:16:46 AM (15 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
60298
Message:

NAT: correct handling end of zone's resources.

Location:
trunk/src/VBox/Devices/Network/slirp
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Devices/Network/slirp/misc.c

    r28501 r28502  
    140140    uint8_t *sub_area;
    141141    void *ret = NULL;
     142    int rc;
    142143
    143144    RTCritSectEnter(&zone->csZone);
     
    146147        if (!LIST_EMPTY(&zone->free_items))
    147148        {
    148             zone->cur_items++;
    149149            it = LIST_FIRST(&zone->free_items);
    150             LIST_REMOVE(it, list);
    151             LIST_INSERT_HEAD(&zone->used_items, it, list);
     150            rc = 0;
    152151            if (zone->pfInit)
    153                 zone->pfInit(zone->pData, (void *)&it[1], zone->size, M_DONTWAIT);
    154             ret = (void *)&it[1];
     152                rc = zone->pfInit(zone->pData, (void *)&it[1], zone->size, M_DONTWAIT);
     153            if (rc == 0)
     154            {
     155                zone->cur_items++;
     156                LIST_REMOVE(it, list);
     157                LIST_INSERT_HEAD(&zone->used_items, it, list);
     158                ret = (void *)&it[1];
     159            }
     160            else
     161            {
     162                ret = NULL;
     163            }
    155164            break;
    156165        }
  • trunk/src/VBox/Devices/Network/slirp/slirp.c

    r28449 r28502  
    14631463#else
    14641464            mr = m_getcl(pData, M_NOWAIT, MT_HEADER, M_PKTHDR);
     1465            if (mr == NULL)
     1466                return;
    14651467            reh = mtod(mr, struct ethhdr *);
    14661468            mr->m_data += ETH_HLEN;
  • trunk/src/VBox/Devices/Network/slirp/socket.c

    r28449 r28502  
    684684
    685685        m = m_getjcl(pData, M_NOWAIT, MT_HEADER, M_PKTHDR, size);
     686        if (m == NULL)
     687            return;
    686688        m->m_data += ETH_HLEN;
    687689        m->m_pkthdr.header = mtod(m, void *);
     
    13091311
    13101312                m = m_getjcl(pData, M_NOWAIT, MT_HEADER, M_PKTHDR, size);
     1313                if (m == NULL)
     1314                    return;
    13111315# endif
    13121316                m->m_len = 0;
Note: See TracChangeset for help on using the changeset viewer.

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