From: Michael Schroeder Date: Mon, 10 Dec 2012 09:31:32 +0000 (+0100) Subject: improve error handling in makedeps X-Git-Tag: BASE-SuSE-Code-12_3-Branch~122 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=4c3003d96af1bc145fa66124abdbd29e0a9c682f;p=thirdparty%2Flibsolv.git improve error handling in makedeps --- 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; }