diff --git a/src/Frag.cc b/src/Frag.cc index 199af78ca9..b1efb41594 100644 --- a/src/Frag.cc +++ b/src/Frag.cc @@ -290,8 +290,11 @@ void FragReassembler::BlockInserted(DataBlock* /* start_block */) } else + { reporter->InternalWarning("bad IP version in fragment reassembly: %d", version); + delete [] pkt_start; + } } void FragReassembler::Expire(double t) diff --git a/src/analyzer/protocol/login/NVT.cc b/src/analyzer/protocol/login/NVT.cc index 7cb99b1950..462cd42177 100644 --- a/src/analyzer/protocol/login/NVT.cc +++ b/src/analyzer/protocol/login/NVT.cc @@ -215,6 +215,7 @@ void TelnetAuthenticateOption::RecvSubOption(u_char* data, int len) { reporter->AnalyzerError(endp, "option peer missing in TelnetAuthenticateOption::RecvSubOption"); + return; } if ( ! peer->DidRequestAuthentication() ) diff --git a/src/analyzer/protocol/pop3/POP3.cc b/src/analyzer/protocol/pop3/POP3.cc index 7768e2599f..388a055ee2 100644 --- a/src/analyzer/protocol/pop3/POP3.cc +++ b/src/analyzer/protocol/pop3/POP3.cc @@ -211,6 +211,7 @@ void POP3_Analyzer::ProcessRequest(int length, const char* line) default: reporter->AnalyzerError(this, "unexpected POP3 authorization state"); + delete decoded; return; } diff --git a/src/analyzer/protocol/smb/SMB.cc b/src/analyzer/protocol/smb/SMB.cc index 8a5665515b..9d388a0886 100644 --- a/src/analyzer/protocol/smb/SMB.cc +++ b/src/analyzer/protocol/smb/SMB.cc @@ -743,23 +743,13 @@ int SMB_Session::ParseTransaction(int is_orig, int cmd, return 0; } - int ret; - if ( is_orig ) - { - if ( cmd == SMB_COM_TRANSACTION || cmd == SMB_COM_TRANSACTION2 ) - ret = ParseTransactionRequest(cmd, hdr, body); + if ( ! is_orig ) + return ParseTransactionResponse(cmd, hdr, body); - else if ( cmd == SMB_COM_TRANSACTION_SECONDARY || - cmd == SMB_COM_TRANSACTION2_SECONDARY ) - ret = ParseTransactionSecondaryRequest(cmd, hdr, body); + if ( cmd == SMB_COM_TRANSACTION || cmd == SMB_COM_TRANSACTION2 ) + return ParseTransactionRequest(cmd, hdr, body); - else - ret = 0; - } - else - ret = ParseTransactionResponse(cmd, hdr, body); - - return ret; + return ParseTransactionSecondaryRequest(cmd, hdr, body); } int SMB_Session::ParseTransactionRequest(int cmd,