From a334a87109d5e57485eba60020ac3af801f48822 Mon Sep 17 00:00:00 2001 From: Kirby Kuehl Date: Thu, 11 Feb 2010 14:27:21 -0600 Subject: [PATCH] smb safety checks --- src/app-layer-smb.c | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/src/app-layer-smb.c b/src/app-layer-smb.c index f2730b6e63..2a0455c46d 100644 --- a/src/app-layer-smb.c +++ b/src/app-layer-smb.c @@ -953,8 +953,8 @@ static int SMBParse(Flow *f, void *smb_state, AppLayerParserState *pstate, sstate->nbss.length, parsed, input_len); } else if (input_len) { SCLogDebug("Error parsing NBSS Header\n"); - parsed += input_len; - input_len = 0; + sstate->bytesprocessed = 0; + SCReturnInt(-1); } } @@ -967,7 +967,7 @@ static int SMBParse(Flow *f, void *smb_state, AppLayerParserState *pstate, if (retval == -1) { SCLogDebug("Error parsing SMB Header\n"); sstate->bytesprocessed = 0; - SCReturnInt(1); + SCReturnInt(-1); } else { parsed += retval; input_len -= retval; @@ -988,8 +988,8 @@ static int SMBParse(Flow *f, void *smb_state, AppLayerParserState *pstate, input_len -= retval; } else if (input_len) { SCLogDebug("Error parsing SMB Word Count\n"); - parsed += input_len; - input_len = 0; + sstate->bytesprocessed = 0; + SCReturnInt(-1); } } SCLogDebug("SMB Header (%u/%u) Command 0x%02x WordCount %u parsed %ld input_len %u\n", @@ -1007,8 +1007,8 @@ static int SMBParse(Flow *f, void *smb_state, AppLayerParserState *pstate, input_len -= retval; } else if (input_len) { SCLogDebug("Error parsing SMB Word Count Data\n"); - parsed += input_len; - input_len = 0; + sstate->bytesprocessed = 0; + SCReturnInt(-1); } } @@ -1023,8 +1023,8 @@ static int SMBParse(Flow *f, void *smb_state, AppLayerParserState *pstate, input_len -= retval; } else if (input_len) { SCLogDebug("Error parsing SMB Byte Count\n"); - parsed += input_len; - input_len = 0; + sstate->bytesprocessed = 0; + SCReturnInt(-1); } } @@ -1040,8 +1040,8 @@ static int SMBParse(Flow *f, void *smb_state, AppLayerParserState *pstate, input_len -= retval; } else if (input_len) { SCLogDebug("Error parsing SMB Byte Count Data\n"); - parsed += input_len; - input_len = 0; + sstate->bytesprocessed = 0; + SCReturnInt(-1); } }