[Patch] fs/binfmt_elf.c: fix wrong return values
create_elf_tables() returns 0 on success. But when strnlen_user() "fails", it returns 0 directly. So this is wrong. Signed-off-by: WANG Cong <wangcong@zeuux.org> Cc: Alexander Viro <viro@zeniv.linux.org.uk> Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
This commit is contained in:
		
							parent
							
								
									08a6fac1c6
								
							
						
					
					
						commit
						23c4971e3d
					
				| @ -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)) | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user