[PATCH] ISDN: check for userspace copy faults

Most of the ISDN ->readstat() implementations needed to check
copy_to_user() and put_user() return values.

Signed-off-by: Jeff Garzik <jeff@garzik.org>
Cc: Karsten Keil <kkeil@suse.de>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
This commit is contained in:
Jeff Garzik
2006-10-17 00:10:40 -07:00
committed by Linus Torvalds
parent 04518bfe8e
commit 7786ce192f
5 changed files with 20 additions and 11 deletions

View File

@@ -725,23 +725,27 @@ static int pcbit_stat(u_char __user *buf, int len, int driver, int channel)
if (stat_st < stat_end)
{
copy_to_user(buf, statbuf + stat_st, len);
if (copy_to_user(buf, statbuf + stat_st, len))
return -EFAULT;
stat_st += len;
}
else
{
if (len > STATBUF_LEN - stat_st)
{
copy_to_user(buf, statbuf + stat_st,
STATBUF_LEN - stat_st);
copy_to_user(buf, statbuf,
len - (STATBUF_LEN - stat_st));
if (copy_to_user(buf, statbuf + stat_st,
STATBUF_LEN - stat_st))
return -EFAULT;
if (copy_to_user(buf, statbuf,
len - (STATBUF_LEN - stat_st)))
return -EFAULT;
stat_st = len - (STATBUF_LEN - stat_st);
}
else
{
copy_to_user(buf, statbuf + stat_st, len);
if (copy_to_user(buf, statbuf + stat_st, len))
return -EFAULT;
stat_st += len;