2nd try of fixing some bugs reported by static code analysis tool.

remotes/origin/master-1.0.x
Victor Julien 16 years ago
parent 5041e7e451
commit 39724df664

@ -78,8 +78,7 @@ void DecodeGRE(ThreadVars *tv, DecodeThreadVars *dtv, Packet *p, uint8_t *pkt, u
{ {
gsre = (GRESreHdr *)(pkt + header_len); gsre = (GRESreHdr *)(pkt + header_len);
if (gsre == NULL)
if(gsre == NULL)
return; return;
while (1) while (1)
@ -96,7 +95,8 @@ void DecodeGRE(ThreadVars *tv, DecodeThreadVars *dtv, Packet *p, uint8_t *pkt, u
header_len += gsre->sre_length; header_len += gsre->sre_length;
gsre = (GRESreHdr *)(pkt + header_len); gsre = (GRESreHdr *)(pkt + header_len);
if (gsre == NULL)
return;
} }
} }
break; break;

@ -139,26 +139,26 @@ int DetectFlowbitSetup (DetectEngineCtx *de_ctx, Signature *s, SigMatch *m, char
int ov[MAX_SUBSTRINGS]; int ov[MAX_SUBSTRINGS];
ret = pcre_exec(parse_regex, parse_regex_study, rawstr, strlen(rawstr), 0, 0, ov, MAX_SUBSTRINGS); ret = pcre_exec(parse_regex, parse_regex_study, rawstr, strlen(rawstr), 0, 0, ov, MAX_SUBSTRINGS);
if (ret > 1) { if (ret != 2 && ret != 3) {
const char *str_ptr; printf("ERROR: \"%s\" is not a valid setting for flowbits.\n", rawstr);
res = pcre_get_substring((char *)rawstr, ov, MAX_SUBSTRINGS, 1, &str_ptr); return -1;
}
const char *str_ptr;
res = pcre_get_substring((char *)rawstr, ov, MAX_SUBSTRINGS, 1, &str_ptr);
if (res < 0) {
printf("DetectPcreSetup: pcre_get_substring failed\n");
return -1;
}
fb_cmd_str = (char *)str_ptr;
if (ret == 3) {
res = pcre_get_substring((char *)rawstr, ov, MAX_SUBSTRINGS, 2, &str_ptr);
if (res < 0) { if (res < 0) {
printf("DetectPcreSetup: pcre_get_substring failed\n"); printf("DetectPcreSetup: pcre_get_substring failed\n");
return -1; return -1;
} }
fb_cmd_str = (char *)str_ptr; fb_name = (char *)str_ptr;
if (ret > 2) {
res = pcre_get_substring((char *)rawstr, ov, MAX_SUBSTRINGS, 2, &str_ptr);
if (res < 0) {
printf("DetectPcreSetup: pcre_get_substring failed\n");
return -1;
}
fb_name = (char *)str_ptr;
}
} else {
printf("ERROR: \"%s\" is not a valid setting for flowbits.\n", rawstr);
return -1;
} }
if (strcmp(fb_cmd_str,"noalert") == 0) { if (strcmp(fb_cmd_str,"noalert") == 0) {
@ -189,7 +189,11 @@ int DetectFlowbitSetup (DetectEngineCtx *de_ctx, Signature *s, SigMatch *m, char
goto error; goto error;
} }
cd->idx = VariableNameGetIdx(de_ctx,fb_name,DETECT_FLOWBITS); if (fb_name != NULL) {
cd->idx = VariableNameGetIdx(de_ctx,fb_name,DETECT_FLOWBITS);
} else {
cd->idx = 0;
}
cd->cmd = fb_cmd; cd->cmd = fb_cmd;
//printf("DetectFlowbitSetup: idx %" PRIu32 ", cmd %s, name %s\n", cd->idx, fb_cmd_str, fb_name ? fb_name : "(null)"); //printf("DetectFlowbitSetup: idx %" PRIu32 ", cmd %s, name %s\n", cd->idx, fb_cmd_str, fb_name ? fb_name : "(null)");

@ -91,29 +91,29 @@ int DetectFlowvarSetup (DetectEngineCtx *de_ctx, Signature *s, SigMatch *m, char
int ov[MAX_SUBSTRINGS]; int ov[MAX_SUBSTRINGS];
ret = pcre_exec(parse_regex, parse_regex_study, rawstr, strlen(rawstr), 0, 0, ov, MAX_SUBSTRINGS); ret = pcre_exec(parse_regex, parse_regex_study, rawstr, strlen(rawstr), 0, 0, ov, MAX_SUBSTRINGS);
if (ret > 1) { if (ret != 3) {
const char *str_ptr; printf("ERROR: \"%s\" is not a valid setting for flowvar.\n", rawstr);
res = pcre_get_substring((char *)rawstr, ov, MAX_SUBSTRINGS, 1, &str_ptr); return -1;
}
const char *str_ptr;
res = pcre_get_substring((char *)rawstr, ov, MAX_SUBSTRINGS, 1, &str_ptr);
if (res < 0) {
printf("DetectPcreSetup: pcre_get_substring failed\n");
return -1;
}
varname = (char *)str_ptr;
if (ret > 2) {
res = pcre_get_substring((char *)rawstr, ov, MAX_SUBSTRINGS, 2, &str_ptr);
if (res < 0) { if (res < 0) {
printf("DetectPcreSetup: pcre_get_substring failed\n"); printf("DetectPcreSetup: pcre_get_substring failed\n");
return -1; return -1;
} }
varname = (char *)str_ptr; varcontent = (char *)str_ptr;
if (ret > 2) {
res = pcre_get_substring((char *)rawstr, ov, MAX_SUBSTRINGS, 2, &str_ptr);
if (res < 0) {
printf("DetectPcreSetup: pcre_get_substring failed\n");
return -1;
}
varcontent = (char *)str_ptr;
}
} else {
printf("ERROR: \"%s\" is not a valid setting for flowvar.\n", rawstr);
return -1;
} }
printf("DetectFlowvarSetup: varname %s, varcontent %s\n", varname, varcontent); //printf("DetectFlowvarSetup: varname %s, varcontent %s\n", varname, varcontent);
if (varcontent[0] == '\"' && varcontent[strlen(varcontent)-1] == '\"') { if (varcontent[0] == '\"' && varcontent[strlen(varcontent)-1] == '\"') {
str = strdup(varcontent+1); str = strdup(varcontent+1);

@ -85,26 +85,27 @@ int DetectPktvarSetup (DetectEngineCtx *de_ctx, Signature *s, SigMatch *m, char
int ov[MAX_SUBSTRINGS]; int ov[MAX_SUBSTRINGS];
ret = pcre_exec(parse_regex, parse_regex_study, rawstr, strlen(rawstr), 0, 0, ov, MAX_SUBSTRINGS); ret = pcre_exec(parse_regex, parse_regex_study, rawstr, strlen(rawstr), 0, 0, ov, MAX_SUBSTRINGS);
if (ret > 1) { if (ret != 3) {
const char *str_ptr; printf("ERROR: \"%s\" is not a valid setting for pktvar.\n", rawstr);
res = pcre_get_substring((char *)rawstr, ov, MAX_SUBSTRINGS, 1, &str_ptr); return -1;
}
const char *str_ptr;
res = pcre_get_substring((char *)rawstr, ov, MAX_SUBSTRINGS, 1, &str_ptr);
if (res < 0) {
printf("DetectPcreSetup: pcre_get_substring failed\n");
return -1;
}
varname = (char *)str_ptr;
if (ret > 2) {
res = pcre_get_substring((char *)rawstr, ov, MAX_SUBSTRINGS, 2, &str_ptr);
if (res < 0) { if (res < 0) {
printf("DetectPcreSetup: pcre_get_substring failed\n"); printf("DetectPcreSetup: pcre_get_substring failed\n");
return -1; return -1;
} }
varname = (char *)str_ptr; varcontent = (char *)str_ptr;
if (ret > 2) {
res = pcre_get_substring((char *)rawstr, ov, MAX_SUBSTRINGS, 2, &str_ptr);
if (res < 0) {
printf("DetectPcreSetup: pcre_get_substring failed\n");
return -1;
}
varcontent = (char *)str_ptr;
}
} else {
printf("ERROR: \"%s\" is not a valid setting for pktvar.\n", rawstr);
return -1;
} }
printf("DetectPktvarSetup: varname %s, varcontent %s\n", varname, varcontent); printf("DetectPktvarSetup: varname %s, varcontent %s\n", varname, varcontent);

Loading…
Cancel
Save