]> git.ipfire.org Git - thirdparty/suricata.git/commitdiff
luajit: fix crash at shutdown / rule reload if lua script didn't properly init.
authorVictor Julien <victor@inliniac.net>
Thu, 20 Sep 2012 20:09:30 +0000 (22:09 +0200)
committerVictor Julien <victor@inliniac.net>
Thu, 20 Sep 2012 20:09:30 +0000 (22:09 +0200)
src/detect-engine.c
src/detect-luajit.c

index 8adf3f964f694a69f97536e746a9e1fcb6647ea0..1db62a5b4382c6a912483b79180e057cd3fca4cb 100644 (file)
@@ -724,7 +724,9 @@ static void DetectEngineThreadCtxDeinitKeywords(DetectEngineCtx *de_ctx, DetectE
     if (de_ctx->keyword_id > 0) {
         DetectEngineThreadKeywordCtxItem *item = de_ctx->keyword_list;
         while (item) {
-            item->FreeFunc(det_ctx->keyword_ctxs_array[item->id]);
+            if (det_ctx->keyword_ctxs_array[item->id] != NULL)
+                item->FreeFunc(det_ctx->keyword_ctxs_array[item->id]);
+
             item = item->next;
         }
         det_ctx->keyword_ctxs_size = 0;
index 3584996b47331e22e46bc58878f9438e8044c631..8d405c628ae7fd5ed0310412fc7dcfb8951c1bc5 100644 (file)
@@ -383,6 +383,7 @@ static void *DetectLuajitThreadInit(void *data) {
     t->flags = luajit->flags;
 
     t->luastate = luaL_newstate();
+
     if (t->luastate == NULL) {
         SCLogError(SC_ERR_LUAJIT_ERROR, "couldn't set up luastate");
         goto error;
@@ -412,11 +413,11 @@ error:
 }
 
 static void DetectLuajitThreadFree(void *ctx) {
-    DetectLuajitThreadData *t = (DetectLuajitThreadData *)ctx;
-
-    lua_close(t->luastate);
-
-    SCFree(t);
+    if (ctx != NULL) {
+        DetectLuajitThreadData *t = (DetectLuajitThreadData *)ctx;
+        lua_close(t->luastate);
+        SCFree(t);
+    }
 }
 
 /**