diff options
author | Sören Brinkmann <soeren.brinkmann@gmail.com> | 2014-03-12 03:29:22 +0100 |
---|---|---|
committer | Allan McRae <allan@archlinux.org> | 2014-03-27 06:16:52 +0100 |
commit | fb8437b588356f2efd9dd093a304edc3a1859a1d (patch) | |
tree | 62f42fda9875b068d0998e1165d3a3d4542279c8 /src | |
parent | fcf0cefd1a9ae9bd3319c82a77ed38d7a2bc8db3 (diff) | |
download | pacman-fb8437b588356f2efd9dd093a304edc3a1859a1d.tar.gz pacman-fb8437b588356f2efd9dd093a304edc3a1859a1d.tar.xz |
pacman/upgrade: Fix memory leaks
Make sure allocated memory is freed before returning.
Signed-off-by: Sören Brinkmann <soeren.brinkmann@gmail.com>
Signed-off-by: Allan McRae <allan@archlinux.org>
Diffstat (limited to 'src')
-rw-r--r-- | src/pacman/upgrade.c | 19 |
1 files changed, 13 insertions, 6 deletions
diff --git a/src/pacman/upgrade.c b/src/pacman/upgrade.c index cbc605d6..a6be0e18 100644 --- a/src/pacman/upgrade.c +++ b/src/pacman/upgrade.c @@ -75,12 +75,13 @@ int pacman_upgrade(alpm_list_t *targets) } if(retval) { - return retval; + goto fail_free; } /* Step 1: create a new transaction */ if(trans_init(config->flags, 1) == -1) { - return 1; + retval = 1; + goto fail_free; } printf(_("loading packages...\n")); @@ -112,15 +113,21 @@ int pacman_upgrade(alpm_list_t *targets) config->explicit_adds = alpm_list_add(config->explicit_adds, pkg); } - free(file_is_remote); - if(retval) { - trans_release(); - return retval; + goto fail_release; } + free(file_is_remote); + /* now that targets are resolved, we can hand it all off to the sync code */ return sync_prepare_execute(); + +fail_release: + trans_release(); +fail_free: + free(file_is_remote); + + return retval; } /* vim: set noet: */ |