void PktVarFree(PktVar *pv) { if (pv == NULL) return; if (pv->key != NULL) SCFree(pv->key); if (pv->value != NULL) SCFree(pv->value); PktVar *pv_next = pv->next; SCFree(pv); if (pv_next != NULL) PktVarFree(pv_next); }
void GenericVarFree(GenericVar *gv) { if (gv == NULL) return; SCLogDebug("gv %p, gv->type %" PRIu32 "", gv, gv->type); GenericVar *next_gv = gv->next; switch (gv->type) { case DETECT_FLOWBITS: { FlowBit *fb = (FlowBit *)gv; //printf("GenericVarFree: fb %p, removing\n", fb); FlowBitFree(fb); break; } case DETECT_FLOWVAR: { FlowVar *fv = (FlowVar *)gv; FlowVarFree(fv); break; } case DETECT_PKTVAR: { PktVar *pv = (PktVar *)gv; PktVarFree(pv); break; } default: { printf("ERROR: GenericVarFree unknown type %" PRIu32 "\n", gv->type); break; } } GenericVarFree(next_gv); }