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; |