diff --git a/daemon/main.c b/daemon/main.c index ef5bc3790ad5eb8c63371a1cad78bc60b7cd6fc3..2cae4746e97317131d4a6e5b2ff4a84fb14c29ed 100644 --- a/daemon/main.c +++ b/daemon/main.c @@ -76,7 +76,7 @@ static const char *set_addr(char *addr, int *port) int main(int argc, char **argv) { - const char *addr = "127.0.0.1"; + const char *addr = NULL; int port = 53; /* Long options. */ @@ -108,12 +108,16 @@ int main(int argc, char **argv) /* Switch to rundir. */ if (optind < argc) { - ret = chdir(argv[optind]); + const char *rundir = argv[optind]; + if (access(rundir, W_OK) != 0) { + fprintf(stderr, "[system] rundir '%s': not writeable\n", rundir); + return EXIT_FAILURE; + } + ret = chdir(rundir); if (ret != 0) { - fprintf(stderr, "[system] rundir '%s': %s\n", argv[optind], strerror(errno)); + fprintf(stderr, "[system] rundir '%s': %s\n", rundir, strerror(errno)); return EXIT_FAILURE; } - printf("[system] rundir '%s'\n", argv[optind]); } /* Block signals. */