diff options
Diffstat (limited to 'nuttx/net/utils/net_chksum.c')
-rw-r--r-- | nuttx/net/utils/net_chksum.c | 7 |
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. */ |