Fix negation for addresses as well.

remotes/origin/master-1.0.x
Victor Julien 15 years ago
parent 50c07f9901
commit 0a699857d6

@ -944,7 +944,7 @@ int DetectAddressParse2(DetectAddressHead *gh, DetectAddressHead *ghn, char *s,
address[x - 1] = '\0';
x = 0;
if (DetectAddressParse2(gh, ghn, address, negate? negate: n_set) < 0)
if (DetectAddressParse2(gh, ghn, address, (negate + n_set) % 2) < 0)
goto error;
n_set = 0;
}
@ -960,7 +960,7 @@ int DetectAddressParse2(DetectAddressHead *gh, DetectAddressHead *ghn, char *s,
if (rule_var_address == NULL)
goto error;
temp_rule_var_address = rule_var_address;
if (negate == 1 || n_set == 1) {
if ((negate + n_set) % 2) {
temp_rule_var_address = malloc(strlen(rule_var_address) + 3);
if (temp_rule_var_address == NULL) {
SCLogError(SC_ERR_MEM_ALLOC, "Error allocating memory");
@ -970,7 +970,7 @@ int DetectAddressParse2(DetectAddressHead *gh, DetectAddressHead *ghn, char *s,
"[%s]", rule_var_address);
}
DetectAddressParse2(gh, ghn, temp_rule_var_address,
negate? negate: n_set);
(negate + n_set) % 2);
d_set = 0;
n_set = 0;
if (temp_rule_var_address != rule_var_address)
@ -978,7 +978,7 @@ int DetectAddressParse2(DetectAddressHead *gh, DetectAddressHead *ghn, char *s,
} else {
address[x - 1] = '\0';
if (negate == 0 && n_set == 0) {
if (!((negate + n_set) % 2)) {
if (DetectAddressSetup(gh, address) < 0)
goto error;
} else {
@ -1000,7 +1000,7 @@ int DetectAddressParse2(DetectAddressHead *gh, DetectAddressHead *ghn, char *s,
if (rule_var_address == NULL)
goto error;
temp_rule_var_address = rule_var_address;
if (negate == 1 || n_set == 1) {
if ((negate + n_set) % 2) {
temp_rule_var_address = malloc(strlen(rule_var_address) + 3);
if (temp_rule_var_address == NULL) {
SCLogError(SC_ERR_MEM_ALLOC, "Error allocating memory");
@ -1010,12 +1010,12 @@ int DetectAddressParse2(DetectAddressHead *gh, DetectAddressHead *ghn, char *s,
"[%s]", rule_var_address);
}
DetectAddressParse2(gh, ghn, temp_rule_var_address,
negate? negate: n_set);
(negate + n_set) % 2);
d_set = 0;
if (temp_rule_var_address != rule_var_address)
free(temp_rule_var_address);
} else {
if (negate == 0 && n_set == 0) {
if (!((negate + n_set) % 2)) {
if (DetectAddressSetup(gh, address) < 0)
goto error;
} else {

Loading…
Cancel
Save