Example #1
0
File: mpse.c Project: eqmcc/snort
void   mpseFree( void * pvoid )
{
    MPSE * p = (MPSE*)pvoid;

    if (p == NULL)
        return;

    switch( p->method )
    {
        case MPSE_AC_BNFA:
        case MPSE_AC_BNFA_Q:
            if (p->obj)
                bnfaFree((bnfa_struct_t*)p->obj);
            free(p);
            return;

        case MPSE_AC:
            if (p->obj)
                acsmFree((ACSM_STRUCT *)p->obj);
            free(p);
            return;

        case MPSE_ACF:
        case MPSE_ACF_Q:
        case MPSE_ACS:
        case MPSE_ACB:
        case MPSE_ACSB:
            if (p->obj)
                acsmFree2((ACSM_STRUCT2 *)p->obj);
            free(p);
            return;

        case MPSE_LOWMEM:
        case MPSE_LOWMEM_Q:
            if (p->obj)
                KTrieDelete((KTRIE_STRUCT *)p->obj);
            free(p);
            return;

#ifdef INTEL_SOFT_CPM
        case MPSE_INTEL_CPM:
            if (p->obj)
                IntelPmDelete((IntelPm *)p->obj);
            free(p);
            break;
#endif

        default:
            return;
    }
}
Example #2
0
void   mpseFree( void * pvoid )
{
    MPSE * p = (MPSE*)pvoid;

    if (p == NULL)
        return;

    switch( p->method )
    {
        case MPSE_AC_BNFA:
            if (p->obj)
                bnfaFree((bnfa_struct_t*)p->obj);
            free(p);
            return;

        case MPSE_AC:
            if (p->obj)
                acsmFree((ACSM_STRUCT *)p->obj);
            free(p);
            return;

        case MPSE_ACF:
        case MPSE_ACS:
        case MPSE_ACB:
        case MPSE_ACSB:
            if (p->obj)
                acsmFree2((ACSM_STRUCT2 *)p->obj);
            free(p);
            return;

        case MPSE_LOWMEM:
            if (p->obj)
                KTrieDelete((KTRIE_STRUCT *)p->obj);
            free(p);
            return;

        default:
            return;
    }
}
/* Cleanup memory used by this coprocessor. Not used at the moment, but useful to keep track of what should be released. */
int32_t nvmStringMatchCoproCleanup (nvmCoprocessorState *c, uint8_t *data) {
	nvmStringMatchCoproInternalData *smcdata = c -> data;
	nvmStringMatchCoproPattern *p = NULL, *nextp = NULL;
	//nvmStringMatchCoproMatchResult *r = NULL, *nextr = NULL;
	uint16_t g;

	for (p = smcdata -> patterns; p; p = nextp) {
		free (p -> pattern);
		nextp = p -> next;
		free (p);
	}

	/* Reset match results data */
	free (smcdata -> matches);

	/* Free graphs data */
	for (g = 0; g < smcdata -> graphs_no; g++)
		acsmFree2 (smcdata -> acsm[g]);

	/* Free whole object */
	free (smcdata);

	return (nvmSUCCESS);
}