Re: [PATCH v2] execveat.2: Fix prototype

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Alex,

On 2/7/21 12:43 PM, Alejandro Colomar wrote:
> It's been 6 years since execveat(2) was added to the kernel,
> and there's still no glibc wrapper.  Let's document the kernel
> syscall prototype.
> 
> I reported a bug against glibc requesting a wrapper;
> when glibc adds the wrapper, this commit should probably be
> reverted.

Thanks for filing the glibc bug.

I've applied this patch. Thanks!

Cheers,

Michael

> ......
> 
> .../linux$ grep_syscall execveat
> fs/exec.c:2062:
> SYSCALL_DEFINE5(execveat,
> 		int, fd, const char __user *, filename,
> 		const char __user *const __user *, argv,
> 		const char __user *const __user *, envp,
> 		int, flags)
> fs/exec.c:2083:
> COMPAT_SYSCALL_DEFINE5(execveat, int, fd,
> 		       const char __user *, filename,
> 		       const compat_uptr_t __user *, argv,
> 		       const compat_uptr_t __user *, envp,
> 		       int,  flags)
> include/linux/compat.h:815:
> asmlinkage long compat_sys_execveat(int dfd, const char __user *filename,
> 		     const compat_uptr_t __user *argv,
> 		     const compat_uptr_t __user *envp, int flags);
> include/linux/syscalls.h:980:
> asmlinkage long sys_execveat(int dfd, const char __user *filename,
> 			const char __user *const __user *argv,
> 			const char __user *const __user *envp, int flags);
> .../linux$
> 
> function grep_syscall()
> {
> 	if ! [ -v 1 ]; then
> 		>&2 echo "Usage: ${FUNCNAME[0]} <syscall>";
> 		return ${EX_USAGE};
> 	fi
> 
> 	find * -type f \
> 	|grep '\.c$' \
> 	|sort -V \
> 	|xargs pcregrep -Mn "(?s)^\w*SYSCALL_DEFINE.\(${1},.*?\)" \
> 	|sed -E 's/^[^:]+:[0-9]+:/&\n/';
> 
> 	find * -type f \
> 	|grep '\.[ch]$' \
> 	|sort -V \
> 	|xargs pcregrep -Mn "(?s)^asmlinkage\s+[\w\s]+\**sys_${1}\s*\(.*?\)" \
> 	|sed -E 's/^[^:]+:[0-9]+:/&\n/';
> }
> 
> Glibc bug: <https://sourceware.org/bugzilla/show_bug.cgi?id=27364>
> Signed-off-by: Alejandro Colomar <alx.manpages@xxxxxxxxx>
> ---
>  man2/execveat.2 | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/man2/execveat.2 b/man2/execveat.2
> index 02d9c7331..d1ce4bee1 100644
> --- a/man2/execveat.2
> +++ b/man2/execveat.2
> @@ -31,7 +31,7 @@ execveat \- execute program relative to a directory file descriptor
>  .B #include <unistd.h>
>  .PP
>  .BI "int execveat(int " dirfd ", const char *" pathname ,
> -.BI "             char *const " argv "[], char *const " envp [],
> +.BI "             const char *const " argv "[], const char *const " envp [],
>  .BI "             int " flags );
>  .fi
>  .PP
> 


-- 
Michael Kerrisk
Linux man-pages maintainer; http://www.kernel.org/doc/man-pages/
Linux/UNIX System Programming Training: http://man7.org/training/



[Index of Archives]     [Kernel Documentation]     [Netdev]     [Linux Ethernet Bridging]     [Linux Wireless]     [Kernel Newbies]     [Security]     [Linux for Hams]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux Admin]     [Samba]

  Powered by Linux