Found a little bug in ARP_QUEUEING: if pbuf_alloc for the packet to be queued failed, pbuf_copy was called with a NULL pointer.

This commit is contained in:
goldsimon 2007-05-14 20:10:46 +00:00
parent 3c32c993f5
commit 6c39b8a10c

View File

@ -865,9 +865,11 @@ err_t etharp_query(struct netif *netif, struct ip_addr *ipaddr, struct pbuf *q)
if(copy_needed) {
/* copy the whole packet into new pbufs */
p = pbuf_alloc(PBUF_RAW, p->tot_len, PBUF_RAM);
if (pbuf_copy(p, q) != ERR_OK) {
pbuf_free(p);
p = NULL;
if(p != NULL) {
if (pbuf_copy(p, q) != ERR_OK) {
pbuf_free(p);
p = NULL;
}
}
} else {
/* referencing the old pbuf is enough */