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:   26-Jan-2010 16:06:13
  Branch: HEAD                             Handle: 2010012615061201

  Modified files:
    rpm                     CHANGES
    rpm/js                  rpmbf-js.c
    rpm/lib                 depends.c
    rpm/rpmdb               db3.c rpmdb.c
    rpm/rpmio               rpmbf.c rpmbf.h

  Log:
    - rpmbf: fix: return -1 error on NULL pointers.

  Summary:
    Revision    Changes     Path
    1.3258      +1  -0      rpm/CHANGES
    1.10        +7  -5      rpm/js/rpmbf-js.c
    1.455       +1  -1      rpm/lib/depends.c
    1.146       +1  -1      rpm/rpmdb/db3.c
    1.379       +9  -4      rpm/rpmdb/rpmdb.c
    2.8         +31 -8      rpm/rpmio/rpmbf.c
    2.7         +6  -7      rpm/rpmio/rpmbf.h
  ____________________________________________________________________________

  patch -p0 <<'@@ .'
  Index: rpm/CHANGES
  ============================================================================
  $ cvs diff -u -r1.3257 -r1.3258 CHANGES
  --- rpm/CHANGES       18 Jan 2010 23:59:42 -0000      1.3257
  +++ rpm/CHANGES       26 Jan 2010 15:06:12 -0000      1.3258
  @@ -1,5 +1,6 @@
   
   5.2b1 -> 5.3a1
  +    - jbj: rpmbf: fix: return -1 error on NULL pointers.
       - jbj: gpsee: finish refactoring gsr -> rpmjs.c.
       - jbj: gpsee: more refactoring gsr -> rpmjs.c.
       - jbj: poptIO: add _rpmio_posix_context_flags before adding arg 
everywhere.
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/js/rpmbf-js.c
  ============================================================================
  $ cvs diff -u -r1.9 -r1.10 rpmbf-js.c
  --- rpm/js/rpmbf-js.c 10 Jan 2010 18:29:12 -0000      1.9
  +++ rpm/js/rpmbf-js.c 26 Jan 2010 15:06:12 -0000      1.10
  @@ -29,11 +29,11 @@
   
   _METHOD_DEBUG_ENTRY(_debug);
   
  +    *rval = JSVAL_FALSE;
       if (!(ok = JS_ConvertArguments(cx, argc, argv, "s", &_s)))
           goto exit;
   
  -    (void) rpmbfAdd(bf, _s, 0);
  -    *rval = JSVAL_TRUE;              /* XXX return s? */
  +    *rval = (rpmbfAdd(bf, _s, 0) == 0 ? JSVAL_TRUE : JSVAL_FALSE);
       ok = JS_TRUE;
   exit:
       return ok;
  @@ -49,10 +49,11 @@
   
   _METHOD_DEBUG_ENTRY(_debug);
   
  +    *rval = JSVAL_FALSE;
       if (!(ok = JS_ConvertArguments(cx, argc, argv, "s", &_s)))
           goto exit;
   
  -    *rval = (rpmbfChk(bf, _s, 0) ? JSVAL_TRUE : JSVAL_FALSE);
  +    *rval = (rpmbfChk(bf, _s, 0) > 0 ? JSVAL_TRUE : JSVAL_FALSE);
       ok = JS_TRUE;
   exit:
       return ok;
  @@ -67,7 +68,7 @@
   
   _METHOD_DEBUG_ENTRY(_debug);
   
  -    *rval = (rpmbfClr(bf) ? JSVAL_FALSE : JSVAL_TRUE);
  +    *rval = (rpmbfClr(bf) == 0 ? JSVAL_TRUE : JSVAL_FALSE);
       ok = JS_TRUE;
       return ok;
   }
  @@ -82,10 +83,11 @@
   
   _METHOD_DEBUG_ENTRY(_debug);
   
  +    *rval = JSVAL_FALSE;
       if (!(ok = JS_ConvertArguments(cx, argc, argv, "s", &_s)))
           goto exit;
   
  -    *rval = (rpmbfDel(bf, _s, 0) ? JSVAL_FALSE : JSVAL_TRUE);
  +    *rval = (rpmbfDel(bf, _s, 0) == 0 ? JSVAL_TRUE : JSVAL_FALSE);
       ok = JS_TRUE;
   exit:
       return ok;
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/lib/depends.c
  ============================================================================
  $ cvs diff -u -r1.454 -r1.455 depends.c
  --- rpm/lib/depends.c 17 Dec 2009 04:00:13 -0000      1.454
  +++ rpm/lib/depends.c 26 Jan 2010 15:06:12 -0000      1.455
  @@ -2146,7 +2146,7 @@
       if (*N == '/') {
        rpmfi fi = rpmteFI(p, RPMTAG_BASENAMES);
        rpmbf bf = rpmfiBloomFN(fi);
  -     if (rpmbfChk(bf, N, strlen(N)))
  +     if (rpmbfChk(bf, N, strlen(N)) > 0)
            return 0;
       }
   
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/rpmdb/db3.c
  ============================================================================
  $ cvs diff -u -r1.145 -r1.146 db3.c
  --- rpm/rpmdb/db3.c   2 Jan 2010 01:19:46 -0000       1.145
  +++ rpm/rpmdb/db3.c   26 Jan 2010 15:06:13 -0000      1.146
  @@ -1923,7 +1923,7 @@
                    continue;
   
                /* Don't add identical (key,val) item to secondary. */
  -             if (rpmbfChk(bf, s, ns))
  +             if (rpmbfChk(bf, s, ns) > 0)
                    continue;
                (void) rpmbfAdd(bf, s, ns);
   
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/rpmdb/rpmdb.c
  ============================================================================
  $ cvs diff -u -r1.378 -r1.379 rpmdb.c
  --- rpm/rpmdb/rpmdb.c 4 Jan 2010 13:29:16 -0000       1.378
  +++ rpm/rpmdb/rpmdb.c 26 Jan 2010 15:06:13 -0000      1.379
  @@ -1341,6 +1341,8 @@
       av = argvFree(av);
       b = _free(b);
       mire = mireFree(mire);
  +if (_rpmmi_debug || dbi->dbi_debug)
  +fprintf(stderr, "<-- %s(%p, %s(%u), %d, %p, %p, %p) rc %d %p[%u]\n", 
__FUNCTION__, db, tagName(tag), (unsigned)tag, mode, pat, matches, argvp, ret, 
(matches ? (*matches)->recs : NULL), (matches ? (*matches)->count : 0));
       return ret;
   }
   
  @@ -1604,7 +1606,10 @@
   uint32_t rpmmiInstance(rpmmi mi)
   {
       /* Get a native endian copy of the primary package key. */
  -    return _ntoh_ui(mi ? mi->mi_offset : 0);
  +    uint32_t rc = _ntoh_ui(mi ? mi->mi_offset : 0);
  +if (_rpmmi_debug)
  +fprintf(stderr, "<-- %s(%p) rc %u\n", __FUNCTION__, mi, (unsigned)rc);
  +    return rc;
   }
   
   unsigned int rpmmiCount(rpmmi mi) {
  @@ -2147,7 +2152,7 @@
   
        /* Should this header be skipped? */
        if (mi->mi_bf != NULL
  -      && rpmbfChk(mi->mi_bf, &mi->mi_offset, sizeof(mi->mi_offset)))
  +      && rpmbfChk(mi->mi_bf, &mi->mi_offset, sizeof(mi->mi_offset)) > 0)
            goto next;
   
        /* Fetch header by offset. */
  @@ -2197,7 +2202,7 @@
   
       /* Should this header be skipped? */
       if (mi->mi_set == NULL && mi->mi_bf != NULL
  -     && rpmbfChk(mi->mi_bf, &mi->mi_offset, sizeof(mi->mi_offset)))
  +     && rpmbfChk(mi->mi_bf, &mi->mi_offset, sizeof(mi->mi_offset)) > 0)
        goto next;
   
       uh = v.data;
  @@ -2373,7 +2378,7 @@
       (void)rpmioLinkPoolItem((rpmioItem)mi, __FUNCTION__, __FILE__, __LINE__);
   
   if (_rpmmi_debug || (dbi && dbi->dbi_debug))
  -fprintf(stderr, "--> %s(%p, %s, %p[%u]=\"%s\") dbi %p mi %p\n", 
__FUNCTION__, db, tagName(tag), keyp, (unsigned)keylen, (keylen == 0 ? (const 
char *)keyp : "???"), dbi, mi);
  +fprintf(stderr, "--> %s(%p, %s, %p[%u]=\"%s\") dbi %p mi %p\n", 
__FUNCTION__, db, tagName(tag), keyp, (unsigned)keylen, (keylen == 0 || ((const 
char *)keyp)[keylen] == '\0' ? (const char *)keyp : "???"), dbi, mi);
   
       /* Chain cursors for teardown on abnormal exit. */
       mi->mi_next = rpmmiRock;
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/rpmio/rpmbf.c
  ============================================================================
  $ cvs diff -u -r2.7 -r2.8 rpmbf.c
  --- rpm/rpmio/rpmbf.c 17 Dec 2009 03:48:37 -0000      2.7
  +++ rpm/rpmio/rpmbf.c 26 Jan 2010 15:06:13 -0000      2.8
  @@ -71,6 +71,8 @@
       rpmuint32_t h0 = 0;
       rpmuint32_t h1 = 0;
   
  +    if (bf == NULL) return -1;
  +
       if (ns == 0) ns = strlen(s);
       jlu32lpair(s, ns, &h0, &h1);
   
  @@ -92,6 +94,8 @@
       rpmuint32_t h1 = 0;
       int rc = 1;
   
  +    if (bf == NULL) return -1;
  +
       if (ns == 0) ns = strlen(s);
       jlu32lpair(s, ns, &h0, &h1);
   
  @@ -110,9 +114,14 @@
   
   int rpmbfClr(rpmbf bf)
   {
  -    __pbm_bits * bits = __PBM_BITS(bf);
       static size_t nbw = (__PBM_NBITS/8);
  -    size_t nw = (__PBM_IX(bf->m-1) + 1);
  +    __pbm_bits * bits;
  +    size_t nw;
  +
  +    if (bf == NULL) return -1;
  +
  +    bits = __PBM_BITS(bf);
  +    nw = (__PBM_IX(bf->m-1) + 1);
       memset(bits, 0, nw * nbw);
       bf->n = 0;
   if (_rpmbf_debug)
  @@ -126,6 +135,8 @@
       rpmuint32_t h0 = 0;
       rpmuint32_t h1 = 0;
   
  +    if (bf == NULL) return -1;
  +
       if (ns == 0) ns = strlen(s);
   assert(ns > 0);
       jlu32lpair(s, ns, &h0, &h1);
  @@ -144,11 +155,17 @@
   
   int rpmbfIntersect(rpmbf a, const rpmbf b)
   {
  -    __pbm_bits * abits = __PBM_BITS(a);
  -    __pbm_bits * bbits = __PBM_BITS(b);
  -    size_t nw = (__PBM_IX(a->m-1) + 1);
  +    __pbm_bits * abits;
  +    __pbm_bits * bbits;
  +    size_t nw;
       size_t i;
   
  +    if (a == NULL || b == NULL) return -1;
  +
  +    abits = __PBM_BITS(a);
  +    bbits = __PBM_BITS(b);
  +    nw = (__PBM_IX(a->m-1) + 1);
  +
       if (!(a->m == b->m && a->k == b->k))
        return -1;
       for (i = 0; i < nw; i++)
  @@ -161,11 +178,17 @@
   
   int rpmbfUnion(rpmbf a, const rpmbf b)
   {
  -    __pbm_bits * abits = __PBM_BITS(a);
  -    __pbm_bits * bbits = __PBM_BITS(b);
  -    size_t nw = (__PBM_IX(a->m-1) + 1);
  +    __pbm_bits * abits;
  +    __pbm_bits * bbits;
  +    size_t nw;
       size_t i;
   
  +    if (a == NULL || b == NULL) return -1;
  +
  +    abits = __PBM_BITS(a);
  +    bbits = __PBM_BITS(b);
  +    nw = (__PBM_IX(a->m-1) + 1);
  +
       if (!(a->m == b->m && a->k == b->k))
        return -1;
       for (i = 0; i < nw; i++)
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/rpmio/rpmbf.h
  ============================================================================
  $ cvs diff -u -r2.6 -r2.7 rpmbf.h
  --- rpm/rpmio/rpmbf.h 17 Dec 2009 03:48:37 -0000      2.6
  +++ rpm/rpmio/rpmbf.h 26 Jan 2010 15:06:13 -0000      2.7
  @@ -134,7 +134,7 @@
    * @param bf         Bloom filter
    * @param *_s                bytes
    * @param ns         no. bytes (0 uses strlen)
  - * @return           0 always
  + * @return           0 on success, -1 on NULL pointer
    */
   int rpmbfAdd(rpmbf bf, const void * _s, size_t ns)
        /*...@modifies bf @*/;
  @@ -142,7 +142,7 @@
   /**
    * Clear a Bloom filter, discarding all set memberships.
    * @param bf         Bloom filter
  - * @return           0 always
  + * @return           0 on success, -1 on NULL pointer
    */
   int rpmbfClr(rpmbf bf)
        /*...@modifies bf @*/;
  @@ -152,7 +152,7 @@
    * @param bf         Bloom filter
    * @param *_s                bytes
    * @param ns         no. bytes (0 uses strlen)
  - * @return           1 if string is present, 0 if not
  + * @return           1 if string is present, 0 if not, -1 on NULL pointer
    */
   int rpmbfChk(rpmbf bf, const void * _s, size_t ns)
        /*...@modifies bf @*/;
  @@ -163,7 +163,7 @@
    * @param bf         Bloom filter
    * @param *_s                bytes
    * @param ns         no. bytes (0 will do strlen)
  - * @return           0 always
  + * @return           0 on success, -1 on NULL pointer
    */
   int rpmbfDel(rpmbf bf, const void * _s, size_t ns)
        /*...@modifies bf @*/;
  @@ -172,7 +172,7 @@
    * Return intersection of two Bloom filters.
    * @retval a         Bloom filter
    * @param b          Bloom filter
  - * @return           0 on success, -1 if {m,k} disagree.
  + * @return           0 on success, -1 if {m,k} disagree or NULL pointers.
    */
   int rpmbfIntersect(rpmbf a, const rpmbf b)
        /*...@modifies a @*/;
  @@ -181,7 +181,7 @@
    * Return union of two Bloom filters.
    * @retval a         Bloom filter
    * @param b          Bloom filter
  - * @return           0 on success, -1 if {m,k} disagree.
  + * @return           0 on success, -1 if {m,k} disagree or NULL pointers.
    */
   int rpmbfUnion(rpmbf a, const rpmbf b)
        /*...@modifies a @*/;
  @@ -192,7 +192,6 @@
    * @param e          probability of error
    * @retval *mp               no. of bits
    * @retval *kp               no. of hashes
  - * @return           0 on success, -1 if {m,k} disagree.
    */
   void rpmbfParams(size_t n, double e, size_t * mp, size_t * kp)
        /*...@modifies *mp, *kp @*/;
  @@ .
______________________________________________________________________
RPM Package Manager                                    http://rpm5.org
CVS Sources Repository                                rpm-cvs@rpm5.org

Reply via email to