Skip to content

Commit a28d0e8

Browse files
Dan Carpenterdavem330
authored andcommitted
wan/x25_asy: integer overflow in x25_asy_change_mtu()
If "newmtu * 2 + 4" is too large then it can cause an integer overflow leading to memory corruption. Eric Dumazet suggests that 65534 is a reasonable upper limit. Btw, "newmtu" is not allowed to be a negative number because of the check in dev_set_mtu(), so that's ok. Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com> Signed-off-by: David S. Miller <davem@davemloft.net>
1 parent cc25eaa commit a28d0e8

File tree

1 file changed

+5
-1
lines changed

1 file changed

+5
-1
lines changed

drivers/net/wan/x25_asy.c

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -122,8 +122,12 @@ static int x25_asy_change_mtu(struct net_device *dev, int newmtu)
122122
{
123123
struct x25_asy *sl = netdev_priv(dev);
124124
unsigned char *xbuff, *rbuff;
125-
int len = 2 * newmtu;
125+
int len;
126126

127+
if (newmtu > 65534)
128+
return -EINVAL;
129+
130+
len = 2 * newmtu;
127131
xbuff = kmalloc(len + 4, GFP_ATOMIC);
128132
rbuff = kmalloc(len + 4, GFP_ATOMIC);
129133

0 commit comments

Comments
 (0)