Free the resources when fopen or realloc fails.
Also remove completelly useless code.

Signed-off-by: Jan Safranek <jsafr...@redhat.com>
---

 src/api.c |   14 ++++++++------
 1 files changed, 8 insertions(+), 6 deletions(-)

diff --git a/src/api.c b/src/api.c
index 5b2b518..2ed9e22 100644
--- a/src/api.c
+++ b/src/api.c
@@ -3883,12 +3883,6 @@ int cgroup_get_procs(char *name, char *controller, pid_t 
**pids, int *size)
                return ECGROUPUNSUPP;
 
        /*
-        * Read all the procs and then sort them up.
-        */
-
-       tmp_list = *pids;
-
-       /*
         * Keep doubling the memory allocated if needed
         */
        tmp_list= malloc(sizeof(pid_t) * tot_procs);
@@ -3900,6 +3894,9 @@ int cgroup_get_procs(char *name, char *controller, pid_t 
**pids, int *size)
        procs = fopen(cgroup_path, "r");
        if (!procs) {
                last_errno = errno;
+               free(tmp_list);
+               *pids = NULL;
+               *size = 0;
                return ECGOTHER;
        }
 
@@ -3913,10 +3910,15 @@ int cgroup_get_procs(char *name, char *controller, 
pid_t **pids, int *size)
                        n++;
                }
                if (!feof(procs)) {
+                       pid_t *orig_list = tmp_list;
                        tot_procs *= 2;
                        tmp_list = realloc(tmp_list, sizeof(pid_t) * tot_procs);
                        if (!tmp_list) {
                                last_errno = errno;
+                               fclose(procs);
+                               free(orig_list);
+                               *pids = NULL;
+                               *size = 0;
                                return ECGOTHER;
                        }
                }


------------------------------------------------------------------------------
EMC VNX: the world's simplest storage, starting under $10K
The only unified storage solution that offers unified management 
Up to 160% more powerful than alternatives and 25% more efficient. 
Guaranteed. http://p.sf.net/sfu/emc-vnx-dev2dev
_______________________________________________
Libcg-devel mailing list
Libcg-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/libcg-devel

Reply via email to