Gentoo Archives: gentoo-commits

From: Fabian Groffen <grobian@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] proj/portage-utils:master commit in: /
Date: Sun, 19 Jan 2020 16:37:27
Message-Id: 1579451816.5996186e46b4ae4156b2b9bf4ebc022e7039a02f.grobian@gentoo
1 commit: 5996186e46b4ae4156b2b9bf4ebc022e7039a02f
2 Author: Fabian Groffen <grobian <AT> gentoo <DOT> org>
3 AuthorDate: Sun Jan 19 16:36:56 2020 +0000
4 Commit: Fabian Groffen <grobian <AT> gentoo <DOT> org>
5 CommitDate: Sun Jan 19 16:36:56 2020 +0000
6 URL: https://gitweb.gentoo.org/proj/portage-utils.git/commit/?id=5996186e
7
8 qmanifest: fix Coverity 206559 Resource leak
9
10 Signed-off-by: Fabian Groffen <grobian <AT> gentoo.org>
11
12 qmanifest.c | 15 ++++++++-------
13 1 file changed, 8 insertions(+), 7 deletions(-)
14
15 diff --git a/qmanifest.c b/qmanifest.c
16 index d9452a4..de4bf9b 100644
17 --- a/qmanifest.c
18 +++ b/qmanifest.c
19 @@ -570,6 +570,7 @@ generate_dir(const char *dir, enum type_manifest mtype)
20 } else if (mtype == CATEGORY_MANIFEST) {
21 const char *mfest;
22 gzFile mf;
23 + const char *ret = str_manifest_gz;
24
25 snprintf(path, sizeof(path), "%s/%s", dir, str_manifest_gz);
26 if ((mf = gzopen(path, "wb9")) == NULL) {
27 @@ -596,13 +597,13 @@ generate_dir(const char *dir, enum type_manifest mtype)
28 if (mfest == NULL) {
29 fprintf(stderr, "generating Manifest for %s failed!\n",
30 path);
31 - gzclose(mf);
32 - return NULL;
33 + tv[0].tv_sec = 0;
34 + ret = NULL;
35 + } else {
36 + snprintf(path, sizeof(path), "%s/%s",
37 + dentries[i], mfest);
38 + write_hashes(tv, dir, path, "MANIFEST", NULL, mf);
39 }
40 -
41 - snprintf(path, sizeof(path), "%s/%s",
42 - dentries[i], mfest);
43 - write_hashes(tv, dir, path, "MANIFEST", NULL, mf);
44 } else if (s.st_mode & S_IFREG) {
45 write_hashes(tv, dir, dentries[i], "DATA", NULL, mf);
46 } /* ignore other "things" (like symlinks) as they
47 @@ -624,7 +625,7 @@ generate_dir(const char *dir, enum type_manifest mtype)
48 utimes(dir, tv);
49 }
50
51 - return str_manifest_gz;
52 + return ret;
53 } else if (mtype == EBUILD_MANIFEST) {
54 char newmanifest[8192];
55 FILE *m;