From 4a8dc682fd3b6ad764a1311598d93c85cb633eae Mon Sep 17 00:00:00 2001 From: Job Snijders Date: Wed, 18 Aug 2021 00:38:44 +0000 Subject: [PATCH] Add more free() to counter memory errors --- expander.c | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/expander.c b/expander.c index 8ed517d..4168912 100644 --- a/expander.c +++ b/expander.c @@ -1146,6 +1146,7 @@ bgpq_prequest_freeall(struct bgpq_prequest *bpr) { void expander_freeall(struct bgpq_expander *expander) { + struct sx_tentry *var, *nxt; // printf("starting to free all\n"); // seg fault here @@ -1173,6 +1174,20 @@ expander_freeall(struct bgpq_expander *expander) { free(n1); } + for (var = RB_MIN(tentree, &expander->already); var != NULL; var = nxt) { + nxt = RB_NEXT(tentree, &expander->already, var); + RB_REMOVE(tentree, &expander->already, var); + free(var->text); + free(var); + } + + for (var = RB_MIN(tentree, &expander->stoplist); var != NULL; var = nxt) { + nxt = RB_NEXT(tentree, &expander->stoplist, var); + RB_REMOVE(tentree, &expander->stoplist, var); + free(var->text); + free(var); + } + for (int i = 0; i < 65536; i++) { if (expander->asn32s[i] != NULL) { free(expander->asn32s[i]);