|
|
|
@ -354,6 +354,7 @@ error:
|
|
|
|
pcre2_substring_free((PCRE2_UCHAR *)varval);
|
|
|
|
pcre2_substring_free((PCRE2_UCHAR *)varval);
|
|
|
|
if (modstr)
|
|
|
|
if (modstr)
|
|
|
|
pcre2_substring_free((PCRE2_UCHAR *)modstr);
|
|
|
|
pcre2_substring_free((PCRE2_UCHAR *)modstr);
|
|
|
|
|
|
|
|
DetectFlowintFree(de_ctx, sfd);
|
|
|
|
return NULL;
|
|
|
|
return NULL;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
@ -417,16 +418,19 @@ error:
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
void DetectFlowintFree(DetectEngineCtx *de_ctx, void *tmp)
|
|
|
|
void DetectFlowintFree(DetectEngineCtx *de_ctx, void *tmp)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
DetectFlowintData *sfd =(DetectFlowintData*) tmp;
|
|
|
|
if (tmp == NULL)
|
|
|
|
if (sfd != NULL) {
|
|
|
|
return;
|
|
|
|
VarNameStoreUnregister(sfd->idx, VAR_TYPE_FLOW_INT);
|
|
|
|
|
|
|
|
if (sfd->name != NULL)
|
|
|
|
DetectFlowintData *sfd = (DetectFlowintData *)tmp;
|
|
|
|
SCFree(sfd->name);
|
|
|
|
VarNameStoreUnregister(sfd->idx, VAR_TYPE_FLOW_INT);
|
|
|
|
if (sfd->targettype == FLOWINT_TARGET_VAR)
|
|
|
|
if (sfd->name != NULL)
|
|
|
|
if (sfd->target.tvar.name != NULL)
|
|
|
|
SCFree(sfd->name);
|
|
|
|
SCFree(sfd->target.tvar.name);
|
|
|
|
if (sfd->targettype == FLOWINT_TARGET_VAR) {
|
|
|
|
SCFree(sfd);
|
|
|
|
if (sfd->target.tvar.name != NULL) {
|
|
|
|
|
|
|
|
SCFree(sfd->target.tvar.name);
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
SCFree(sfd);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
#ifdef UNITTESTS
|
|
|
|
#ifdef UNITTESTS
|
|
|
|
|