proc: fix /proc/*/map_files lookup some more
I totally forgot that _parse_integer() accepts arbitrary amount of leading zeroes leading to the following lookups: OK # readlink /proc/1/map_files/56427ecba000-56427eddc000 /lib/systemd/systemd bogus # readlink /proc/1/map_files/00000000000056427ecba000-56427eddc000 /lib/systemd/systemd # readlink /proc/1/map_files/56427ecba000-00000000000056427eddc000 /lib/systemd/systemd Link: http://lkml.kernel.org/r/20180303215130.GA23480@avx2 Signed-off-by: Alexey Dobriyan <adobriyan@gmail.com> Reviewed-by: Cyrill Gorcunov <gorcunov@gmail.com> Reviewed-by: Andrew Morton <akpm@linux-foundation.org> Cc: Pavel Emelyanov <xemul@virtuozzo.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:

committed by
Linus Torvalds

parent
b4884f2333
commit
35318db566
@@ -1913,6 +1913,8 @@ static int dname_to_vma_addr(struct dentry *dentry,
|
||||
unsigned long long sval, eval;
|
||||
unsigned int len;
|
||||
|
||||
if (str[0] == '0' && str[1] != '-')
|
||||
return -EINVAL;
|
||||
len = _parse_integer(str, 16, &sval);
|
||||
if (len & KSTRTOX_OVERFLOW)
|
||||
return -EINVAL;
|
||||
@@ -1924,6 +1926,8 @@ static int dname_to_vma_addr(struct dentry *dentry,
|
||||
return -EINVAL;
|
||||
str++;
|
||||
|
||||
if (str[0] == '0' && str[1])
|
||||
return -EINVAL;
|
||||
len = _parse_integer(str, 16, &eval);
|
||||
if (len & KSTRTOX_OVERFLOW)
|
||||
return -EINVAL;
|
||||
|
Reference in New Issue
Block a user