Fix wrong null terminated list deallocation 00/32600/1
authorZofia Abramowska <z.abramowska@samsung.com>
Fri, 19 Dec 2014 09:57:22 +0000 (10:57 +0100)
committerZofia Abramowska <z.abramowska@samsung.com>
Fri, 19 Dec 2014 10:14:19 +0000 (11:14 +0100)
Fixed wrong iteration on null terminated list in deallocating function.

Change-Id: I1f344cbfdcf775aedd3f7e0eb00518cfec423bc2

src/admin/api/admin-api.cpp

index c2a5212..55fc4db 100644 (file)
@@ -233,14 +233,13 @@ static int createPoliciesArray(const char *bucket,
         return CYNARA_API_OUT_OF_MEMORY;
     std::unique_ptr<Elem*, std::function<void(Elem**)>> 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);
         });