luajit: correct offset passed to script for lua's array idx starting at 1. Add http.response_headers and http.response_headers.raw buffers.

pull/81/head
Victor Julien 13 years ago
parent 20d2db085e
commit d1abd552e9

@ -133,6 +133,9 @@ static pthread_mutex_t luajit_states_lock = PTHREAD_MUTEX_INITIALIZER;
#define DATATYPE_HTTP_RESPONSE_COOKIE (1<<11) #define DATATYPE_HTTP_RESPONSE_COOKIE (1<<11)
#define DATATYPE_HTTP_RESPONSE_BODY (1<<12) #define DATATYPE_HTTP_RESPONSE_BODY (1<<12)
#define DATATYPE_HTTP_RESPONSE_HEADERS (1<<13)
#define DATATYPE_HTTP_RESPONSE_HEADERS_RAW (1<<14)
static void *LuaStatePoolAlloc(void) { static void *LuaStatePoolAlloc(void) {
return luaL_newstate(); return luaL_newstate();
} }
@ -253,7 +256,7 @@ int DetectLuajitMatchBuffer(DetectEngineThreadCtx *det_ctx, Signature *s, SigMat
lua_newtable(tluajit->luastate); /* stack at -1 */ lua_newtable(tluajit->luastate); /* stack at -1 */
lua_pushliteral (tluajit->luastate, "offset"); /* stack at -2 */ lua_pushliteral (tluajit->luastate, "offset"); /* stack at -2 */
lua_pushnumber (tluajit->luastate, (int)offset); lua_pushnumber (tluajit->luastate, (int)(offset + 1));
lua_settable(tluajit->luastate, -3); lua_settable(tluajit->luastate, -3);
lua_pushstring (tluajit->luastate, luajit->buffername); /* stack at -2 */ lua_pushstring (tluajit->luastate, luajit->buffername); /* stack at -2 */
@ -649,6 +652,12 @@ static int DetectLuaSetupPrime(DetectLuajitData *ld) {
else if (strcmp(k, "http.response_cookie") == 0) else if (strcmp(k, "http.response_cookie") == 0)
ld->flags |= DATATYPE_HTTP_RESPONSE_COOKIE; ld->flags |= DATATYPE_HTTP_RESPONSE_COOKIE;
else if (strcmp(k, "http.response_headers") == 0)
ld->flags |= DATATYPE_HTTP_RESPONSE_HEADERS;
else if (strcmp(k, "http.response_headers.raw") == 0)
ld->flags |= DATATYPE_HTTP_RESPONSE_HEADERS_RAW;
else { else {
SCLogError(SC_ERR_LUAJIT_ERROR, "unsupported http data type %s", k); SCLogError(SC_ERR_LUAJIT_ERROR, "unsupported http data type %s", k);
goto error; goto error;
@ -736,9 +745,9 @@ static int DetectLuajitSetup (DetectEngineCtx *de_ctx, Signature *s, char *str)
SigMatchAppendSMToList(s, sm, DETECT_SM_LIST_HCDMATCH); SigMatchAppendSMToList(s, sm, DETECT_SM_LIST_HCDMATCH);
else if (luajit->flags & DATATYPE_HTTP_REQUEST_UA) else if (luajit->flags & DATATYPE_HTTP_REQUEST_UA)
SigMatchAppendSMToList(s, sm, DETECT_SM_LIST_HUADMATCH); SigMatchAppendSMToList(s, sm, DETECT_SM_LIST_HUADMATCH);
else if (luajit->flags & DATATYPE_HTTP_REQUEST_HEADERS) else if (luajit->flags & (DATATYPE_HTTP_REQUEST_HEADERS|DATATYPE_HTTP_RESPONSE_HEADERS))
SigMatchAppendSMToList(s, sm, DETECT_SM_LIST_HHDMATCH); SigMatchAppendSMToList(s, sm, DETECT_SM_LIST_HHDMATCH);
else if (luajit->flags & DATATYPE_HTTP_REQUEST_HEADERS_RAW) else if (luajit->flags & (DATATYPE_HTTP_REQUEST_HEADERS_RAW|DATATYPE_HTTP_RESPONSE_HEADERS_RAW))
SigMatchAppendSMToList(s, sm, DETECT_SM_LIST_HRHDMATCH); SigMatchAppendSMToList(s, sm, DETECT_SM_LIST_HRHDMATCH);
else if (luajit->flags & DATATYPE_HTTP_RESPONSE_COOKIE) else if (luajit->flags & DATATYPE_HTTP_RESPONSE_COOKIE)
SigMatchAppendSMToList(s, sm, DETECT_SM_LIST_HCDMATCH); SigMatchAppendSMToList(s, sm, DETECT_SM_LIST_HCDMATCH);

Loading…
Cancel
Save