detect-lua: setup cleanup, fixing a potential int issue

pull/2572/head
Victor Julien 9 years ago
parent 511e804915
commit 2f30adb08a

@ -990,70 +990,65 @@ static int DetectLuaSetup (DetectEngineCtx *de_ctx, Signature *s, char *str)
sm->type = DETECT_LUA; sm->type = DETECT_LUA;
sm->ctx = (SigMatchCtx *)lua; sm->ctx = (SigMatchCtx *)lua;
int list = -1;
if (lua->alproto == ALPROTO_UNKNOWN) { if (lua->alproto == ALPROTO_UNKNOWN) {
if (lua->flags & DATATYPE_STREAM) if (lua->flags & DATATYPE_STREAM)
SigMatchAppendSMToList(s, sm, DETECT_SM_LIST_PMATCH); list = DETECT_SM_LIST_PMATCH;
else else
SigMatchAppendSMToList(s, sm, DETECT_SM_LIST_MATCH); list = DETECT_SM_LIST_MATCH;
} else if (lua->alproto == ALPROTO_HTTP) { } else if (lua->alproto == ALPROTO_HTTP) {
if (lua->flags & DATATYPE_HTTP_RESPONSE_BODY) { if (lua->flags & DATATYPE_HTTP_RESPONSE_BODY) {
int list = DetectBufferTypeGetByName("file_data"); list = DetectBufferTypeGetByName("file_data");
SigMatchAppendSMToList(s, sm, list);
} else if (lua->flags & DATATYPE_HTTP_REQUEST_BODY) { } else if (lua->flags & DATATYPE_HTTP_REQUEST_BODY) {
int list = DetectBufferTypeGetByName("http_client_body"); list = DetectBufferTypeGetByName("http_client_body");
SigMatchAppendSMToList(s, sm, list);
} else if (lua->flags & DATATYPE_HTTP_URI) { } else if (lua->flags & DATATYPE_HTTP_URI) {
int list = DetectBufferTypeGetByName("http_uri"); list = DetectBufferTypeGetByName("http_uri");
SigMatchAppendSMToList(s, sm, list);
} else if (lua->flags & DATATYPE_HTTP_URI_RAW) { } else if (lua->flags & DATATYPE_HTTP_URI_RAW) {
int list = DetectBufferTypeGetByName("http_raw_uri"); list = DetectBufferTypeGetByName("http_raw_uri");
SigMatchAppendSMToList(s, sm, list);
} else if (lua->flags & DATATYPE_HTTP_REQUEST_COOKIE || } else if (lua->flags & DATATYPE_HTTP_REQUEST_COOKIE ||
lua->flags & DATATYPE_HTTP_RESPONSE_COOKIE) lua->flags & DATATYPE_HTTP_RESPONSE_COOKIE)
{ {
int list = DetectBufferTypeGetByName("http_cookie"); list = DetectBufferTypeGetByName("http_cookie");
SigMatchAppendSMToList(s, sm, list);
} else if (lua->flags & DATATYPE_HTTP_REQUEST_UA) { } else if (lua->flags & DATATYPE_HTTP_REQUEST_UA) {
int list = DetectBufferTypeGetByName("http_user_agent"); list = DetectBufferTypeGetByName("http_user_agent");
SigMatchAppendSMToList(s, sm, list);
} else if (lua->flags & (DATATYPE_HTTP_REQUEST_HEADERS|DATATYPE_HTTP_RESPONSE_HEADERS)) { } else if (lua->flags & (DATATYPE_HTTP_REQUEST_HEADERS|DATATYPE_HTTP_RESPONSE_HEADERS)) {
int list = DetectBufferTypeGetByName("http_header"); list = DetectBufferTypeGetByName("http_header");
SigMatchAppendSMToList(s, sm, list);
} else if (lua->flags & (DATATYPE_HTTP_REQUEST_HEADERS_RAW|DATATYPE_HTTP_RESPONSE_HEADERS_RAW)) { } else if (lua->flags & (DATATYPE_HTTP_REQUEST_HEADERS_RAW|DATATYPE_HTTP_RESPONSE_HEADERS_RAW)) {
int list = DetectBufferTypeGetByName("http_raw_header"); list = DetectBufferTypeGetByName("http_raw_header");
SigMatchAppendSMToList(s, sm, list);
} else { } else {
int list = DetectBufferTypeGetByName("http_request_line"); list = DetectBufferTypeGetByName("http_request_line");
SigMatchAppendSMToList(s, sm, list);
} }
} else if (lua->alproto == ALPROTO_DNS) { } else if (lua->alproto == ALPROTO_DNS) {
if (lua->flags & DATATYPE_DNS_RRNAME) { if (lua->flags & DATATYPE_DNS_RRNAME) {
int list = DetectBufferTypeGetByName("dns_query"); list = DetectBufferTypeGetByName("dns_query");
SigMatchAppendSMToList(s, sm, list);
} else if (lua->flags & DATATYPE_DNS_REQUEST) { } else if (lua->flags & DATATYPE_DNS_REQUEST) {
int list = DetectBufferTypeGetByName("dns_request"); list = DetectBufferTypeGetByName("dns_request");
SigMatchAppendSMToList(s, sm, list);
} else if (lua->flags & DATATYPE_DNS_RESPONSE) { } else if (lua->flags & DATATYPE_DNS_RESPONSE) {
int list = DetectBufferTypeGetByName("dns_response"); list = DetectBufferTypeGetByName("dns_response");
SigMatchAppendSMToList(s, sm, list);
} }
} else if (lua->alproto == ALPROTO_TLS) { } else if (lua->alproto == ALPROTO_TLS) {
int list = DetectBufferTypeGetByName("tls_generic"); list = DetectBufferTypeGetByName("tls_generic");
SigMatchAppendSMToList(s, sm, list);
} else if (lua->alproto == ALPROTO_SSH) { } else if (lua->alproto == ALPROTO_SSH) {
int list = DetectBufferTypeGetByName("ssh_banner"); list = DetectBufferTypeGetByName("ssh_banner");
SigMatchAppendSMToList(s, sm, list);
} else if (lua->alproto == ALPROTO_SMTP) { } else if (lua->alproto == ALPROTO_SMTP) {
SigMatchAppendSMToList(s, sm, g_smtp_generic_list_id); list = g_smtp_generic_list_id;
} else if (lua->alproto == ALPROTO_DNP3) { } else if (lua->alproto == ALPROTO_DNP3) {
int list = DetectBufferTypeGetByName("dnp3"); list = DetectBufferTypeGetByName("dnp3");
SigMatchAppendSMToList(s, sm, list);
} else { } else {
SCLogError(SC_ERR_LUA_ERROR, "lua can't be used with protocol %s", SCLogError(SC_ERR_LUA_ERROR, "lua can't be used with protocol %s",
AppLayerGetProtoName(lua->alproto)); AppLayerGetProtoName(lua->alproto));
goto error; goto error;
} }
if (list == -1) {
SCLogError(SC_ERR_LUA_ERROR, "lua can't be used with protocol %s",
AppLayerGetProtoName(lua->alproto));
goto error;
}
SigMatchAppendSMToList(s, sm, list);
return 0; return 0;
error: error:

Loading…
Cancel
Save