public inbox for gentoo-commits@lists.gentoo.org
 help / color / mirror / Atom feed
From: "William Hubbs" <williamh@gentoo.org>
To: gentoo-commits@lists.gentoo.org
Subject: [gentoo-commits] proj/openrc:master commit in: src/rc/
Date: Thu, 22 Feb 2018 00:17:25 +0000 (UTC)	[thread overview]
Message-ID: <1519258496.e275da84de1589253da5ff6a7c272cf1c82f8567.williamh@OpenRC> (raw)

commit:     e275da84de1589253da5ff6a7c272cf1c82f8567
Author:     William Hubbs <w.d.hubbs <AT> gmail <DOT> com>
AuthorDate: Thu Feb 22 00:14:56 2018 +0000
Commit:     William Hubbs <williamh <AT> gentoo <DOT> org>
CommitDate: Thu Feb 22 00:14:56 2018 +0000
URL:        https://gitweb.gentoo.org/proj/openrc.git/commit/?id=e275da84

supervise-daemon: remove references to PATH_MAX

 src/rc/supervise-daemon.c | 102 +++++++++++++++++++++++++---------------------
 1 file changed, 56 insertions(+), 46 deletions(-)

diff --git a/src/rc/supervise-daemon.c b/src/rc/supervise-daemon.c
index 06d0bdb3..a858cf46 100644
--- a/src/rc/supervise-daemon.c
+++ b/src/rc/supervise-daemon.c
@@ -224,6 +224,22 @@ static char * expand_home(const char *home, const char *path)
 	return nh;
 }
 
+static char *make_cmdline(char **argv)
+{
+	char **c;
+	char *cmdline = NULL;
+	size_t len = 0;
+
+	for (c = argv; c && *c; c++)
+		len += (strlen(*c) + 1);
+	cmdline = xmalloc(len);
+	for (c = argv; c && *c; c++) {
+		strcat(cmdline, *c);
+		strcat(cmdline, " ");
+	}
+	return cmdline;
+}
+
 static void child_process(char *exec, char **argv)
 {
 	RC_STRINGLIST *env_list;
@@ -234,8 +250,7 @@ static void child_process(char *exec, char **argv)
 	size_t len;
 	char *newpath;
 	char *np;
-	char **c;
-	char cmdline[PATH_MAX];
+	char *cmdline = NULL;
 	time_t start_time;
 	char start_count_string[20];
 	char start_time_string[20];
@@ -395,15 +410,9 @@ static void child_process(char *exec, char **argv)
 
 	for (i = getdtablesize() - 1; i >= 3; --i)
 		fcntl(i, F_SETFD, FD_CLOEXEC);
-
-	*cmdline = '\0';
-	c = argv;
-	while (c && *c) {
-		strcat(cmdline, *c);
-		strcat(cmdline, " ");
-		c++;
-	}
+	cmdline = make_cmdline(argv);
 	syslog(LOG_INFO, "Child command line: %s", cmdline);
+	free(cmdline);
 	execvp(exec, argv);
 
 #ifdef HAVE_PAM
@@ -551,8 +560,8 @@ int main(int argc, char **argv)
 	char *token;
 	int i;
 	int n;
-	char exec_file[PATH_MAX];
-	char name[PATH_MAX];
+	char *exec_file = NULL;
+	char *varbuf = NULL;
 	struct timespec ts;
 	struct passwd *pw;
 	struct group *gr;
@@ -561,7 +570,7 @@ int main(int argc, char **argv)
 	int child_argc = 0;
 	char **child_argv = NULL;
 	char *str = NULL;
-	char cmdline[PATH_MAX];
+	char *cmdline = NULL;
 
 	applet = basename_c(argv[0]);
 	atexit(cleanup);
@@ -593,13 +602,7 @@ int main(int argc, char **argv)
 		}
 	}
 
-	*cmdline = '\0';
-	c = argv;
-	while (c && *c) {
-		strcat(cmdline, *c);
-		strcat(cmdline, " ");
-		c++;
-	}
+	cmdline = make_cmdline(argv);
 	if (svcname) {
 		argc--;
 		argv++;
@@ -761,9 +764,11 @@ int main(int argc, char **argv)
 		child_argv = xmalloc((child_argc + 1) * sizeof(char *));
 		memset(child_argv, 0, (child_argc + 1) * sizeof(char *));
 		for (x = 0; x < child_argc; x++) {
-			sprintf(name, "argv_%d", x);
-			str = rc_service_value_get(svcname, name);
+			xasprintf(&varbuf, "argv_%d", x);
+			str = rc_service_value_get(svcname, varbuf);
 			child_argv[x] = str;
+			free(varbuf);
+			varbuf = NULL;
 		}
 		free(str);
 		str = rc_service_value_get(svcname, "child_pid");
@@ -792,32 +797,31 @@ int main(int argc, char **argv)
 			if (*exec == '/' || *exec == '.') {
 				/* Full or relative path */
 				if (ch_root)
-					snprintf(exec_file, sizeof(exec_file),
-				    	"%s/%s", ch_root, exec);
+					xasprintf(&exec_file, "%s/%s", ch_root, exec);
 				else
-					snprintf(exec_file, sizeof(exec_file),
-				    "%s", exec);
+					xasprintf(&exec_file, "%s", exec);
 			} else {
 				/* Something in $PATH */
 				p = tmp = xstrdup(getenv("PATH"));
-				*exec_file = '\0';
+				exec_file = NULL;
 				while ((token = strsep(&p, ":"))) {
 					if (ch_root)
-						snprintf(exec_file, sizeof(exec_file),
-					    	"%s/%s/%s",
-					    	ch_root, token, exec);
+						xasprintf(&exec_file, "%s/%s/%s", ch_root, token, exec);
 					else
-						snprintf(exec_file, sizeof(exec_file),
-					    	"%s/%s", token, exec);
-					if (exists(exec_file))
+						xasprintf(&exec_file, "%s/%s", token, exec);
+					if (exec_file && exists(exec_file))
 						break;
-					*exec_file = '\0';
+					free(exec_file);
+					exec_file = NULL;
 				}
 				free(tmp);
 			}
-			if ( !exists(exec_file))
-				eerrorx("%s: %s does not exist", applet,
+			if (!exists(exec_file)) {
+				eerror("%s: %s does not exist", applet,
 				    *exec_file ? exec_file : exec);
+				free(exec_file);
+				exit(EXIT_FAILURE);
+			}
 		} else
 			eerrorx("%s: nothing to start", applet);
 
@@ -840,6 +844,8 @@ int main(int argc, char **argv)
 
 		einfov("Detaching to start `%s'", exec);
 		syslog(LOG_INFO, "Supervisor command line: %s", cmdline);
+		free(cmdline);
+		cmdline = NULL;
 
 		/* Remove existing pidfile */
 		if (pidfile)
@@ -852,12 +858,13 @@ int main(int argc, char **argv)
 		fclose(fp);
 
 		rc_service_value_set(svcname, "pidfile", pidfile);
-		sprintf(name, "%i", respawn_delay);
-		rc_service_value_set(svcname, "respawn_delay", name);
-		sprintf(name, "%i", respawn_max);
-		rc_service_value_set(svcname, "respawn_max", name);
-		sprintf(name, "%i", respawn_period);
-		rc_service_value_set(svcname, "respawn_period", name);
+		varbuf = NULL;
+		xasprintf(&varbuf, "%i", respawn_delay);
+		rc_service_value_set(svcname, "respawn_delay", varbuf);
+		xasprintf(&varbuf, "%i", respawn_max);
+		rc_service_value_set(svcname, "respawn_max", varbuf);
+		xasprintf(&varbuf, "%i", respawn_period);
+		rc_service_value_set(svcname, "respawn_period", varbuf);
 		child_pid = fork();
 		if (child_pid == -1)
 			eerrorx("%s: fork: %s", applet, strerror(errno));
@@ -875,13 +882,16 @@ int main(int argc, char **argv)
 			c = argv;
 			x = 0;
 			while (c && *c) {
-				snprintf(name, sizeof(name), "argv_%-d",x);
-				rc_service_value_set(svcname, name, *c);
+				varbuf = NULL;
+				xasprintf(&varbuf, "argv_%-d",x);
+				rc_service_value_set(svcname, varbuf, *c);
+				free(varbuf);
+				varbuf = NULL;
 				x++;
 				c++;
 			}
-			sprintf(name, "%d", x);
-				rc_service_value_set(svcname, "argc", name);
+			xasprintf(&varbuf, "%d", x);
+				rc_service_value_set(svcname, "argc", varbuf);
 			rc_service_value_set(svcname, "exec", exec);
 			supervisor(exec, argv);
 		} else


             reply	other threads:[~2018-02-22  0:17 UTC|newest]

Thread overview: 257+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-02-22  0:17 William Hubbs [this message]
  -- strict thread matches above, loose matches on Subject: below --
2018-11-06  3:38 [gentoo-commits] proj/openrc:master commit in: src/rc/ William Hubbs
2018-11-06  3:38 William Hubbs
2018-11-02 23:24 William Hubbs
2018-11-02 23:24 William Hubbs
2018-10-15 16:52 William Hubbs
2018-10-15 16:52 William Hubbs
2018-10-09 16:35 William Hubbs
2018-10-06 18:03 William Hubbs
2018-10-06 18:03 William Hubbs
2018-06-29 20:32 William Hubbs
2018-06-28 18:03 William Hubbs
2018-06-20 14:38 William Hubbs
2018-06-19 23:00 William Hubbs
2018-06-19 23:00 William Hubbs
2018-06-19 22:07 William Hubbs
2018-06-19 21:34 William Hubbs
2018-06-19 21:34 William Hubbs
2018-06-19 21:34 William Hubbs
2018-06-19 21:34 William Hubbs
2018-06-14 19:56 William Hubbs
2018-06-13 21:28 William Hubbs
2018-05-22 22:12 William Hubbs
2018-05-22 22:12 William Hubbs
2018-05-22 22:12 William Hubbs
2018-05-15 22:11 William Hubbs
2018-05-15 22:11 William Hubbs
2018-05-15  0:11 William Hubbs
2018-05-15  0:11 William Hubbs
2018-05-11 18:19 William Hubbs
2018-05-09 22:35 William Hubbs
2018-05-07 23:21 William Hubbs
2018-05-07 23:21 William Hubbs
2018-03-15  1:43 William Hubbs
2018-03-12  2:43 William Hubbs
2018-02-28 18:45 William Hubbs
2018-02-26 20:34 William Hubbs
2018-02-26 19:15 William Hubbs
2018-02-26 19:15 William Hubbs
2018-02-26 18:23 William Hubbs
2018-02-24 23:03 William Hubbs
2018-02-24 23:03 William Hubbs
2018-02-22 22:17 William Hubbs
2018-02-22 18:55 William Hubbs
2018-02-22  0:17 William Hubbs
2018-02-22  0:17 William Hubbs
2018-02-21 19:50 William Hubbs
2018-02-20 22:36 William Hubbs
2018-02-20 22:36 William Hubbs
2018-02-20 22:36 William Hubbs
2018-02-16 20:07 William Hubbs
2018-02-16 20:07 William Hubbs
2018-02-16 20:07 William Hubbs
2018-02-14 23:37 William Hubbs
2018-02-14 23:37 William Hubbs
2018-01-24 23:44 William Hubbs
2018-01-23 23:08 William Hubbs
2018-01-16 19:36 William Hubbs
2018-01-16 19:14 William Hubbs
2018-01-09 23:35 William Hubbs
2017-11-29 21:12 William Hubbs
2017-11-28 23:17 William Hubbs
2017-11-28 23:17 William Hubbs
2017-11-07 21:33 William Hubbs
2017-11-07 21:33 William Hubbs
2017-11-07 21:33 William Hubbs
2017-11-07 21:33 William Hubbs
2017-10-26 22:01 William Hubbs
2017-10-26 18:58 William Hubbs
2017-10-26 18:58 William Hubbs
2017-10-26 18:58 William Hubbs
2017-10-25 20:10 William Hubbs
2017-10-18 23:09 William Hubbs
2017-10-05 23:31 William Hubbs
2017-09-22 22:25 William Hubbs
2017-09-18 18:31 William Hubbs
2017-09-18 18:07 William Hubbs
2017-09-18 18:07 William Hubbs
2017-09-18 18:07 William Hubbs
2017-09-18 18:07 William Hubbs
2017-09-18 18:07 William Hubbs
2017-09-18 18:07 William Hubbs
2017-09-15 18:31 William Hubbs
2017-09-06 22:33 William Hubbs
2017-08-25 16:48 William Hubbs
2017-08-24 16:45 William Hubbs
2017-07-24 23:27 William Hubbs
2017-06-12 15:41 William Hubbs
2017-06-12 15:41 William Hubbs
2017-06-07 16:34 William Hubbs
2017-05-30 21:25 William Hubbs
2017-05-30 21:25 William Hubbs
2017-05-22 16:30 William Hubbs
2017-05-19 23:30 William Hubbs
2017-05-16  0:00 William Hubbs
2017-05-16  0:00 William Hubbs
2017-05-12  2:42 William Hubbs
2017-05-12  2:42 William Hubbs
2017-05-12  2:42 William Hubbs
2017-05-11 16:38 William Hubbs
2017-04-29 22:56 William Hubbs
2017-04-29 22:56 William Hubbs
2017-04-29 22:56 William Hubbs
2017-04-29 14:44 William Hubbs
2017-04-17 17:24 William Hubbs
2017-04-13 17:56 William Hubbs
2017-04-07 12:43 William Hubbs
2017-04-03 15:45 William Hubbs
2017-01-25 23:58 William Hubbs
2017-01-05  0:24 William Hubbs
2017-01-04 23:23 William Hubbs
2016-11-30 22:49 William Hubbs
2016-11-03 16:13 William Hubbs
2016-10-24 17:48 William Hubbs
2016-10-24 17:43 William Hubbs
2016-10-11 15:31 William Hubbs
2016-09-30 22:10 William Hubbs
2016-09-19 17:10 William Hubbs
2016-09-16 13:58 William Hubbs
2016-09-16 13:58 William Hubbs
2016-08-25 16:17 William Hubbs
2016-07-25 18:54 William Hubbs
2016-07-16 20:17 William Hubbs
2016-07-14 17:25 William Hubbs
2016-06-10 22:45 William Hubbs
2016-05-24 16:43 William Hubbs
2016-05-24 16:43 William Hubbs
2016-05-13 18:00 William Hubbs
2016-05-13 17:12 William Hubbs
2016-05-04 23:24 William Hubbs
2016-04-11 16:18 William Hubbs
2016-02-12 18:58 William Hubbs
2016-01-22 18:53 William Hubbs
2016-01-20 17:29 William Hubbs
2016-01-19  6:12 William Hubbs
2016-01-19  6:12 William Hubbs
2016-01-19  6:12 William Hubbs
2016-01-14 17:33 William Hubbs
2016-01-14 17:33 William Hubbs
2016-01-14 17:33 William Hubbs
2016-01-14 17:33 William Hubbs
2016-01-12 20:12 William Hubbs
2015-12-06  0:14 William Hubbs
2015-12-02 21:46 William Hubbs
2015-10-13 13:36 William Hubbs
2015-10-05 15:27 William Hubbs
2015-10-04 20:37 William Hubbs
2015-09-18 17:45 William Hubbs
2015-08-02 14:12 William Hubbs
2015-07-23 17:48 William Hubbs
2015-04-24 18:13 William Hubbs
2015-03-25 13:36 William Hubbs
2015-03-25  6:10 William Hubbs
2015-03-25  4:38 William Hubbs
2015-03-24 20:53 William Hubbs
2015-03-24 20:40 William Hubbs
2015-02-19 21:16 William Hubbs
2015-02-15 22:15 William Hubbs
2015-02-15 22:10 William Hubbs
2015-01-22 18:54 William Hubbs
2014-09-20 21:52 William Hubbs
2014-08-22 19:10 William Hubbs
2014-08-11 18:18 ` William Hubbs
2014-08-22 19:10 William Hubbs
2014-07-25 16:06 ` William Hubbs
2014-07-28 15:51 William Hubbs
2014-08-22 19:10 ` William Hubbs
2014-07-19 18:06 William Hubbs
2014-07-18  4:47 William Hubbs
2014-07-16 23:01 William Hubbs
2014-07-16 23:01 William Hubbs
2014-07-16 19:48 William Hubbs
2014-07-16 19:17 William Hubbs
2014-07-16 18:14 William Hubbs
2014-07-13 19:16 William Hubbs
2014-07-11 20:24 William Hubbs
2014-07-11 20:19 William Hubbs
2014-01-18 20:02 William Hubbs
2013-12-13 18:20 William Hubbs
2013-12-13 18:05 William Hubbs
2013-12-01 17:25 William Hubbs
2013-10-12 14:50 William Hubbs
2013-10-06 17:36 William Hubbs
2013-10-04 16:23 William Hubbs
2013-09-24  6:52 William Hubbs
2013-09-23 22:59 William Hubbs
2013-09-23 18:38 William Hubbs
2013-09-23 18:38 William Hubbs
2013-09-04  0:46 William Hubbs
2013-08-26 22:26 William Hubbs
2013-08-26 20:59 William Hubbs
2013-07-23 23:01 William Hubbs
2013-07-16 18:56 William Hubbs
2013-05-01 23:24 William Hubbs
2013-02-25 20:50 William Hubbs
2013-02-25 20:50 William Hubbs
2013-02-25 20:50 William Hubbs
2013-02-25 20:50 William Hubbs
2013-02-15 19:35 William Hubbs
2012-10-27 18:12 William Hubbs
2012-10-24 17:38 William Hubbs
2012-10-17 23:48 William Hubbs
2012-10-09 23:56 William Hubbs
2012-10-09 21:50 William Hubbs
2012-09-14 21:00 Christian Ruppert
2012-09-12 19:36 Christian Ruppert
2012-09-12 19:00 Christian Ruppert
2012-08-18 22:26 Christian Ruppert
2012-08-18 21:26 Christian Ruppert
2012-05-23 23:31 Mike Frysinger
2012-05-16 22:16 Mike Frysinger
2012-05-06  5:16 Mike Frysinger
2012-04-24  3:32 Christian Ruppert
2012-02-24  2:38 William Hubbs
2012-02-21  2:09 William Hubbs
2012-02-21  1:08 Jory Pratt
2012-02-12  1:23 Christian Ruppert
2012-02-10 23:25 Christian Ruppert
2012-01-31 22:59 William Hubbs
2012-01-28 18:05 Christian Ruppert
2012-01-28 15:45 Christian Ruppert
2012-01-24 18:41 Christian Ruppert
2012-01-23 10:27 Robin H. Johnson
2012-01-23 10:27 Robin H. Johnson
2012-01-23  5:27 Robin H. Johnson
2012-01-22 20:46 William Hubbs
2011-12-31  2:36 Christian Ruppert
2011-12-30 15:03 Christian Ruppert
2011-12-30 15:03 Christian Ruppert
2011-12-29 12:59 Christian Ruppert
2011-12-29  2:18 Christian Ruppert
2011-12-29  2:10 Christian Ruppert
2011-12-29  1:50 Christian Ruppert
2011-12-11 20:43 William Hubbs
2011-11-19  8:11 Mike Frysinger
2011-11-19  8:11 Mike Frysinger
2011-11-19  8:11 Mike Frysinger
2011-11-17 22:10 William Hubbs
2011-11-15 21:26 William Hubbs
2011-11-09  5:10 Mike Frysinger
2011-09-08 17:22 Christian Ruppert
2011-09-08 17:22 Christian Ruppert
2011-09-02 16:47 William Hubbs
2011-09-01 22:14 William Hubbs
2011-07-26 21:59 William Hubbs
2011-07-20 19:40 William Hubbs
2011-07-05 22:52 Christian Ruppert
2011-07-04 22:54 Christian Ruppert
2011-06-30 18:21 Christian Ruppert
2011-06-27 21:21 Christian Ruppert
2011-06-05 14:52 Christian Ruppert
2011-05-28 16:12 Mike Frysinger
2011-05-28 15:42 Mike Frysinger
2011-05-23 19:25 William Hubbs
2011-02-16 15:02 William Hubbs
2011-02-15  0:50 William Hubbs
2011-02-07  8:30 William Hubbs

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1519258496.e275da84de1589253da5ff6a7c272cf1c82f8567.williamh@OpenRC \
    --to=williamh@gentoo.org \
    --cc=gentoo-commits@lists.gentoo.org \
    --cc=gentoo-dev@lists.gentoo.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox