]> git.ipfire.org Git - thirdparty/dhcpcd.git/commitdiff
Save more memory, malloc the pidfile.
authorRoy Marples <roy@marples.name>
Fri, 5 Sep 2008 14:16:53 +0000 (14:16 +0000)
committerRoy Marples <roy@marples.name>
Fri, 5 Sep 2008 14:16:53 +0000 (14:16 +0000)
dhcpcd.c

index a42aa02488da9b2872b885a9f10526e5c9c8e10e..84468dd5f0da4d60580cf6064634f1c63c17708b 100644 (file)
--- a/dhcpcd.c
+++ b/dhcpcd.c
@@ -70,7 +70,7 @@ static char **ifv = NULL;
 static int ifc = 0;
 static int linkfd = -1;
 static char *cffile = NULL;
-static char pidfile[PATH_MAX] = { '\0' };
+static char *pidfile;
 static struct interface *ifaces = NULL;
 
 struct dhcp_op {
@@ -150,6 +150,9 @@ cleanup(void)
                close(pidfd);
                unlink(pidfile);
        }
+#ifdef DEBUG_MEMORY
+       free(pidfile);
+#endif
 }
 
 _noreturn void
@@ -962,6 +965,7 @@ main(int argc, char **argv)
        struct if_options *ifo;
        struct interface *iface;
        int opt, oi = 0, signal_fd, sig = 0, i, control_fd;
+       size_t len;
        pid_t pid;
        struct timespec ts;
 
@@ -1028,10 +1032,12 @@ main(int argc, char **argv)
 
        /* If we have any other args, we should run as a single dhcpcd instance
         * for that interface. */
-       if (optind == argc - 1 && !(options & DHCPCD_TEST))
-               snprintf(pidfile, sizeof(pidfile), PIDFILE, "-", argv[optind]);
-       else {
-               snprintf(pidfile, sizeof(pidfile), PIDFILE, "", "");
+       len = strlen(PIDFILE) + IF_NAMESIZE + 2;
+       pidfile = xmalloc(len);
+       if (optind == argc - 1 && !(options & DHCPCD_TEST)) {
+               snprintf(pidfile, len, PIDFILE, "-", argv[optind]);
+       } else {
+               snprintf(pidfile, len, PIDFILE, "", "");
                options |= DHCPCD_MASTER;
        }