From 4bddb5549ea55dcb79a4f496153fecfd87e83b56 Mon Sep 17 00:00:00 2001
From: Kirby Kuehl <kkuehl@gmail.com>
Date: Sat, 19 Jun 2010 18:54:15 -0500
Subject: [PATCH 4/4] fix smb leak

---
 src/app-layer-smb.c |   19 +++++++++++++++++++
 1 files changed, 19 insertions(+), 0 deletions(-)

diff --git a/src/app-layer-smb.c b/src/app-layer-smb.c
index 4bb2ebd..8ce4257 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);
-- 
1.7.0.1

