From 3a985a9f5f2ceddc35d915e0d83064e9da2962b0 Mon Sep 17 00:00:00 2001 From: Kirby Kuehl Date: Sat, 19 Jun 2010 18:54:15 -0500 Subject: [PATCH] fix smb leak --- src/app-layer-smb.c | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/src/app-layer-smb.c b/src/app-layer-smb.c index 4bb2ebdf0b..f593c3fef5 100644 --- a/src/app-layer-smb.c +++ b/src/app-layer-smb.c @@ -1205,6 +1205,25 @@ static void *SMBStateAlloc(void) { */ static void SMBStateFree(void *s) { SCEnter(); + SMBState *sstate = (SMBState *) s; + + DCERPCUuidEntry *item; + + while ((item = TAILQ_FIRST(&sstate->dcerpc.dcerpcbindbindack.uuid_list))) { + //printUUID("Free", item); + TAILQ_REMOVE(&sstate->dcerpc.dcerpcbindbindack.uuid_list, item, next); + free(item); + } + if (sstate->dcerpc.dcerpcrequest.stub_data_buffer != NULL) { + free(sstate->dcerpc.dcerpcrequest.stub_data_buffer); + sstate->dcerpc.dcerpcrequest.stub_data_buffer = NULL; + sstate->dcerpc.dcerpcrequest.stub_data_buffer_len = 0; + } + if (sstate->dcerpc.dcerpcresponse.stub_data_buffer != NULL) { + free(sstate->dcerpc.dcerpcresponse.stub_data_buffer); + sstate->dcerpc.dcerpcresponse.stub_data_buffer = NULL; + sstate->dcerpc.dcerpcresponse.stub_data_buffer_len = 0; + } if (s) { SCFree(s);