Exemplo n.º 1
0
void OtnDeleteData(void *data)
{
    OptTreeNode *otn = (OptTreeNode *)data;
    OptFpList *opt_func;

    if (otn == NULL)
        return;

    opt_func = otn->opt_func;
    while (opt_func != NULL)
    {
        /* For each of the pattern matcher options in this rule,
         * delete the data associated with it.  This is the only
         * rule option type (as of now) that this is required for since
         * patterns are not added to the hash table (via
         * add_detection_option()) until FinalizeContentUniqueness() is
         * called -- after the duplicate OTN checks.
         *
         * All other rule option types are added to the hash table
         * at parse time, thus the data associated with that rule
         * option is cleaned from the hash table when the table itself
         * is cleaned up.
         */
        OptFpList *tmp = opt_func;

        opt_func = opt_func->next;

        if ((tmp->OptTestFunc == CheckANDPatternMatch) ||
            (tmp->OptTestFunc == CheckUriPatternMatch))
        {
            PatternMatchFree(tmp->context);
        }
    }
}
Exemplo n.º 2
0
int detection_hash_free_func(void *option_key, void *data)
{
    detection_option_key_t *key = (detection_option_key_t*)option_key;

    switch (key->option_type)
    {
        /* Call free function specific to the key type */
        case RULE_OPTION_TYPE_ASN1:
            free(key->option_data);
            break;
        case RULE_OPTION_TYPE_BYTE_TEST:
            free(key->option_data);
            break;
        case RULE_OPTION_TYPE_BYTE_JUMP:
            free(key->option_data);
            break;
        case RULE_OPTION_TYPE_FLOW:
            free(key->option_data);
            break;
        case RULE_OPTION_TYPE_CVS:
            free(key->option_data);
            break;
        case RULE_OPTION_TYPE_DSIZE:
            free(key->option_data);
            break;
        case RULE_OPTION_TYPE_FLOWBIT:
            FlowBitsFree(key->option_data);
            break;
        case RULE_OPTION_TYPE_FTPBOUNCE:
            /* Data is NULL, nothing to free */
            break;
        case RULE_OPTION_TYPE_ICMP_CODE:
            free(key->option_data);
            break;
        case RULE_OPTION_TYPE_ICMP_ID:
            free(key->option_data);
            break;
        case RULE_OPTION_TYPE_ICMP_SEQ:
            free(key->option_data);
            break;
        case RULE_OPTION_TYPE_ICMP_TYPE:
            free(key->option_data);
            break;
        case RULE_OPTION_TYPE_IP_FRAGBITS:
            free(key->option_data);
            break;
        case RULE_OPTION_TYPE_IP_FRAG_OFFSET:
            free(key->option_data);
            break;
        case RULE_OPTION_TYPE_IP_ID:
            free(key->option_data);
            break;
        case RULE_OPTION_TYPE_IP_OPTION:
            free(key->option_data);
            break;
        case RULE_OPTION_TYPE_IP_PROTO:
            free(key->option_data);
            break;
        case RULE_OPTION_TYPE_IP_SAME:
            /* Data is NULL, nothing to free */
            break;
        case RULE_OPTION_TYPE_IP_TOS:
            free(key->option_data);
            break;
        case RULE_OPTION_TYPE_IS_DATA_AT:
            free(key->option_data);
            break;
        case RULE_OPTION_TYPE_CONTENT:
        case RULE_OPTION_TYPE_CONTENT_URI:
            PatternMatchFree(key->option_data);
            break;
        case RULE_OPTION_TYPE_PCRE:
            PcreFree(key->option_data);
            break;
#ifdef ENABLE_REACT
        case RULE_OPTION_TYPE_REACT:
            ReactFree(key->option_data);
            break;
#endif
#ifdef ENABLE_RESPOND
        case RULE_OPTION_TYPE_RESPOND:
            free(key->option_data);
            break;
#endif
        case RULE_OPTION_TYPE_RPC_CHECK:
            free(key->option_data);
            break;
        case RULE_OPTION_TYPE_SESSION:
            free(key->option_data);
            break;
        case RULE_OPTION_TYPE_TCP_ACK:
            free(key->option_data);
            break;
        case RULE_OPTION_TYPE_TCP_FLAG:
            free(key->option_data);
            break;
        case RULE_OPTION_TYPE_TCP_SEQ:
            free(key->option_data);
            break;
        case RULE_OPTION_TYPE_TCP_WIN:
            free(key->option_data);
            break;
        case RULE_OPTION_TYPE_TTL:
            free(key->option_data);
            break;
        case RULE_OPTION_TYPE_URILEN:
            free(key->option_data);
            break;
#ifdef DYNAMIC_PLUGIN
        case RULE_OPTION_TYPE_HDR_OPT_CHECK:
            break;
        case RULE_OPTION_TYPE_PREPROCESSOR:
            PreprocessorRuleOptionsFreeFunc(key->option_data);
            break;
        case RULE_OPTION_TYPE_DYNAMIC:
            fpDynamicDataFree(key->option_data);
            break;
#endif
        case RULE_OPTION_TYPE_LEAF_NODE:
            break;
    }
    return 0;
}