]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
lmtp: Don't permanently allocate from data stack during init.
authorTimo Sirainen <timo.sirainen@dovecot.fi>
Mon, 13 Jun 2016 06:56:20 +0000 (09:56 +0300)
committerGitLab <gitlab@git.dovecot.net>
Mon, 13 Jun 2016 08:23:12 +0000 (11:23 +0300)
src/lmtp/main.c
src/lmtp/main.h

index b6d2a5d082f8b678e7955f428fc3c7dd25fe45ac..a57c5058f8b79d4f9e65b5aad94ffc3f89c457c1 100644 (file)
@@ -25,7 +25,7 @@
 #define IS_STANDALONE() \
         (getenv(MASTER_IS_PARENT_ENV) == NULL)
 
-const char *dns_client_socket_path, *base_dir;
+char *dns_client_socket_path, *base_dir;
 struct mail_storage_service_ctx *storage_service;
 struct anvil_client *anvil;
 
@@ -64,7 +64,7 @@ static void main_init(void)
                memset(&conn, 0, sizeof(conn));
                (void)client_create(STDIN_FILENO, STDOUT_FILENO, &conn);
        }
-       dns_client_socket_path = t_abspath(DNS_CLIENT_SOCKET_PATH);
+       dns_client_socket_path = i_strdup(t_abspath(DNS_CLIENT_SOCKET_PATH));
 }
 
 static void main_deinit(void)
@@ -72,6 +72,8 @@ static void main_deinit(void)
        clients_destroy();
        if (anvil != NULL)
                anvil_client_deinit(&anvil);
+       i_free(dns_client_socket_path);
+       i_free(base_dir);
 }
 
 int main(int argc, char *argv[])
@@ -90,6 +92,7 @@ int main(int argc, char *argv[])
                MAIL_STORAGE_SERVICE_FLAG_NO_LOG_INIT |
                MAIL_STORAGE_SERVICE_FLAG_NO_IDLE_TIMEOUT |
                MAIL_STORAGE_SERVICE_FLAG_AUTOEXPUNGE;
+       const char *tmp_base_dir;
        int c;
 
        if (IS_STANDALONE()) {
@@ -112,8 +115,10 @@ int main(int argc, char *argv[])
                }
        }
 
-       if (t_get_current_dir(&base_dir) < 0)
+       if (t_get_current_dir(&tmp_base_dir) < 0)
                i_fatal("getcwd() failed: %m");
+       base_dir = i_strdup(tmp_base_dir);
+
        drop_privileges();
        master_service_init_log(master_service,
                                t_strdup_printf("lmtp(%s): ", my_pid));
index c6315fb36dd31e52b873ead33de80193e20e68e9..d517b7b98b69d2de9c76a58a1e40be8c961f128f 100644 (file)
@@ -1,7 +1,7 @@
 #ifndef MAIN_H
 #define MAIN_H
 
-extern const char *dns_client_socket_path, *base_dir;
+extern char *dns_client_socket_path, *base_dir;
 extern struct mail_storage_service_ctx *storage_service;
 extern struct anvil_client *anvil;