diff options
author | Ken'ichi Ohmichi <oomichi@mxs.nes.nec.co.jp> | 2009-03-31 11:18:27 +0900 |
---|---|---|
committer | Dhaval Giani <dhaval@linux.vnet.ibm.com> | 2009-03-31 11:33:10 +0530 |
commit | dd1602c51180a63d2c75c049d7296c96cc1f51e9 (patch) | |
tree | 1d189813d12096145b0088a64384fd656b68cd1b /src | |
parent | 09f5406d4f4c48653d7b28fafd5dc776b0ba1284 (diff) | |
download | libcg-dd1602c51180a63d2c75c049d7296c96cc1f51e9.tar.gz libcg-dd1602c51180a63d2c75c049d7296c96cc1f51e9.tar.xz libcg-dd1602c51180a63d2c75c049d7296c96cc1f51e9.zip |
Add fclose() calls for error handling
I reviewed the libcgroup code in the viewpoint of memory-leak and
found some lacks of fclose(). This patch adds some fclose() calls
for error handling.
Signed-off-by: Ken'ichi Ohmichi <oomichi@mxs.nes.nec.co.jp>
Signed-off-by: Dhaval Giani <dhaval@linux.vnet.ibm.com>
Diffstat (limited to 'src')
-rw-r--r-- | src/api.c | 7 | ||||
-rw-r--r-- | src/config.c | 1 | ||||
-rw-r--r-- | src/tools/cgclassify.c | 2 |
3 files changed, 8 insertions, 2 deletions
@@ -696,14 +696,17 @@ static int cg_test_mounted_fs() temp_ent = (struct mntent *) malloc(sizeof(struct mntent)); if (!temp_ent) { /* We just fail at the moment. */ + fclose(proc_mount); return 0; } ent = getmntent_r(proc_mount, temp_ent, mntent_buff, sizeof(mntent_buff)); - if (!ent) - return 0; + if (!ent) { + ret = 0; + goto done; + } while (strcmp(ent->mnt_type, "cgroup") !=0) { ent = getmntent_r(proc_mount, temp_ent, mntent_buff, diff --git a/src/config.c b/src/config.c index b188985..a93fcce 100644 --- a/src/config.c +++ b/src/config.c @@ -469,6 +469,7 @@ int cgroup_config_load_config(const char *pathname) if (yyparse() != 0) { cgroup_dbg("Failed to parse file %s\n", pathname); + fclose(yyin); return ECGROUPPARSEFAIL; } diff --git a/src/tools/cgclassify.c b/src/tools/cgclassify.c index c044608..79d3477 100644 --- a/src/tools/cgclassify.c +++ b/src/tools/cgclassify.c @@ -57,9 +57,11 @@ int euid_of_pid(pid_t pid) (int *)&euid, (int *)&suid, (int *)&fsuid); cgroup_dbg("Scanned proc values are %d %d %d %d\n", ruid, euid, suid, fsuid); + fclose(fp); return euid; } } + fclose(fp); /* If we are here, we could not find euid. Return error. */ return -1; |