summaryrefslogtreecommitdiff
path: root/nuttx/net/utils/net_chksum.c
diff options
context:
space:
mode:
Diffstat (limited to 'nuttx/net/utils/net_chksum.c')
-rw-r--r--nuttx/net/utils/net_chksum.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/nuttx/net/utils/net_chksum.c b/nuttx/net/utils/net_chksum.c
index ff8438678..789646f50 100644
--- a/nuttx/net/utils/net_chksum.c
+++ b/nuttx/net/utils/net_chksum.c
@@ -126,6 +126,13 @@ static uint16_t upper_layer_chksum(FAR struct net_driver_s *dev, uint8_t proto)
upper_layer_len = (((uint16_t)(pbuf->len[0]) << 8) + pbuf->len[1]) - UIP_IPH_LEN;
#endif /* CONFIG_NET_IPv6 */
+ /* Verify some minimal assumptions */
+
+ if (upper_layer_len > CONFIG_NET_BUFSIZE)
+ {
+ return 0;
+ }
+
/* First sum pseudo-header. */
/* IP protocol and length fields. This addition cannot carry. */