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:   04-Apr-2009 18:37:40
  Branch: HEAD                             Handle: 2009040416373901

  Modified files:
    rpm                     CHANGES macros.in
    rpm/lib                 rpmds.c rpmfi.c

  Log:
    - wire-up RPMTAG_FILEDIGESTALGO. wotta waste to pretend "compatible"
    ...

  Summary:
    Revision    Changes     Path
    1.2896      +1  -0      rpm/CHANGES
    2.143       +3  -0      rpm/lib/rpmds.c
    2.147       +29 -18     rpm/lib/rpmfi.c
    1.281       +3  -1      rpm/macros.in
  ____________________________________________________________________________

  patch -p0 <<'@@ .'
  Index: rpm/CHANGES
  ============================================================================
  $ cvs diff -u -r1.2895 -r1.2896 CHANGES
  --- rpm/CHANGES       4 Apr 2009 03:38:41 -0000       1.2895
  +++ rpm/CHANGES       4 Apr 2009 16:37:39 -0000       1.2896
  @@ -1,5 +1,6 @@
   
   5.2a3 -> 5.2a4:
  +    - jbj: wire-up RPMTAG_FILEDIGESTALGO. wotta waste to pretend 
"compatible" ...
       - jbj: yaml: add build scriptlet tags for --yaml/--xml display.
       - jbj: yaml: permit --without-syck, add some mac os x AutoFu/gcc 
fiddle-ups.
       - jbj: yaml: add lsyck lua module to parse YAML.
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/lib/rpmds.c
  ============================================================================
  $ cvs diff -u -r2.142 -r2.143 rpmds.c
  --- rpm/lib/rpmds.c   29 Mar 2009 18:42:22 -0000      2.142
  +++ rpm/lib/rpmds.c   4 Apr 2009 16:37:40 -0000       2.143
  @@ -1488,6 +1488,9 @@
       { "rpmlib(FileDigestParameterized)",    "4.4.6-1",
        (RPMSENSE_RPMLIB|RPMSENSE_EQUAL),
       N_("file digests can be other than MD5.") },
  +    { "rpmlib(FileDigests)",    "4.6.0-1",
  +     (RPMSENSE_RPMLIB|RPMSENSE_EQUAL),
  +    N_("file digests can be other than MD5.") },
   #if defined(SUPPORT_AR_PAYLOADS)
       { "rpmlib(PayloadIsAr)",         "5.1-1",
        (RPMSENSE_RPMLIB|RPMSENSE_EQUAL),
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/lib/rpmfi.c
  ============================================================================
  $ cvs diff -u -r2.146 -r2.147 rpmfi.c
  --- rpm/lib/rpmfi.c   31 Mar 2009 19:03:26 -0000      2.146
  +++ rpm/lib/rpmfi.c   4 Apr 2009 16:37:40 -0000       2.147
  @@ -1341,6 +1341,7 @@
       rpmfi fi = NULL;
       const char * Type;
       unsigned char * t;
  +    pgpHashAlgo dalgo;
       int xx;
       int i;
   
  @@ -1448,37 +1449,47 @@
       _fdupedata(h, RPMTAG_FILELINKTOS, fi->flinks);
       _fdupedata(h, RPMTAG_FILELANGS, fi->flangs);
   
  -    fi->digestalgo = PGPHASHALGO_MD5;
  -    fi->digestlen = 16;
  +    dalgo = PGPHASHALGO_ERROR;
       fi->fdigestalgos = NULL;
       _fdupedata(h, RPMTAG_FILEDIGESTALGOS, fi->fdigestalgos);
       if (fi->fdigestalgos) {
  -     rpmuint32_t dalgo = 0;
        /* XXX Insure that all algorithms are either 0 or constant. */
        for (i = 0; i < (int)fi->fc; i++) {
            if (fi->fdigestalgos[i] == 0)
                continue;
  -         if (dalgo == 0)
  -             dalgo = fi->fdigestalgos[i];
  +         if (dalgo == PGPHASHALGO_ERROR)
  +             dalgo = (fi->fdigestalgos[i] & 0xff);
            else
   assert(dalgo == fi->fdigestalgos[i]);
        }
  -     fi->digestalgo = dalgo;
  -     switch (dalgo) {
  -     case PGPHASHALGO_MD5:           fi->digestlen = 128/8;  break;
  -     case PGPHASHALGO_SHA1:          fi->digestlen = 160/8;  break;
  -     case PGPHASHALGO_RIPEMD128:     fi->digestlen = 128/8;  break;
  -     case PGPHASHALGO_RIPEMD160:     fi->digestlen = 160/8;  break;
  -     case PGPHASHALGO_SHA256:        fi->digestlen = 256/8;  break;
  -     case PGPHASHALGO_SHA384:        fi->digestlen = 384/8;  break;
  -     case PGPHASHALGO_SHA512:        fi->digestlen = 512/8;  break;
  -     case PGPHASHALGO_CRC32:         fi->digestlen = 32/8;   break;
  -     }
        fi->fdigestalgos = _free(fi->fdigestalgos);
  +    } else {
  +     he->tag = RPMTAG_FILEDIGESTALGO;
  +     xx = headerGet(h, he, 0);
  +     if (xx)
  +         dalgo = he->p.ui32p[0];
  +     he->p.ptr = _free(he->p.ptr);
  +    }
  +
  +    switch (dalgo) {
  +    default: dalgo = PGPHASHALGO_MD5;        fi->digestlen = 128/8; break;
  +    case PGPHASHALGO_MD2:    fi->digestlen = 128/8;  break;
  +    case PGPHASHALGO_MD5:    fi->digestlen = 128/8;  break;
  +    case PGPHASHALGO_SHA1:   fi->digestlen = 160/8;  break;
  +    case PGPHASHALGO_RIPEMD128:      fi->digestlen = 128/8;  break;
  +    case PGPHASHALGO_RIPEMD160:      fi->digestlen = 160/8;  break;
  +    case PGPHASHALGO_RIPEMD256:      fi->digestlen = 256/8;  break;
  +    case PGPHASHALGO_RIPEMD320:      fi->digestlen = 320/8;  break;
  +    case PGPHASHALGO_SHA224: fi->digestlen = 224/8;  break;
  +    case PGPHASHALGO_SHA256: fi->digestlen = 256/8;  break;
  +    case PGPHASHALGO_SHA384: fi->digestlen = 384/8;  break;
  +    case PGPHASHALGO_SHA512: fi->digestlen = 512/8;  break;
  +    case PGPHASHALGO_CRC32:  fi->digestlen = 32/8;   break;
       }
  +    fi->digestalgo = dalgo;
   
  -    _fdupedata(h, RPMTAG_FILEDIGESTS, fi->fdigests);
       fi->digests = NULL;
  +    _fdupedata(h, RPMTAG_FILEDIGESTS, fi->fdigests);
       if (fi->fdigests) {
        t = xmalloc(fi->fc * fi->digestlen);
        fi->digests = t;
  @@ -1498,7 +1509,7 @@
        fi->fdigests = _free(fi->fdigests);
       }
   
  -    /* XXX TR_REMOVED doesn;t need fmtimes, frdevs, finodes, or fcontexts */
  +    /* XXX TR_REMOVED doesn't need fmtimes, frdevs, finodes, or fcontexts */
       _fdupedata(h, RPMTAG_FILEMTIMES, fi->fmtimes);
       _fdupedata(h, RPMTAG_FILERDEVS, fi->frdevs);
       _fdupedata(h, RPMTAG_FILEINODES, fi->finodes);
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/macros.in
  ============================================================================
  $ cvs diff -u -r1.280 -r1.281 macros.in
  --- rpm/macros.in     16 Mar 2009 22:30:39 -0000      1.280
  +++ rpm/macros.in     4 Apr 2009 16:37:39 -0000       1.281
  @@ -1,7 +1,7 @@
   #/*! \page config_macros Default configuration: @USRLIBRPM@/macros
   # \verbatim
   #
  -# $Id: macros.in,v 1.280 2009/03/16 22:30:39 pkarlsen Exp $
  +# $Id: macros.in,v 1.281 2009/04/04 16:37:39 jbj Exp $
   #
   # This is a global RPM configuration file. All changes made here will
   # be lost when the rpm package is upgraded. Any per-system configuration
  @@ -536,6 +536,8 @@
   #    107     ADLER-32
   #    108     CRC-64 (ECMA-182 polynomial, untested uint64_t problems)
   #    109     Jenkins lookup3.c hashlittle()
  +#    111     RIPEMD-256
  +#    112     RIPEMD-320
   #
   # Note: choosing anything but MD5 introduces instant legacy incompatibility.
   %_build_file_digest_algo     1
  @@ .
______________________________________________________________________
RPM Package Manager                                    http://rpm5.org
CVS Sources Repository                                rpm-cvs@rpm5.org

Reply via email to