extern struct service_list *services;
extern bool startup_finished;
-void process_exec(const char *cmd, const char *extra_args[])
- ATTR_NORETURN ATTR_NULL(2);
+void process_exec(const char *cmd) ATTR_NORETURN;
int get_uidgid(const char *user, uid_t *uid_r, gid_t *gid_r,
const char **error_r);
NULL
};
-void process_exec(const char *cmd, const char *extra_args[])
+void process_exec(const char *cmd)
{
const char *executable, *p, **argv;
argv = t_strsplit(cmd, " ");
executable = argv[0];
- if (extra_args != NULL) {
- unsigned int count1, count2;
- const char **new_argv;
-
- /* @UNSAFE */
- count1 = str_array_length(argv);
- count2 = str_array_length(extra_args);
- new_argv = t_new(const char *, count1 + count2 + 1);
- memcpy(new_argv, argv, sizeof(const char *) * count1);
- memcpy(new_argv + count1, extra_args,
- sizeof(const char *) * count2);
- argv = new_argv;
- }
-
/* hide the path, it's ugly */
p = strrchr(argv[0], '/');
if (p != NULL) argv[0] = p+1;
service_reopen_inet_listeners(service);
service_dup_fds(service);
drop_privileges(service);
- process_exec(service->executable, NULL);
+ process_exec(service->executable);
}
i_assert(hash_table_lookup(service_pids, POINTER_CAST(pid)) == NULL);