From cf6e4c6c07592c05478fdb9af161cdef0859b3bd Mon Sep 17 00:00:00 2001 From: Zofia Abramowska Date: Fri, 19 Dec 2014 10:57:22 +0100 Subject: [PATCH] Fix wrong null terminated list deallocation Fixed wrong iteration on null terminated list in deallocating function. Change-Id: I1f344cbfdcf775aedd3f7e0eb00518cfec423bc2 --- src/admin/api/admin-api.cpp | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/src/admin/api/admin-api.cpp b/src/admin/api/admin-api.cpp index c2a5212..55fc4db 100644 --- a/src/admin/api/admin-api.cpp +++ b/src/admin/api/admin-api.cpp @@ -233,14 +233,13 @@ static int createPoliciesArray(const char *bucket, return CYNARA_API_OUT_OF_MEMORY; std::unique_ptr> plumber(tab, [](Elem **tab) { - Elem *elem = *tab; - while (elem) { - free(elem->bucket); - free(elem->client); - free(elem->user); - free(elem->privilege); - free(elem->result_extra); - free(elem++); + for (int i = 0; tab[i] != nullptr; i++) { + free(tab[i]->bucket); + free(tab[i]->client); + free(tab[i]->user); + free(tab[i]->privilege); + free(tab[i]->result_extra); + free(tab[i]); } free(tab); }); -- 2.7.4