Index: sshd.c =================================================================== --- sshd.c.orig +++ sshd.c @@ -306,6 +306,7 @@ sighup_handler(int sig) static void sighup_restart(void) { + int i; logit("Received SIGHUP; restarting."); close_listen_socks(); close_startup_pipes(); @@ -1319,7 +1320,11 @@ main(int ac, char **av) #ifndef HAVE_SETPROCTITLE /* Prepare for later setproctitle emulation */ compat_init_setproctitle(ac, av); - av = saved_argv; + + av = xmalloc(sizeof(*saved_argv) * (saved_argc + 1)); + for (i = 0; i < saved_argc; i++) + av[i] = xstrdup(saved_argv[i]); + av[i] = NULL; #endif if (geteuid() == 0 && setgroups(0, NULL) == -1)