diff options
author | Colin Cross <ccross@google.com> | 2015-04-22 17:57:32 +0000 |
---|---|---|
committer | Gerrit Code Review <noreply-gerritcodereview@google.com> | 2015-04-22 17:57:32 +0000 |
commit | 8f4e79766cb67241666d7454b71982fd53e9fb61 (patch) | |
tree | fd255667630143353ff8dc9874b69e4982cbfa74 | |
parent | 9a6b9137db9cd00e1189322a5db5581cd67e2867 (diff) | |
parent | 1cd49841dce6c79a82db1582f8fcaf23325ec0e2 (diff) | |
download | extras-8f4e79766cb67241666d7454b71982fd53e9fb61.tar.gz |
Merge "Do free and fclose when error occur."
-rw-r--r-- | libpagemap/pm_process.c | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/libpagemap/pm_process.c b/libpagemap/pm_process.c index 50791ef9..4d56428b 100644 --- a/libpagemap/pm_process.c +++ b/libpagemap/pm_process.c @@ -258,12 +258,16 @@ static int read_maps(pm_process_t *proc) { maps_count = 0; maps_size = INITIAL_MAPS; error = snprintf(filename, MAX_FILENAME, "/proc/%d/maps", proc->pid); - if (error < 0 || error >= MAX_FILENAME) + if (error < 0 || error >= MAX_FILENAME) { + free(maps); return (error < 0) ? (errno) : (-1); + } maps_f = fopen(filename, "r"); - if (!maps_f) + if (!maps_f) { + free(maps); return errno; + } while (fgets(line, MAX_LINE, maps_f)) { if (maps_count >= maps_size) { @@ -292,6 +296,7 @@ static int read_maps(pm_process_t *proc) { for (; maps_count > 0; maps_count--) pm_map_destroy(maps[maps_count]); free(maps); + fclose(maps_f); return error; } strcpy(map->name, name); |