diff options
Diffstat (limited to 'net/ipv4/icmp.c')
| -rw-r--r-- | net/ipv4/icmp.c | 5 | 
1 files changed, 5 insertions, 0 deletions
diff --git a/net/ipv4/icmp.c b/net/ipv4/icmp.c index 8cebb476b3ab..b8607763d113 100644 --- a/net/ipv4/icmp.c +++ b/net/ipv4/icmp.c @@ -749,6 +749,11 @@ void __icmp_send(struct sk_buff *skb_in, int type, int code, __be32 info,  		room = 576;  	room -= sizeof(struct iphdr) + icmp_param.replyopts.opt.opt.optlen;  	room -= sizeof(struct icmphdr); +	/* Guard against tiny mtu. We need to include at least one +	 * IP network header for this message to make any sense. +	 */ +	if (room <= (int)sizeof(struct iphdr)) +		goto ende;  	icmp_param.data_len = skb_in->len - icmp_param.offset;  	if (icmp_param.data_len > room)  |