[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:

committed by
Linus Torvalds

parent
04518bfe8e
commit
7786ce192f
@@ -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;
|
||||
|
||||
|
Reference in New Issue
Block a user