Changeset 30404 in vbox for trunk/src/VBox/Devices/Network/slirp/ip_icmp.c
- Timestamp:
- Jun 23, 2010 8:27:59 PM (15 years ago)
- svn:sync-xref-src-repo-rev:
- 63025
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Devices/Network/slirp/ip_icmp.c
r30401 r30404 330 330 { 331 331 register struct icmp *icp; 332 int fIcpOnMbuf = 1; /* if icp pointer to m->m_data */332 void *icp_buf = NULL; 333 333 register struct ip *ip = mtod(m, struct ip *); 334 334 int icmplen = ip->ip_len; … … 367 367 } 368 368 369 if (m->m_next != NULL)370 { 371 char *buf = RTMemAlloc(icmplen);372 if (! buf)369 if (m->m_next) 370 { 371 icp_buf = RTMemAlloc(icmplen); 372 if (!icp_buf) 373 373 { 374 374 LogRel(("NAT: not enought memory to allocate the buffer\n")); 375 375 goto end_error; 376 376 } 377 m_copydata(m, 0, icmplen, buf); 378 icp = (struct icmp *)buf; 379 fIcpOnMbuf = 0; 377 m_copydata(m, 0, icmplen, icp_buf); 378 icp = (struct icmp *)icp_buf; 380 379 } 381 380 else 382 381 icp = mtod(m, struct icmp *); 383 384 382 385 383 m->m_len += hlen; … … 509 507 end_error: 510 508 m_freem(pData, m); 509 511 510 done: 512 if ( !fIcpOnMbuf 513 && !icp) 514 RTMemFree(icp); 511 if (icp_buf) 512 RTMemFree(icp_buf); 515 513 } 516 514
Note:
See TracChangeset
for help on using the changeset viewer.