commit: af1d54e9a8bf517e566091a8c60762ebfcb534d7
Author: Fabian Groffen <grobian <AT> gentoo <DOT> org>
AuthorDate: Tue Jan 2 13:07:45 2024 +0000
Commit: Fabian Groffen <grobian <AT> gentoo <DOT> org>
CommitDate: Tue Jan 2 13:07:45 2024 +0000
URL: https://gitweb.gentoo.org/proj/portage-utils.git/commit/?id=af1d54e9
qmerge: fix Coverity 190455 Argument cannot be negative
Handle case where image dir somehow could not be opened.
Signed-off-by: Fabian Groffen <grobian <AT> gentoo.org>
qmerge.c | 7 +++++--
1 file changed, 5 insertions(+), 2 deletions(-)
diff --git a/qmerge.c b/qmerge.c
index b16b4b5..8924a37 100644
--- a/qmerge.c
+++ b/qmerge.c
@@ -1411,10 +1411,12 @@ pkg_merge(int level, const depend_atom *qatom, const
tree_match_ctx *mpkg)
int imagefd = open("image", O_RDONLY);
size_t masklen = strlen(install_mask) + 1 +
15 + 1 + 14 + 1 + 14 + 1 + 1; /* worst case
scenario */
- char *imask = xmalloc(masklen);
+ char *imask;
size_t maskp;
- if (fstat(imagefd, &st) == -1) {
+ if (imagefd == -1) {
+ err("Failed to open image dir");
+ } else if (fstat(imagefd, &st) == -1) {
close(imagefd);
err("Cannot stat image dirfd");
} else if (eprefix != NULL && eprefix[0] == '/') {
@@ -1425,6 +1427,7 @@ pkg_merge(int level, const depend_atom *qatom, const
tree_match_ctx *mpkg)
}
}
+ imask = xmalloc(masklen);
/* rely on INSTALL_MASK code to remove optional dirs */
maskp = snprintf(imask, masklen, "%s ", install_mask);
if (contains_set("noinfo", features))