<div dir="ltr"><div dir="ltr"><br></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Fri, Oct 28, 2022 at 11:56 PM Paul Eggert via tz <<a href="mailto:tz@iana.org">tz@iana.org</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Don’t dump core if argv[0] is NULL, which is allowed on<br>
GNU/Linux if the invoker is sufficiently perverse.<br></blockquote><div><br></div><div>note that linux fixed this earlier this year: <a href="https://github.com/torvalds/linux/commit/dcd46d897adb70d63e025f175a00a89797d31a43">https://github.com/torvalds/linux/commit/dcd46d897adb70d63e025f175a00a89797d31a43</a></div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
* zdump.c (progname): Now char const *, so that it can be given<br>
the address of a string constant.<br>
(tzalloc): Use optarg, not progname, since progname’s type is no<br>
longer correct.<br>
* zdump.c, zic.c (main): Initialize progname to non-null.<br>
---<br>
 zdump.c | 6 +++---<br>
 zic.c   | 2 +-<br>
 2 files changed, 4 insertions(+), 4 deletions(-)<br>
<br>
diff --git a/zdump.c b/zdump.c<br>
index 512ba8cc..f0461ade 100644<br>
--- a/zdump.c<br>
+++ b/zdump.c<br>
@@ -84,7 +84,7 @@ static time_t const absolute_max_time =<br>
    ? (((time_t) 1 << atime_shift) - 1 + ((time_t) 1 << atime_shift))<br>
    : -1);<br>
 static int     longest;<br>
-static char *  progname;<br>
+static char const *progname;<br>
 static bool    warned;<br>
 static bool    errout;<br>
<br>
@@ -234,7 +234,7 @@ tzalloc(char const *val)<br>
     exit(EXIT_FAILURE);<br>
   }<br>
   tzset();<br>
-  return &progname;  /* Any valid non-null char ** will do.  */<br>
+  return &optarg;  /* Any valid non-null char ** will do.  */<br>
 # else<br>
   enum { TZeqlen = 3 };<br>
   static char const TZeq[TZeqlen] = "TZ=";<br>
@@ -463,7 +463,7 @@ main(int argc, char *argv[])<br>
 # endif /* defined TEXTDOMAINDIR */<br>
        textdomain(TZ_DOMAIN);<br>
 #endif /* HAVE_GETTEXT */<br>
-       progname = argv[0];<br>
+       progname = argv[0] ? argv[0] : "zdump";<br>
        for (i = 1; i < argc; ++i)<br>
                if (strcmp(argv[i], "--version") == 0) {<br>
                        printf("zdump %s%s\n", PKGVERSION, TZVERSION);<br>
diff --git a/zic.c b/zic.c<br>
index 501718f4..f3b32ecc 100644<br>
--- a/zic.c<br>
+++ b/zic.c<br>
@@ -943,7 +943,7 @@ main(int argc, char **argv)<br>
        textdomain(TZ_DOMAIN);<br>
 #endif /* HAVE_GETTEXT */<br>
        main_argv = argv;<br>
-       progname = argv[0];<br>
+       progname = argv[0] ? argv[0] : "zic";<br>
        if (TYPE_BIT(zic_t) < 64) {<br>
                fprintf(stderr, "%s: %s\n", progname,<br>
                        _("wild compilation-time specification of zic_t"));<br>
-- <br>
2.37.2<br>
<br>
</blockquote></div></div>