diff options
author | June McEnroe <june@causal.agency> | 2021-09-26 18:11:38 -0400 |
---|---|---|
committer | June McEnroe <june@causal.agency> | 2021-09-26 18:11:38 -0400 |
commit | b5437a42f9950d7f56d7c199521929e7d93df287 (patch) | |
tree | 99ab4555e51735395f2bca91833e890a7c2ea242 | |
parent | Use reallocarray(3) (diff) | |
download | catsit-b5437a42f9950d7f56d7c199521929e7d93df287.tar.gz catsit-b5437a42f9950d7f56d7c199521929e7d93df287.zip |
Allocate pollfd array rather than using a VLA
-rw-r--r-- | daemon.c | 18 |
1 files changed, 14 insertions, 4 deletions
diff --git a/daemon.c b/daemon.c index efeaf22..e4c3145 100644 --- a/daemon.c +++ b/daemon.c @@ -312,6 +312,14 @@ int main(int argc, char *argv[]) { } setTitle(); + struct pollfd *fds = calloc(1 + 2 * services.len, sizeof(*fds)); + if (!fds) { + syslog(LOG_ERR, "calloc: %m"); + goto shutdown; + } + fds[0].fd = fifo; + fds[0].events = POLLIN; + sigset_t mask; sigemptyset(&mask); for (;;) { @@ -331,6 +339,11 @@ int main(int argc, char *argv[]) { } if (signals[SIGHUP]) { parseConfig(configPath); + fds = reallocarray(fds, 1 + 2 * services.len, sizeof(*fds)); + if (!fds) { + syslog(LOG_ERR, "reallocarray: %m"); + goto shutdown; + } setTitle(); signals[SIGHUP] = 0; } @@ -340,10 +353,6 @@ int main(int argc, char *argv[]) { signals[SIGINFO] = 0; } - struct pollfd fds[1 + 2 * services.len]; - fds[0].fd = fifo; - fds[0].events = POLLIN; - struct timespec deadline = {0}; for (size_t i = 0; i < services.len; ++i) { struct Service *service = &services.ptr[i]; @@ -414,6 +423,7 @@ int main(int argc, char *argv[]) { } } +shutdown: close(fifo); unlink(fifoPath); |