From 213ce1a72bc82cc643d3fd169f68ccb370132948 Mon Sep 17 00:00:00 2001 From: Juan RP Date: Mon, 20 Apr 2020 10:34:08 +0200 Subject: [PATCH] xbps-rindex/remove-obsoletes.c: fix CID 284947 (Resource leak). --- bin/xbps-rindex/remove-obsoletes.c | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/bin/xbps-rindex/remove-obsoletes.c b/bin/xbps-rindex/remove-obsoletes.c index 5ae9ccd2..eba4ee82 100644 --- a/bin/xbps-rindex/remove-obsoletes.c +++ b/bin/xbps-rindex/remove-obsoletes.c @@ -131,16 +131,14 @@ remove_obsoletes(struct xbps_handle *xhp, const char *repodir) if (chdir(repodir) == -1) { fprintf(stderr, "xbps-rindex: cannot chdir to %s: %s\n", repodir, strerror(errno)); - free(repo); - if(stage) - free(stage); - return errno; + rv = errno; + goto out; } if ((dirp = opendir(repodir)) == NULL) { fprintf(stderr, "xbps-rindex: failed to open %s: %s\n", repodir, strerror(errno)); - free(repo); - return errno; + rv = errno; + goto out; } while ((dp = readdir(dirp))) { if (strcmp(dp->d_name, "..") == 0) @@ -159,9 +157,9 @@ remove_obsoletes(struct xbps_handle *xhp, const char *repodir) repos[0] = repo; repos[1] = stage; rv = xbps_array_foreach_cb_multi(xhp, array, NULL, cleaner_cb, repos); +out: xbps_repo_release(repo); - if(stage) - xbps_repo_release(stage); + xbps_repo_release(stage); xbps_object_release(array); return rv;