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

Reply via email to