aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFabian Groffen <grobian@gentoo.org>2019-05-06 08:40:33 +0200
committerFabian Groffen <grobian@gentoo.org>2019-05-06 08:40:33 +0200
commitbaed7caa2b6e56545b5f3c29da7bc13c7658d0a8 (patch)
tree97d4a049fa2dbb2f71c84e2518c447923f6f30b6
parentqdepends: allow custom formatting (diff)
downloadportage-utils-baed7caa2b6e56545b5f3c29da7bc13c7658d0a8.tar.gz
portage-utils-baed7caa2b6e56545b5f3c29da7bc13c7658d0a8.tar.bz2
portage-utils-baed7caa2b6e56545b5f3c29da7bc13c7658d0a8.zip
qkeyword: correctly handle missing metadata.xml or email fields
- if metadata.xml is absent, don't crash - if metadata.xml didn't contain an email, don't match as result Bug: https://bugs.gentoo.org/685132 Signed-off-by: Fabian Groffen <grobian@gentoo.org>
-rw-r--r--qkeyword.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/qkeyword.c b/qkeyword.c
index e8fb5d6..ef61fba 100644
--- a/qkeyword.c
+++ b/qkeyword.c
@@ -639,10 +639,17 @@ qkeyword_results_cb(cache_pkg_ctx *pkg_ctx, void *priv)
if (data->qmaint != NULL) {
metadata = cache_read_metadata(pkg_ctx);
+ if (metadata == NULL)
+ return EXIT_SUCCESS;
+
for (emailw = metadata->email; emailw != NULL; emailw = emailw->next) {
if (strcmp(emailw->addr, data->qmaint) != 0)
break;
}
+ if (metadata->email == NULL)
+ /* arbitrary pointer to trigger exit below */
+ emailw = (struct elist *)buf;
+
cache_close_metadata(metadata);
if (emailw != NULL)
return EXIT_SUCCESS;