A couple of fixes picked from upstream. --- ./lib/rpminstall.c.orig 2010-04-08 12:35:48.000000000 +0000 +++ ./lib/rpminstall.c 2010-04-08 12:36:00.000000000 +0000 @@ -458,7 +458,7 @@ restart: case URL_IS_HTTPS: case URL_IS_HTTP: case URL_IS_FTP: - { char *tfn; + { char *tfn = NULL; FD_t tfd; if (rpmIsVerbose()) --- ./lib/transaction.c.orig 2010-04-08 12:33:22.000000000 +0000 +++ ./lib/transaction.c 2010-04-08 12:35:00.000000000 +0000 @@ -183,6 +183,10 @@ static void rpmtsUpdateDSI(const rpmts t if (fixupSize) dsi->bneeded -= BLOCK_ROUND(fixupSize, dsi->bsize); + + /* adjust bookkeeping when requirements shrink */ + if (dsi->bneeded < dsi->obneeded) dsi->obneeded = dsi->bneeded; + if (dsi->ineeded < dsi->oineeded) dsi->oineeded = dsi->ineeded; } static void rpmtsFindDSIMount(const rpmts ts, rpmDiskSpaceInfo dsi) @@ -231,7 +235,7 @@ static void rpmtsCheckDSIProblems(const for (; dsi->bsize; dsi++) { if (dsi->bavail >= 0 && adj_fs_blocks(dsi->bneeded) > dsi->bavail) { - if (dsi->bneeded != dsi->obneeded) { + if (dsi->bneeded > dsi->obneeded) { if (!dsi->mntPoint) rpmtsFindDSIMount(ts, dsi); rpmpsAppend(ps, RPMPROB_DISKSPACE, @@ -243,7 +247,7 @@ static void rpmtsCheckDSIProblems(const } if (dsi->iavail >= 0 && adj_fs_blocks(dsi->ineeded) > dsi->iavail) { - if (dsi->ineeded != dsi->oineeded) { + if (dsi->ineeded > dsi->oineeded) { if (!dsi->mntPoint) rpmtsFindDSIMount(ts, dsi); rpmpsAppend(ps, RPMPROB_DISKNODES, --- ./lib/verify.c.orig 2010-04-08 12:36:09.000000000 +0000 +++ ./lib/verify.c 2010-04-08 12:37:37.000000000 +0000 @@ -348,7 +348,7 @@ static int verifyHeader(QVA_t qva, const static const char *const aok = "."; static const char *const unknown = "?"; - ec = (verifyResult != 0); + if (verifyResult) ec = 1; #define _verify(_RPMVERIFY_F, _C) \ ((verifyResult & _RPMVERIFY_F) ? _C : aok)