From 1cccb7f8d5a3b2e927200a8ce7c248c70ef3793f Mon Sep 17 00:00:00 2001 From: Aki Tuomi Date: Wed, 23 Mar 2016 09:01:31 +0200 Subject: [PATCH] doveadm: Move getenv to correct place All getenv()s must be done after master_service_init() or the pointer will be corrupted with Linux and other OSes without setproctitle(). --- src/doveadm/doveadm.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/doveadm/doveadm.c b/src/doveadm/doveadm.c index 8eb04d7172..2f02920e75 100644 --- a/src/doveadm/doveadm.c +++ b/src/doveadm/doveadm.c @@ -291,7 +291,6 @@ int main(int argc, char *argv[]) memset(&cctx,0,sizeof(cctx)); cctx.cli = TRUE; - cctx.username = getenv("USER"); i_set_failure_exit_callback(failure_exit_callback); doveadm_dsync_main(&argc, &argv); @@ -369,6 +368,10 @@ int main(int argc, char *argv[]) i_set_debug_file("/dev/null"); } + /* this has to be done here because proctitle hack can break + the env pointer */ + cctx.username = getenv("USER"); + if (!doveadm_cmd_try_run_ver2(cmd_name, argc, (const char**)argv, &cctx) && !doveadm_try_run(cmd_name, argc, (const char **)argv) && !doveadm_mail_try_run(cmd_name, argc, argv)) {