From de983fb7c986fac1760847b2bbb152d09d0a8307 Mon Sep 17 00:00:00 2001 From: Jeff Lucovsky Date: Sat, 11 May 2019 10:59:16 -0700 Subject: [PATCH] app-layer-ftp: Potential memory leak fixed Ensure that when handling failures during STOR command processing, that all memory is freed on the error path. --- src/app-layer-ftp.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/app-layer-ftp.c b/src/app-layer-ftp.c index a26258ed63..6861e20e8a 100644 --- a/src/app-layer-ftp.c +++ b/src/app-layer-ftp.c @@ -373,7 +373,7 @@ static void FtpTransferCmdFree(void *data) if (cmd == NULL) return; if (cmd->file_name) { - SCFree(cmd->file_name); + FTPFree(cmd->file_name, cmd->file_len); } FTPFree(cmd, sizeof(struct FtpTransferCmd)); } @@ -515,7 +515,7 @@ static int FTPParseRequest(Flow *f, void *ftp_state, /* Min size has been checked in FTPParseRequestCommand */ data->file_name = FTPCalloc(state->current_line_len - 4, sizeof(char)); if (data->file_name == NULL) { - FTPFree(data, sizeof(struct FtpTransferCmd)); + FtpTransferCmdFree(data); SCReturnInt(-1); } data->file_name[state->current_line_len - 5] = 0; @@ -527,7 +527,7 @@ static int FTPParseRequest(Flow *f, void *ftp_state, state->active ? STREAM_TOSERVER : direction, 0, state->dyn_port, ALPROTO_FTPDATA, data); if (ret == -1) { - FTPFree(data, sizeof(struct FtpTransferCmd)); + FtpTransferCmdFree(data); SCLogDebug("No expectation created."); SCReturnInt(-1); } else { -- 2.47.2