fs/binfmt_elf.c: fix wrong return values
Subsystems (2)
PATCH 1/1 fs/binfmt_elf.c: fix wrong return values
When strnlen_user() fails, return 0 is suspecious. What's more, the caller returns 0 on success, so that logic is obviously wrong.
I am not sure if returning -EINVAL is good enough. I think it's better than -EFAULT here.
NOTE: This patch is _not_ tested yet!
Signed-off-by WANG Cong <[email protected]>
Cc Alexander Viro <[email protected]>
--- fs/binfmt_elf.c | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-)
fs/binfmt_elf.c +2 -2
@@ -256,7 +256,7 @@ create_elf_tables(struct linux_binprm *bprm, struct elfhdr *exec,return -EFAULT ; len =strnlen_user ((void __user *)p,MAX_ARG_STRLEN );if (!len || len >MAX_ARG_STRLEN ) -return 0 ; +return -EINVAL ; p += len; }if (__put_user (0 , argv))
@@ -268,7 +268,7 @@ create_elf_tables(struct linux_binprm *bprm, struct elfhdr *exec,return -EFAULT ; len =strnlen_user ((void __user *)p,MAX_ARG_STRLEN );if (!len || len >MAX_ARG_STRLEN ) -return 0 ; +return -EINVAL ; p += len; }if (__put_user (0 , envp))
Signature · 1 line
1.5.4.1