diff --git a/mongoose.c b/mongoose.c index e90d30e0..5bdf0dbb 100644 --- a/mongoose.c +++ b/mongoose.c @@ -5281,7 +5281,7 @@ static void mg_tcpip_rx(struct mg_tcpip_if *ifp, void *buf, size_t len) { mkpay(&pkt, pkt.eth + 1); if (pkt.eth->type == mg_htons(0x806)) { pkt.arp = (struct arp *) (pkt.pay.buf); - if (sizeof(*pkt.eth) + sizeof(*pkt.arp) > pkt.pay.len) return; // Truncated + if (pkt.pay.len < sizeof(*pkt.arp)) return; // Truncated mg_tcpip_call(ifp, MG_TCPIP_EV_ARP, &pkt.raw); rx_arp(ifp, &pkt); } else if (pkt.eth->type == mg_htons(0x86dd)) { @@ -22308,7 +22308,7 @@ struct mg_tcpip_driver mg_tcpip_driver_imxrt = {mg_tcpip_driver_imxrt_init, bool __attribute__((weak)) netif_init(struct mg_tcpip_if *ifp) { (void) ifp; - MG_ERROR(("Please link wifi/net/port/ contents")); + MG_ERROR(("Please link wifi/port/net contents")); return false; } size_t __attribute__((weak)) diff --git a/src/net_builtin.c b/src/net_builtin.c index 1142ebcc..f086133a 100644 --- a/src/net_builtin.c +++ b/src/net_builtin.c @@ -1124,7 +1124,7 @@ static void mg_tcpip_rx(struct mg_tcpip_if *ifp, void *buf, size_t len) { mkpay(&pkt, pkt.eth + 1); if (pkt.eth->type == mg_htons(0x806)) { pkt.arp = (struct arp *) (pkt.pay.buf); - if (sizeof(*pkt.eth) + sizeof(*pkt.arp) > pkt.pay.len) return; // Truncated + if (pkt.pay.len < sizeof(*pkt.arp)) return; // Truncated mg_tcpip_call(ifp, MG_TCPIP_EV_ARP, &pkt.raw); rx_arp(ifp, &pkt); } else if (pkt.eth->type == mg_htons(0x86dd)) {