summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBruno Haible <bruno@clisp.org>2009-12-09 08:30:38 -0800
committerUlrich Drepper <drepper@redhat.com>2009-12-09 08:30:38 -0800
commit4940d71bef654affc617dcd9eb48b424646a1045 (patch)
tree7df83e6054fdb9898a8c1fa0b37b48c3432f2728
parentee1a7fabb4e0abd3e73e828ce326dcb5fd38b874 (diff)
Add more warnings to exec functions.
-rw-r--r--ChangeLog9
-rw-r--r--posix/unistd.h16
2 files changed, 16 insertions, 9 deletions
diff --git a/ChangeLog b/ChangeLog
index 59e4b19241..799448f6d0 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,4 +1,11 @@
-2009-12-08 Ulrich Drepper <drepper@redhat.com>
+2009-11-05 Bruno Haible <bruno@clisp.org>
+
+ [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 <drepper@redhat.com>
* sysdeps/unix/sysv/linux/bits/socket.h: Define mmsghdr and declare
recvmmsg.
diff --git a/posix/unistd.h b/posix/unistd.h
index d9ecb5e788..b46a885afa 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