diff options
author | Christian Hesse <mail@eworm.de> | 2014-06-07 06:45:19 +0200 |
---|---|---|
committer | Christian Hesse <mail@eworm.de> | 2014-06-07 06:45:19 +0200 |
commit | 1edcee2141c48a6bd767e9400b0883e6de9d14e5 (patch) | |
tree | 1807e7cbc54f009a717ab28b7e87fcddf09cda41 | |
parent | 318a07de90bd855c41e568e7a2451832448be677 (diff) | |
download | dyndhcpd-1edcee2141c48a6bd767e9400b0883e6de9d14e5.tar.gz dyndhcpd-1edcee2141c48a6bd767e9400b0883e6de9d14e5.tar.zst |
check if dhcpd exists and is executable
-rw-r--r-- | config.def.h | 3 | ||||
-rw-r--r-- | dyndhcpd.c | 8 |
2 files changed, 10 insertions, 1 deletions
diff --git a/config.def.h b/config.def.h index 8f6e7ec..2e822fd 100644 --- a/config.def.h +++ b/config.def.h @@ -15,6 +15,9 @@ #define CONFIG_TEMPLATE "/etc/dyndhcpd/dhcpd.conf" #define CONFIG_OUTPUT "/run/dhcpd-%s.conf" +/* dhcpd executable */ +#define DHCPDFILE "/usr/bin/dhcpd" + /* pathes for pid and leases file, these are passed to dhcpd */ #define PIDFILE "/run/dhcpd-%s.pid" #define LEASESFILE "/var/lib/dhcp/dhcp-%s.leases" @@ -108,6 +108,12 @@ int main(int argc, char ** argv) { goto out; } + /* check if dhcpd exists and is executable */ + if (access(DHCPDFILE, X_OK) == -1) { + fprintf(stderr, "The dhcp daemon is not execatable!\n"); + goto out; + } + /* get the domainname */ gethostname(hostname, 254); hp = gethostbyname(hostname); @@ -268,7 +274,7 @@ int main(int argc, char ** argv) { if (verbose > 1) printf("Running: dhcpd -f -d -q -4 -pf %s -lf %s -cf %s %s\n", pidfile, leasesfile, filename, interface); - execlp("/usr/bin/dhcpd", "dhcpd", "-f", "-d", "-q", "-4", + execlp(DHCPDFILE, "dhcpd", "-f", "-d", "-q", "-4", "-pf", pidfile, "-lf", leasesfile, "-cf", filename, interface, NULL); rc = EXIT_SUCCESS; |