]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
doveadm: Move getenv to correct place
authorAki Tuomi <aki.tuomi@dovecot.fi>
Wed, 23 Mar 2016 07:01:31 +0000 (09:01 +0200)
committerTimo Sirainen <timo.sirainen@dovecot.fi>
Tue, 29 Mar 2016 08:21:11 +0000 (11:21 +0300)
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

index 8eb04d7172276776c02e59999b74f4c7bdc7885f..2f02920e755b7225f8034cb56091cd3372245932 100644 (file)
@@ -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)) {