All of lore.kernel.org
 help / color / mirror / Atom feed
* [Patch] fs/binfmt_elf.c: fix wrong return values
@ 2008-05-03 14:14 WANG Cong
  0 siblings, 0 replies; only message in thread
From: WANG Cong @ 2008-05-03 14:14 UTC (permalink / raw)
  To: LKML; +Cc: Alexander Viro, Andrew Morton, linux-fsdevel


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 <wangcong@zeuux.org>
Cc: Alexander Viro <viro@zeniv.linux.org.uk>

---
 fs/binfmt_elf.c |    4 ++--
 1 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/fs/binfmt_elf.c b/fs/binfmt_elf.c
index 43254e3..10f9642 100644
--- a/fs/binfmt_elf.c
+++ b/fs/binfmt_elf.c
@@ -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))
-- 
1.5.4.1


^ permalink raw reply related	[flat|nested] only message in thread

only message in thread, other threads:[~2008-05-03 14:10 UTC | newest]

Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-05-03 14:14 [Patch] fs/binfmt_elf.c: fix wrong return values WANG Cong

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.