提交 fb3ce90b 编写于 作者: F Firo Yang 提交者: David S. Miller

hdlcdrv: Fix divide by zero in hdlcdrv_ioctl

syszkaller fuzzer triggered a divide by zero, when set calibration
through ioctl().

To fix it, test 'bitrate' if it is negative or 0, just return -EINVAL.
Reported-by: NAndrey Konovalov <andreyknvl@google.com>
Signed-off-by: NFiro Yang <firogm@gmail.com>
Signed-off-by: NDavid S. Miller <davem@davemloft.net>
上级 6c713a3a
......@@ -576,6 +576,8 @@ static int hdlcdrv_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd)
case HDLCDRVCTL_CALIBRATE:
if(!capable(CAP_SYS_RAWIO))
return -EPERM;
if (s->par.bitrate <= 0)
return -EINVAL;
if (bi.data.calibrate > INT_MAX / s->par.bitrate)
return -EINVAL;
s->hdlctx.calibrate = bi.data.calibrate * s->par.bitrate / 16;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册