From 1af601fed7c23849ae50cacf0eff15fa7dc781a8 Mon Sep 17 00:00:00 2001 From: Steve Grubb Date: Tue, 26 Mar 2019 09:18:00 -0400 Subject: [PATCH 1/2] Fix memleak in auparse caused by corrected event ordering --- auparse/auparse.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/auparse/auparse.c b/auparse/auparse.c index 042ea2b..af5dc7b 100644 --- a/auparse/auparse.c +++ b/auparse/auparse.c @@ -266,6 +266,14 @@ static event_list_t *au_get_ready_event(auparse_state_t *au, int is_test) au_lolnode *ptr = lowest; while (ptr->status == EBS_EMPTY && lol->maxi > 0) { lol->maxi--; + if (ptr->l) { + aup_list_clear(ptr->l); + free(ptr->l); + ptr->l = NULL; + au->le = NULL; // this should crash + // usage of au->le + // until reset + } ptr = &lol->array[lol->maxi]; } } From a4ed2001dd9db902764256ee08bd53e2039f217e Mon Sep 17 00:00:00 2001 From: Steve Grubb Date: Tue, 26 Mar 2019 17:24:37 -0400 Subject: [PATCH 2/2] Fix memleak in auparse caused by corrected event ordering part 2 --- auparse/auparse.c | 17 ----------------- 1 file changed, 17 deletions(-) diff --git a/auparse/auparse.c b/auparse/auparse.c index af5dc7b..7662b85 100644 --- a/auparse/auparse.c +++ b/auparse/auparse.c @@ -260,23 +260,6 @@ static event_list_t *au_get_ready_event(auparse_state_t *au, int is_test) if (lowest && lowest->status == EBS_COMPLETE) { lowest->status = EBS_EMPTY; au->au_ready--; - // Try to consolidate the array so that we iterate - // over a smaller portion next time - if (lowest == &lol->array[lol->maxi]) { - au_lolnode *ptr = lowest; - while (ptr->status == EBS_EMPTY && lol->maxi > 0) { - lol->maxi--; - if (ptr->l) { - aup_list_clear(ptr->l); - free(ptr->l); - ptr->l = NULL; - au->le = NULL; // this should crash - // usage of au->le - // until reset - } - ptr = &lol->array[lol->maxi]; - } - } return lowest->l; }