module: static checker complains about negative values
PATCH 1/1 module: static checker complains about negative values
We cap "stat.size" at INT_MAX but we don't check for negative values so my static checker complains. At this point, you already have control of the kernel and if you start passing negative values here then you deserve what happens next.
On 64 bit systems the vmalloc() will definitely fail. On 32 bit systems we truncate the upper 32 bits away so that could succeed. I haven't followed it further than that.
kernel/module.c +1 -1
@@ -2536,7 +2536,7 @@ static int copy_module_from_fd(int fd, struct load_info *info) }/* Don't hand 0 to vmalloc, it whines. */ -if (stat.size =0 ) { +if (stat.size <=0 ) { err = -EINVAL ; goto out; }
Quoted 10 lines · Dan Carpenter
We cap "stat.size" at
INT_MAXbut we don't check for negative values so my static checker complains. At this point, you already have control of the kernel and if you start passing negative values here then you deserve what happens next.On 64 bit systems the
vmalloc()will definitely fail. On 32 bit systems we truncate the upper 32 bits away so that could succeed. I haven't followed it further than that.Signed-off-by Dan Carpenter <[email protected]>
If vfs_getattr() returns a negative stat.size, we have worse problems.
I'd rather see you sprinkle assertions like that into the code, so we can make sure that can't happen for any fs's getattr().
Cheers,
Rusty.
Quoted 11 lines · Rusty Russell
Quoted 9 lines · Dan Carpenter
We cap "stat.size" at
INT_MAXbut we don't check for negative values so my static checker complains. At this point, you already have control of the kernel and if you start passing negative values here then you deserve what happens next.On 64 bit systems the
vmalloc()will definitely fail. On 32 bit systems we truncate the upper 32 bits away so that could succeed. I haven't followed it further than that.
Quoted 6 lines
Quoted 1 line
Signed-off-by Dan Carpenter <[email protected]>If
vfs_getattr()returns a negative stat.size, we have worse problems.I'd rather see you sprinkle assertions like that into the code, so we can make sure that can't happen for any fs's
getattr().
Yeah. I was lazy. Sorry. I can just hand edit my database to say that i_size_read() returns a reasonable number...
regards,
dan carpenter