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