RPM Community Forums

Mailing List Message of <rpm-cvs>

[CVS] RPM: rpm/ CHANGES rpm/lib/ depends.c rpm/rpmio/ rpmpgp.c rpmpgp....

From: Ralf S. Engelschall <rse@rpm5.org>
Date: Wed 26 Dec 2007 - 11:40:45 CET
Message-Id: <20071226104045.A038134845E@rpm5.org>
  RPM Package Manager, CVS Repository
  http://rpm5.org/cvs/
  ____________________________________________________________________________

  Server: rpm5.org                         Name:   Ralf S. Engelschall
  Root:   /v/rpm/cvs                       Email:  rse@rpm5.org
  Module: rpm                              Date:   26-Dec-2007 11:40:45
  Branch: HEAD                             Handle: 2007122610404401

  Modified files:
    rpm                     CHANGES
    rpm/lib                 depends.c
    rpm/rpmio               rpmpgp.c rpmpgp.h

  Log:
    Support arbitrary hash algorithm via the originally intended syntax
    "digest([<algorithm>:]/path) = hex". The default still is "md5", of
    course.

  Summary:
    Revision    Changes     Path
    1.2019      +1  -0      rpm/CHANGES
    1.373       +15 -3      rpm/lib/depends.c
    2.82        +15 -0      rpm/rpmio/rpmpgp.c
    2.66        +9  -0      rpm/rpmio/rpmpgp.h
  ____________________________________________________________________________

  patch -p0 <<'@@ .'
  Index: rpm/CHANGES
  ============================================================================
  $ cvs diff -u -r1.2018 -r1.2019 CHANGES
  --- rpm/CHANGES	26 Dec 2007 10:32:07 -0000	1.2018
  +++ rpm/CHANGES	26 Dec 2007 10:40:44 -0000	1.2019
  @@ -1,4 +1,5 @@
   5.0b3 -> 5.0b4:
  +    - rse: support arbitrary hash algorithm via the originally intended syntax "digest([<algorithm>:]/path) = hex"
       - rse: compare MD5 hex value on "digest(/path) = hex" dependency case-insensitive to be less restrictive in syntax
       - rse: merge scripts/lua-dump.lua directly into lua/local/llocal.lua to make it always easily available
       - rse: add local Lua functions util.rmatch() and util.rsubst() for regex matching/substitution
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/lib/depends.c
  ============================================================================
  $ cvs diff -u -r1.372 -r1.373 depends.c
  --- rpm/lib/depends.c	26 Dec 2007 09:58:41 -0000	1.372
  +++ rpm/lib/depends.c	26 Dec 2007 10:40:45 -0000	1.373
  @@ -781,11 +781,23 @@
   
       if (NSType == RPMNS_TYPE_DIGEST) {
   	const char * EVR = rpmdsEVR(dep);
  -	FD_t fd = Fopen(Name, "r.fdio");
  -
  +        const char *filename;
  +        pgpHashAlgo digestHashAlgo;
  +        FD_t fd;
  +        char *cp;
  +        int algo;
  +
  +        filename = Name;
  +        digestHashAlgo = PGPHASHALGO_MD5;
  +        if ((cp = strchr(filename, ':')) != NULL) {
  +            if ((algo = pgpHashAlgoStringToNumber(filename, cp-filename)) != -1) {
  +                digestHashAlgo = algo;
  +                filename = cp + 1;
  +            }
  +        }
   	rc = 1;		/* XXX assume failure */
  +        fd = Fopen(filename, "r.fdio");
   	if (fd && !Ferror(fd)) {
  -	    pgpHashAlgo digestHashAlgo = PGPHASHALGO_MD5;
   	    DIGEST_CTX ctx = rpmDigestInit(digestHashAlgo, RPMDIGEST_NONE);
   	    const char * digest = NULL;
   	    size_t digestlen = 0;
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/rpmio/rpmpgp.c
  ============================================================================
  $ cvs diff -u -r2.81 -r2.82 rpmpgp.c
  --- rpm/rpmio/rpmpgp.c	12 Dec 2007 02:21:09 -0000	2.81
  +++ rpm/rpmio/rpmpgp.c	26 Dec 2007 10:40:45 -0000	2.82
  @@ -1461,3 +1461,18 @@
       return val;
   /*@=globstate@*/
   }
  +
  +int pgpHashAlgoStringToNumber(const char *name, size_t name_len)
  +{
  +    int i;
  +
  +    if (name == NULL)
  +        return -1;
  +    if (name_len == 0)
  +        name_len = strlen(name);
  +    for (i = 0; i < sizeof(pgpHashTbl)/sizeof(pgpHashTbl[0]); i++)
  +        if (xstrncasecmp(name, pgpHashTbl[i].str, name_len) == 0)
  +            return pgpHashTbl[i].val;
  +    return -1;
  +}
  +
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/rpmio/rpmpgp.h
  ============================================================================
  $ cvs diff -u -r2.65 -r2.66 rpmpgp.h
  --- rpm/rpmio/rpmpgp.h	8 Dec 2007 16:30:50 -0000	2.65
  +++ rpm/rpmio/rpmpgp.h	26 Dec 2007 10:40:45 -0000	2.66
  @@ -1440,6 +1440,15 @@
   char * pgpArmorWrap(int atype, const unsigned char * s, size_t ns)
   	/*@*/;
   
  +/** \ingroup rpmpgp
  + * Convert a hash algorithm <name> to the internal PGPHASHALGO_<name> number
  + * @param name		name of hash algorithm
  + * @param name_len		length of name or 0 for strlen(name)
  + * @return		PGPHASHALGO_<name> or -1 in case of error
  + */
  +int pgpHashAlgoStringToNumber(const char *name, size_t name_len)
  +	/*@*/;
  +
   /**
    * Disabler bits(s) for signature/digest checking.
    */
  @@ .
Received on Wed Dec 26 11:40:45 2007
Driven by Jeff Johnson and the RPM project team.
Hosted by OpenPKG and Ralf S. Engelschall.
Powered by FreeBSD and OpenPKG.