}
res = pcre_get_substring((char *)tagstr, ov, MAX_SUBSTRINGS, 1, &str_ptr);
- if (res < 0) {
+ if (res < 0 || str_ptr == NULL) {
SCLogError(SC_ERR_PCRE_GET_SUBSTRING, "pcre_get_substring failed");
goto error;
}
SCLogError(SC_ERR_INVALID_VALUE, "Invalid argument type. Must be session or host (%s)", tagstr);
goto error;
}
- if (str_ptr != NULL) {
- pcre_free_substring(str_ptr);
- str_ptr = NULL;
- }
+ pcre_free_substring(str_ptr);
+ str_ptr = NULL;
/* default tag is 256 packets from session or dst host */
td.count = DETECT_TAG_MAX_PKTS;
if (ret > 4) {
res = pcre_get_substring((char *)tagstr, ov, MAX_SUBSTRINGS, 3, &str_ptr);
- if (res < 0) {
+ if (res < 0 || str_ptr == NULL) {
SCLogError(SC_ERR_PCRE_GET_SUBSTRING, "pcre_get_substring failed");
goto error;
}
goto error;
}
- if (str_ptr != NULL) {
- pcre_free_substring(str_ptr);
- str_ptr = NULL;
- }
+ pcre_free_substring(str_ptr);
+ str_ptr = NULL;
res = pcre_get_substring((char *)tagstr, ov, MAX_SUBSTRINGS, 4, &str_ptr);
- if (res < 0) {
+ if (res < 0 || str_ptr == NULL) {
SCLogError(SC_ERR_PCRE_GET_SUBSTRING, "pcre_get_substring failed");
goto error;
}
goto error;
}
- if (str_ptr != NULL) {
- pcre_free_substring(str_ptr);
- str_ptr = NULL;
- }
+ pcre_free_substring(str_ptr);
+ str_ptr = NULL;
/* if specified, overwrite it */
if (ret == 7) {
res = pcre_get_substring((char *)tagstr, ov, MAX_SUBSTRINGS, 6, &str_ptr);
- if (res < 0) {
+ if (res < 0 || str_ptr == NULL) {
SCLogError(SC_ERR_PCRE_GET_SUBSTRING, "pcre_get_substring failed");
goto error;
}
SCLogWarning(SC_ERR_INVALID_VALUE, "Argument direction doesn't make sense for type \"session\" (%s [%"PRIu8"])", tagstr, td.type);
}
- if (str_ptr != NULL) {
- pcre_free_substring(str_ptr);
- str_ptr = NULL;
- }
+ pcre_free_substring(str_ptr);
+ str_ptr = NULL;
}
}
}
memcpy(real_td, &td, sizeof(DetectTagData));
-
- if (str_ptr != NULL)
- pcre_free_substring(str_ptr);
return real_td;
error: