From 4c3003d96af1bc145fa66124abdbd29e0a9c682f Mon Sep 17 00:00:00 2001 From: Michael Schroeder Date: Mon, 10 Dec 2012 10:31:32 +0100 Subject: [PATCH] improve error handling in makedeps --- ext/repo_rpmdb.c | 19 ++++++------------- 1 file changed, 6 insertions(+), 13 deletions(-) diff --git a/ext/repo_rpmdb.c b/ext/repo_rpmdb.c index c7b8a15c..c5aa0fc0 100644 --- a/ext/repo_rpmdb.c +++ b/ext/repo_rpmdb.c @@ -450,26 +450,19 @@ makedeps(Pool *pool, Repo *repo, RpmHead *rpmhead, int tagn, int tagv, int tagf, strong = flags & (MAKEDEPS_FILTER_STRONG|MAKEDEPS_FILTER_WEAK); n = headstringarray(rpmhead, tagn, &nc); - if (!n) + if (!n || !nc) return 0; + vc = fc = 0; v = headstringarray(rpmhead, tagv, &vc); - if (!v) - { - solv_free(n); - return 0; - } f = headint32array(rpmhead, tagf, &fc); - if (!f) - { - solv_free(n); - free(v); - return 0; - } - if (nc != vc || nc != fc) + if (!v || !f || nc != vc || nc != fc) { char *pkgname = rpm_query(rpmhead, 0); fprintf(stderr, "bad dependency entries for %s: %d %d %d\n", pkgname ? pkgname : "", nc, vc, fc); solv_free(pkgname); + solv_free(n); + solv_free(v); + solv_free(f); return 0; } -- 2.47.2