prognam: Add diagnostic.
authorBruno Haible <bruno@clisp.org>
Sun, 6 Dec 2009 22:19:49 +0000 (23:19 +0100)
committerBruno Haible <bruno@clisp.org>
Sun, 6 Dec 2009 22:19:49 +0000 (23:19 +0100)
ChangeLog
lib/progname.c

index 90d6eb0..be28f93 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2009-12-06  Bruno Haible  <bruno@clisp.org>
+
+       * lib/progname.c: Include stdio.h, stdlib.h.
+       (set_program_name): Reject a NULL argument.
+
 2009-12-05  Eric Blake  <ebb9@byu.net>
 
        pipe2-safer: new module
index c8660c9..2e82ac9 100644 (file)
@@ -23,6 +23,8 @@
 #include "progname.h"
 
 #include <errno.h> /* get program_invocation_name declaration */
+#include <stdio.h>
+#include <stdlib.h>
 #include <string.h>
 
 
@@ -44,6 +46,16 @@ set_program_name (const char *argv0)
   const char *slash;
   const char *base;
 
+  /* Sanity check.  POSIX requires the invoking process to pass a non-NULL
+     argv[0].  */
+  if (argv0 == NULL)
+    {
+      /* It's a bug in the invoking program.  Help diagnosing it.  */
+      fputs ("A NULL argv[0] was passed through an exec system call.\n",
+            stderr);
+      abort ();
+    }
+
   slash = strrchr (argv0, '/');
   base = (slash != NULL ? slash + 1 : argv0);
   if (base - argv0 >= 7 && strncmp (base - 7, "/.libs/", 7) == 0)