From 4940d71bef654affc617dcd9eb48b424646a1045 Mon Sep 17 00:00:00 2001 From: Bruno Haible Date: Wed, 9 Dec 2009 08:30:38 -0800 Subject: [PATCH] Add more warnings to exec functions. --- ChangeLog | 9 ++++++++- posix/unistd.h | 16 ++++++++-------- 2 files changed, 16 insertions(+), 9 deletions(-) diff --git a/ChangeLog b/ChangeLog index 59e4b19..799448f 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,4 +1,11 @@ -2009-12-08 Ulrich Drepper +2009-11-05 Bruno Haible + + [BZ #11056] + * posix/unistd.h (execve, fexecve, execv, execvp, execvpe): Mark the + argv argument as non-NULL. + (execle, execl, execlp): Mark the first ARG argument as non-NULL. + +-2009-12-08 Ulrich Drepper * sysdeps/unix/sysv/linux/bits/socket.h: Define mmsghdr and declare recvmmsg. diff --git a/posix/unistd.h b/posix/unistd.h index d9ecb5e..b46a885 100644 --- a/posix/unistd.h +++ b/posix/unistd.h @@ -544,47 +544,47 @@ extern char **environ; /* Replace the current process, executing PATH with arguments ARGV and environment ENVP. ARGV and ENVP are terminated by NULL pointers. */ extern int execve (__const char *__path, char *__const __argv[], - char *__const __envp[]) __THROW __nonnull ((1)); + char *__const __envp[]) __THROW __nonnull ((1, 2)); #ifdef __USE_XOPEN2K8 /* Execute the file FD refers to, overlaying the running program image. ARGV and ENVP are passed to the new program, as for `execve'. */ extern int fexecve (int __fd, char *__const __argv[], char *__const __envp[]) - __THROW; + __THROW __nonnull ((2)); #endif /* Execute PATH with arguments ARGV and environment from `environ'. */ extern int execv (__const char *__path, char *__const __argv[]) - __THROW __nonnull ((1)); + __THROW __nonnull ((1, 2)); /* Execute PATH with all arguments after PATH until a NULL pointer, and the argument after that for environment. */ extern int execle (__const char *__path, __const char *__arg, ...) - __THROW __nonnull ((1)); + __THROW __nonnull ((1, 2)); /* Execute PATH with all arguments after PATH until a NULL pointer and environment from `environ'. */ extern int execl (__const char *__path, __const char *__arg, ...) - __THROW __nonnull ((1)); + __THROW __nonnull ((1, 2)); /* Execute FILE, searching in the `PATH' environment variable if it contains no slashes, with arguments ARGV and environment from `environ'. */ extern int execvp (__const char *__file, char *__const __argv[]) - __THROW __nonnull ((1)); + __THROW __nonnull ((1, 2)); /* Execute FILE, searching in the `PATH' environment variable if it contains no slashes, with all arguments after FILE until a NULL pointer and environment from `environ'. */ extern int execlp (__const char *__file, __const char *__arg, ...) - __THROW __nonnull ((1)); + __THROW __nonnull ((1, 2)); #ifdef __USE_GNU /* Execute FILE, searching in the `PATH' environment variable if it contains no slashes, with arguments ARGV and environment from `environ'. */ extern int execvpe (__const char *__file, char *__const __argv[], char *__const __envp[]) - __THROW __nonnull ((1)); + __THROW __nonnull ((1, 2)); #endif -- 2.7.4