|
@@ -394,7 +394,7 @@ data_sock_ioctl(struct socket *sock, unsigned int cmd, unsigned long arg)
|
|
|
memcpy(di.channelmap, dev->channelmap,
|
|
memcpy(di.channelmap, dev->channelmap,
|
|
|
sizeof(di.channelmap));
|
|
sizeof(di.channelmap));
|
|
|
di.nrbchan = dev->nrbchan;
|
|
di.nrbchan = dev->nrbchan;
|
|
|
- strcpy(di.name, dev_name(&dev->dev));
|
|
|
|
|
|
|
+ strscpy(di.name, dev_name(&dev->dev), sizeof(di.name));
|
|
|
if (copy_to_user((void __user *)arg, &di, sizeof(di)))
|
|
if (copy_to_user((void __user *)arg, &di, sizeof(di)))
|
|
|
err = -EFAULT;
|
|
err = -EFAULT;
|
|
|
} else
|
|
} else
|
|
@@ -677,7 +677,7 @@ base_sock_ioctl(struct socket *sock, unsigned int cmd, unsigned long arg)
|
|
|
memcpy(di.channelmap, dev->channelmap,
|
|
memcpy(di.channelmap, dev->channelmap,
|
|
|
sizeof(di.channelmap));
|
|
sizeof(di.channelmap));
|
|
|
di.nrbchan = dev->nrbchan;
|
|
di.nrbchan = dev->nrbchan;
|
|
|
- strcpy(di.name, dev_name(&dev->dev));
|
|
|
|
|
|
|
+ strscpy(di.name, dev_name(&dev->dev), sizeof(di.name));
|
|
|
if (copy_to_user((void __user *)arg, &di, sizeof(di)))
|
|
if (copy_to_user((void __user *)arg, &di, sizeof(di)))
|
|
|
err = -EFAULT;
|
|
err = -EFAULT;
|
|
|
} else
|
|
} else
|
|
@@ -691,6 +691,7 @@ base_sock_ioctl(struct socket *sock, unsigned int cmd, unsigned long arg)
|
|
|
err = -EFAULT;
|
|
err = -EFAULT;
|
|
|
break;
|
|
break;
|
|
|
}
|
|
}
|
|
|
|
|
+ dn.name[sizeof(dn.name) - 1] = '\0';
|
|
|
dev = get_mdevice(dn.id);
|
|
dev = get_mdevice(dn.id);
|
|
|
if (dev)
|
|
if (dev)
|
|
|
err = device_rename(&dev->dev, dn.name);
|
|
err = device_rename(&dev->dev, dn.name);
|