From: Roy Marples Date: Fri, 5 Sep 2008 14:16:53 +0000 (+0000) Subject: Save more memory, malloc the pidfile. X-Git-Tag: v5.0.0~287 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=fca060b851b96d6e82d13306df83322ea1d08128;p=thirdparty%2Fdhcpcd.git Save more memory, malloc the pidfile. --- diff --git a/dhcpcd.c b/dhcpcd.c index a42aa024..84468dd5 100644 --- 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; }