summaryrefslogtreecommitdiffstats
path: root/fs_mgr
diff options
context:
space:
mode:
authorIrina Tirdea <irina.tirdea@intel.com>2013-09-18 23:00:54 +0300
committerElliott Hughes <enh@google.com>2013-09-18 16:34:02 -0700
commitd431b8d7f1396fe984b946f55e480ead99219484 (patch)
tree6428e56f7dd1460b42dd50473ef672aa5c30e4d8 /fs_mgr
parent810ff69609c6f6e0a562c8f05912d4d785fd8bd2 (diff)
downloadsystem_core-d431b8d7f1396fe984b946f55e480ead99219484.tar.gz
system_core-d431b8d7f1396fe984b946f55e480ead99219484.tar.bz2
system_core-d431b8d7f1396fe984b946f55e480ead99219484.zip
Fix fstab memory leak
When reading the fstab config file fails, fstab memory is not freed. When fstab structure is no longer needed, only half of it is freed. Free fstab memory in all cases (error or when it is no longer needed). Change-Id: Ib0758a5aaa69505285bf64143632986a2dbbdccb Signed-off-by: Irina Tirdea <irina.tirdea@intel.com>
Diffstat (limited to 'fs_mgr')
-rw-r--r--fs_mgr/fs_mgr.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/fs_mgr/fs_mgr.c b/fs_mgr/fs_mgr.c
index 85ce39756..4f11fbb65 100644
--- a/fs_mgr/fs_mgr.c
+++ b/fs_mgr/fs_mgr.c
@@ -222,7 +222,7 @@ struct fstab *fs_mgr_read_fstab(const char *fstab_path)
char *line = NULL;
const char *delim = " \t";
char *save_ptr, *p;
- struct fstab *fstab;
+ struct fstab *fstab = NULL;
struct fstab_rec *recs;
char *key_loc;
long long part_length;
@@ -345,7 +345,10 @@ struct fstab *fs_mgr_read_fstab(const char *fstab_path)
return fstab;
err:
+ fclose(fstab_file);
free(line);
+ if (fstab)
+ fs_mgr_free_fstab(fstab);
return NULL;
}
@@ -361,7 +364,6 @@ void fs_mgr_free_fstab(struct fstab *fstab)
free(fstab->recs[i].fs_options);
free(fstab->recs[i].key_loc);
free(fstab->recs[i].label);
- i++;
}
/* Free the fstab_recs array created by calloc(3) */