File ntp-check-argv.patch of Package ntp
--- libntp/work_fork.c.orig
+++ libntp/work_fork.c
@@ -543,17 +543,21 @@ fork_blocking_child(
/*
* Change the process name of the child to avoid confusion
- * about ntpd trunning twice.
+ * about ntpd running twice.
*/
if (saved_argc != 0) {
int argcc;
int argvlen = 0;
- /* Clear argv */
+ char *end_of_argv = saved_argv[0];
+ /* Check that argv is contiguous, measure and clear it */
for (argcc = 0; argcc < saved_argc; argcc++) {
- int l = strlen(saved_argv[argcc]);
- argvlen += l + 1;
- memset(saved_argv[argcc], 0, l);
+ if (end_of_argv == saved_argv[argcc]) {
+ end_of_argv += strlen(saved_argv[argcc]) + 1;
+ }
}
+ argvlen = end_of_argv - saved_argv[0];
+ memset(saved_argv[0], 0, argvlen);
+
strlcpy(saved_argv[0], "ntpd: asynchronous dns resolver", argvlen);
}