summary refs log tree commit diff
diff options
context:
space:
mode:
authorJune McEnroe <june@causal.agency>2020-08-17 12:57:50 -0400
committerJune McEnroe <june@causal.agency>2020-08-17 12:57:50 -0400
commit41f9a167e34106509d34575756cad9c4292e1940 (patch)
tree094a928958e5c6841fc4d0b2c4d2b4f82e266e93
parentFlesh out documentation and improve examples (diff)
downloadcatsit-41f9a167e34106509d34575756cad9c4292e1940.tar.gz
catsit-41f9a167e34106509d34575756cad9c4292e1940.zip
Properly handle command line truncation
Unlikely to happen since ARG_MAX is 256K, but...
-rw-r--r--service.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/service.c b/service.c
index 9a3b157..39ce60e 100644
--- a/service.c
+++ b/service.c
@@ -212,15 +212,21 @@ void serviceStart(struct Service *service) {
 		);
 		assert(n > 0);
 		len += n;
+		if (len >= sizeof(command)) errx(ExitNoExec, "command truncated");
 	}
-	snprintf(&command[len], sizeof(command) - len, "exec %s", service->command);
+	int n = snprintf(
+		&command[len], sizeof(command) - len, "exec %s", service->command
+	);
+	assert(n > 0);
+	len += n;
+	if (len >= sizeof(command)) errx(ExitNoExec, "command truncated");
 
 	execle(
 		_PATH_BSHELL,
 		_PATH_BSHELL, "-c", command, service->name, NULL,
 		serviceEnviron
 	);
-	err(ExitNotFound, "%s", _PATH_BSHELL);
+	err(ExitNoExec, "%s", _PATH_BSHELL);
 }
 
 void serviceSignal(struct Service *service, int signal) {
erride for enable-blameChristian Hesse 2019-06-05tests: successfully validate rc versionsChristian Hesse 2019-06-05git: update to v2.21.0Christian Hesse 2019-06-05ui-ssdiff: ban strncat()Christian Hesse 2019-06-05global: make 'char *path' const where possibleChristian Hesse 2019-05-20ui-shared: restrict to 15 levelsJason A. Donenfeld 2019-02-23ui-diff,ui-tag: don't use htmlf with non-formatted stringsChris Mayo 2019-02-23ui-ssdiff: resolve HTML5 validation errorsChris Mayo 2019-01-03filters: migrate from luacrypto to luaosslJason A. Donenfeld 2019-01-02ui-shared: fix broken sizeof in title setting and rewriteJason A. Donenfeld 2018-12-09git: update to v2.20.0Christian Hesse 2018-11-25ui-blame: set repo for sbJason A. Donenfeld 2018-11-25auth-filter: pass url with query string attachedJason A. Donenfeld 2018-11-21git: use xz compressed archive for downloadChristian Hesse 2018-10-12git: update to v2.19.1Christian Hesse 2018-09-11ui-ssdiff: ban strcat()Christian Hesse 2018-09-11ui-ssdiff: ban strncpy()Christian Hesse 2018-09-11ui-shared: ban strcat()Christian Hesse 2018-09-11ui-patch: ban sprintf()Christian Hesse 2018-09-11ui-log: ban strncpy()Christian Hesse 2018-09-11ui-log: ban strcpy()Christian Hesse 2018-09-11parsing: ban sprintf()Christian Hesse 2018-09-11parsing: ban strncpy()Christian Hesse 2018-08-28filters: generate anchor links from markdownChristian Hesse 2018-08-03Bump version.Jason A. Donenfeld 2018-08-03clone: fix directory traversalJason A. Donenfeld 2018-08-03config: record repo.snapshot-prefix in the per-repo configKonstantin Ryabitsev