RPM Package Manager, CVS Repository http://rpm5.org/cvs/ ____________________________________________________________________________
Server: rpm5.org Name: Jeff Johnson Root: /v/rpm/cvs Email: j...@rpm5.org Module: rpm Date: 10-Sep-2014 22:08:13 Branch: rpm-5_4 Handle: 2014091020081101 Modified files: (Branch: rpm-5_4) rpm/lib depends.c rpmts.c Log: - clang: fix -fsanitize=integer issues. Summary: Revision Changes Path 1.461.4.9 +13 -1 rpm/lib/depends.c 2.188.2.11 +19 -4 rpm/lib/rpmts.c ____________________________________________________________________________ patch -p0 <<'@@ .' Index: rpm/lib/depends.c ============================================================================ $ cvs diff -u -r1.461.4.8 -r1.461.4.9 depends.c --- rpm/lib/depends.c 25 Jun 2013 16:59:07 -0000 1.461.4.8 +++ rpm/lib/depends.c 10 Sep 2014 20:08:11 -0000 1.461.4.9 @@ -58,7 +58,13 @@ { const uint32_t * aptr = (const uint32_t *) a; const uint32_t * bptr = (const uint32_t *) b; - int rc = (*aptr - *bptr); + int rc; + if (*aptr > *bptr) + rc = 1; + else if (*aptr < *bptr) + rc = -1; + else + rc = 0; return rc; } @@ -562,6 +568,8 @@ int rc; int oc; +if (_rpmts_debug) +fprintf(stderr, "--> %s(%p,%p,%p,%d,%p)\n", __FUNCTION__, ts, h, key, upgrade, relocs); hcolor = hGetColor(h); pkgKey = RPMAL_NOMATCH; @@ -814,6 +822,8 @@ arch = _free(arch); os = _free(os); pi = rpmtsiFree(pi); +if (_rpmts_debug) +fprintf(stderr, "<-- %s(%p,%p,%p,%d,%p) rc %d\n", __FUNCTION__, ts, h, key, upgrade, relocs, ec); return ec; } @@ -826,6 +836,8 @@ ts->teErase = ts->order[oc]; } else ts->teErase = NULL; +if (_rpmts_debug) +fprintf(stderr, "<-- %s(%p,%p,%d) rc %d\n", __FUNCTION__, ts, h, hdrNum, rc); return rc; } @@ . patch -p0 <<'@@ .' Index: rpm/lib/rpmts.c ============================================================================ $ cvs diff -u -r2.188.2.10 -r2.188.2.11 rpmts.c --- rpm/lib/rpmts.c 3 Sep 2014 19:30:41 -0000 2.188.2.10 +++ rpm/lib/rpmts.c 10 Sep 2014 20:08:12 -0000 2.188.2.11 @@ -171,6 +171,8 @@ /* Remove configured secondary indices. */ switch (dbiTags->tag) { +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wswitch" case RPMDBI_PACKAGES: case RPMDBI_AVAILABLE: case RPMDBI_ADDED: @@ -182,6 +184,7 @@ case RPMDBI_QUEUE: case RPMDBI_RECNO: continue; +#pragma clang diagnostic pop /*@notreached@*/ /*@switchbreak@*/ break; default: fn = rpmGetPath(db->db_root, db->db_home, "/", @@ -1231,20 +1234,32 @@ */ case FA_CREATE: dsi->bneeded += bneeded; - dsi->bneeded -= BLOCK_ROUND(prevSize, dsi->f_bsize); + bneeded = BLOCK_ROUND(prevSize, dsi->f_bsize); + if (dsi->bneeded > bneeded) + dsi->bneeded -= bneeded; + else + dsi->bneeded = 0; /*@switchbreak@*/ break; case FA_ERASE: dsi->ineeded--; - dsi->bneeded -= bneeded; + if (dsi->bneeded > bneeded) + dsi->bneeded -= bneeded; + else + dsi->bneeded = 0; /*@switchbreak@*/ break; default: /*@switchbreak@*/ break; } - if (fixupSize) - dsi->bneeded -= BLOCK_ROUND(fixupSize, dsi->f_bsize); + if (fixupSize) { + bneeded = BLOCK_ROUND(fixupSize, dsi->f_bsize); + if (dsi->bneeded > bneeded) + dsi->bneeded -= bneeded; + else + dsi->bneeded = 0; + } } void rpmtsCheckDSIProblems(const rpmts ts, const rpmte te) @@ . ______________________________________________________________________ RPM Package Manager http://rpm5.org CVS Sources Repository rpm-cvs@rpm5.org