Messages in this thread | | | Date | Mon, 15 Oct 2007 01:56:23 +0100 | From | Al Viro <> | Subject | WTF is HIDIOCGRDESC supposed to do (aside of being a roothole)? |
| |
This
+ if (get_user(len, (int __user *)arg)) + return -EFAULT; + if (copy_to_user(*((__u8 **)(user_arg + + sizeof(__u32))), + dev->hid->rdesc, len))
is an instant trouble - you dereference userland-supplied address and expect it to be OK; then you take the obtained value and use it as address to shove the data into.
Now, a) dereference is Not Safe(tm), even if you have get_user() succeeded just before (and it might be completely unrelated to userland data at that address). b) copying arbitrary amount of data? Without any sanity checks on len, when we'd just got it from userland? c) just WTF is that thing supposed to do? - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |