]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
lib-smtp: server: data command: Hold a reference to the connection while handling...
authorStephan Bosch <stephan.bosch@dovecot.fi>
Thu, 21 Jun 2018 20:55:50 +0000 (22:55 +0200)
committerAki Tuomi <aki.tuomi@dovecot.fi>
Tue, 7 Aug 2018 11:10:08 +0000 (14:10 +0300)
Makes sure connection object remains available while command is handled. Fixes a
valgrind error reported for accessing the connection object after it is freed,
which happens for the destroy debug message of the command (even when debugging
is not enabled).

src/lib-smtp/smtp-server-cmd-data.c

index 9916a8fdcd6b77acb265d1f6800201aa294dd8a9..067d7ec96e4f983e534e5caefa09fc656f42887c 100644 (file)
@@ -279,18 +279,21 @@ static int cmd_data_do_handle_input(struct smtp_server_cmd_ctx *cmd)
 
 static int cmd_data_handle_input(struct smtp_server_cmd_ctx *cmd)
 {
+       struct smtp_server_connection *conn = cmd->conn;
        struct smtp_server_command *command = cmd->cmd;
        int ret;
 
        if (!smtp_server_cmd_data_check_size(cmd))
                return -1;
 
+       smtp_server_connection_ref(conn);
        smtp_server_command_ref(command);
 
        /* continue reading from client */
        ret = cmd_data_do_handle_input(cmd);
        
        smtp_server_command_unref(&command);
+       smtp_server_connection_unref(&conn);
 
        return ret;
 }