From 22272f6c5b73fdeea125aec7833938e493a75618 Mon Sep 17 00:00:00 2001 From: Victor Julien Date: Fri, 15 Aug 2014 14:04:44 +0200 Subject: [PATCH] lua: export packet keywords to detect scripts Set packet pointer, so it's available to the lua keywords that require it. --- src/detect-lua-extensions.c | 6 +++++- src/detect-lua-extensions.h | 2 +- src/detect-lua.c | 6 ++++-- 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/src/detect-lua-extensions.c b/src/detect-lua-extensions.c index a83be283ef..6d63e708e1 100644 --- a/src/detect-lua-extensions.c +++ b/src/detect-lua-extensions.c @@ -558,7 +558,8 @@ static int LuaDecrFlowint(lua_State *luastate) } -void LuaExtensionsMatchSetup(lua_State *lua_state, DetectLuaData *ld, DetectEngineThreadCtx *det_ctx, Flow *f, int flow_locked) +void LuaExtensionsMatchSetup(lua_State *lua_state, DetectLuaData *ld, DetectEngineThreadCtx *det_ctx, + Flow *f, int flow_locked, Packet *p) { SCLogDebug("det_ctx %p, f %p", det_ctx, f); @@ -582,6 +583,9 @@ void LuaExtensionsMatchSetup(lua_State *lua_state, DetectLuaData *ld, DetectEngi } } } + + if (p != NULL) + LuaStateSetPacket(lua_state, p); } /** diff --git a/src/detect-lua-extensions.h b/src/detect-lua-extensions.h index e961acf2fc..e2edf9c6f9 100644 --- a/src/detect-lua-extensions.h +++ b/src/detect-lua-extensions.h @@ -29,7 +29,7 @@ int LuaRegisterExtensions(lua_State *); void LuaExtensionsMatchSetup(lua_State *lua_state, DetectLuaData *, DetectEngineThreadCtx *det_ctx, - Flow *f, int flow_locked); + Flow *f, int flow_locked, Packet *p); #endif /* HAVE_LUA */ #endif diff --git a/src/detect-lua.c b/src/detect-lua.c index 0bc4021c50..75364136ff 100644 --- a/src/detect-lua.c +++ b/src/detect-lua.c @@ -288,7 +288,8 @@ int DetectLuaMatchBuffer(DetectEngineThreadCtx *det_ctx, Signature *s, SigMatch SCReturnInt(0); /* setup extension data for use in lua c functions */ - LuaExtensionsMatchSetup(tluajit->luastate, luajit, det_ctx, f, flow_lock); + LuaExtensionsMatchSetup(tluajit->luastate, luajit, det_ctx, + f, flow_lock, /* no packet in the ctx */NULL); /* prepare data to pass to script */ lua_getglobal(tluajit->luastate, "match"); @@ -389,7 +390,8 @@ static int DetectLuaMatch (ThreadVars *tv, DetectEngineThreadCtx *det_ctx, SCReturnInt(0); /* setup extension data for use in lua c functions */ - LuaExtensionsMatchSetup(tluajit->luastate, luajit, det_ctx, p->flow, /* flow not locked */LUA_FLOW_NOT_LOCKED_BY_PARENT); + LuaExtensionsMatchSetup(tluajit->luastate, luajit, det_ctx, + p->flow, /* flow not locked */LUA_FLOW_NOT_LOCKED_BY_PARENT, p); if ((tluajit->flags & DATATYPE_PAYLOAD) && p->payload_len == 0) SCReturnInt(0); -- 2.47.2