[CVE-2009-0029] System call wrapper special cases
System calls with an unsigned long long argument can't be converted with the standard wrappers since that would include a cast to long, which in turn means that we would lose the upper 32 bit on 32 bit architectures. Also semctl can't use the standard wrapper since it has a 'union' parameter. So we handle them as special case and add some extra wrappers instead. Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com>
This commit is contained in:
@@ -145,7 +145,7 @@ out:
|
||||
/* And here is where the userspace process can look up the cookie value
|
||||
* to retrieve the path.
|
||||
*/
|
||||
asmlinkage long sys_lookup_dcookie(u64 cookie64, char __user * buf, size_t len)
|
||||
SYSCALL_DEFINE(lookup_dcookie)(u64 cookie64, char __user * buf, size_t len)
|
||||
{
|
||||
unsigned long cookie = (unsigned long)cookie64;
|
||||
int err = -EINVAL;
|
||||
@@ -198,7 +198,13 @@ out:
|
||||
mutex_unlock(&dcookie_mutex);
|
||||
return err;
|
||||
}
|
||||
|
||||
#ifdef CONFIG_HAVE_SYSCALL_WRAPPERS
|
||||
asmlinkage long SyS_lookup_dcookie(u64 cookie64, long buf, long len)
|
||||
{
|
||||
return SYSC_lookup_dcookie(cookie64, (char __user *) buf, (size_t) len);
|
||||
}
|
||||
SYSCALL_ALIAS(sys_lookup_dcookie, SyS_lookup_dcookie);
|
||||
#endif
|
||||
|
||||
static int dcookie_init(void)
|
||||
{
|
||||
|
Reference in New Issue
Block a user