From: Panu Matilainen Date: Wed, 21 Mar 2012 07:07:21 +0000 (+0200) Subject: Transaction element file info can be legally NULL in some cases X-Git-Tag: rpm-4.11.0-alpha~475 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=2f20f6e6b2cc6f26794678d1db16659c484a001c;p=platform%2Fupstream%2Frpm.git Transaction element file info can be legally NULL in some cases - rpmteClose() will wipe out the file info to free memory, we only should care whether we failed to (re)load the file info. This thinko in commit 06a2f1269b035a3a76464149834f2a5a8c4e89f2 broke %posttrans scriptlets (and without commit 274dbf557d1cac90f7c278f9b6d6af05997d92df, %pretrans in other circumstances), whoopsie *blush*. Now, off to write a test-case for our scriptlet behavior... --- diff --git a/lib/rpmte.c b/lib/rpmte.c index 65e1e76..65d65af 100644 --- a/lib/rpmte.c +++ b/lib/rpmte.c @@ -693,11 +693,12 @@ static int rpmteOpen(rpmte te, int reload_fi) } if (h != NULL) { if (reload_fi) { + /* This can fail if we get a different, bad header from callback */ te->fi = getFI(te, h); + rc = (te->fi != NULL); + } else { + rc = 1; } - - /* This can fail if we get a different, bad header from callback */ - rc = (te->fi != NULL); rpmteSetHeader(te, h); headerFree(h);