/proc/$PID/cmdline: fixup empty ARGV case
/proc/*/cmdline code checks if it should look at ENVP area by checking last byte of ARGV area: rv = access_remote_vm(mm, arg_end - 1, &c, 1, 0); if (rv <= 0) goto out_free_page; If ARGV is somehow made empty (by doing execve(..., NULL, ...) or manually setting ->arg_start and ->arg_end to equal values), the decision will be based on byte which doesn't even belong to ARGV/ENVP. So, quickly check if ARGV area is empty and report 0 to match previous behaviour. Signed-off-by: Alexey Dobriyan <adobriyan@gmail.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
parent
c9d120b0b2
commit
3581d458c3
|
@ -243,6 +243,11 @@ static ssize_t proc_pid_cmdline_read(struct file *file, char __user *buf,
|
|||
len1 = arg_end - arg_start;
|
||||
len2 = env_end - env_start;
|
||||
|
||||
/* Empty ARGV. */
|
||||
if (len1 == 0) {
|
||||
rv = 0;
|
||||
goto out_free_page;
|
||||
}
|
||||
/*
|
||||
* Inherently racy -- command line shares address space
|
||||
* with code and data.
|
||||
|
|
Loading…
Reference in New Issue