RPM Package Manager, CVS Repository
  http://rpm5.org/cvs/
  ____________________________________________________________________________

  Server: rpm5.org                         Name:   Jeff Johnson
  Root:   /v/rpm/cvs                       Email:  [email protected]
  Module: rpm                              Date:   15-Dec-2008 01:50:46
  Branch: HEAD                             Handle: 2008121500504600

  Modified files:
    rpm/rpmio               rpmgc.c

  Log:
    - jbj: rpmgc: yet more debugging code.

  Summary:
    Revision    Changes     Path
    2.16        +58 -26     rpm/rpmio/rpmgc.c
  ____________________________________________________________________________

  patch -p0 <<'@@ .'
  Index: rpm/rpmio/rpmgc.c
  ============================================================================
  $ cvs diff -u -r2.15 -r2.16 rpmgc.c
  --- rpm/rpmio/rpmgc.c 14 Dec 2008 15:55:45 -0000      2.15
  +++ rpm/rpmio/rpmgc.c 15 Dec 2008 00:50:46 -0000      2.16
  @@ -30,12 +30,13 @@
   void rpmgcDump(const char * msg, gcry_sexp_t sexp)
        /*...@*/
   {
  -    char buf[BUFSIZ];
  -    size_t nb;
  +    size_t nb = gcry_sexp_sprint(sexp, GCRYSEXP_FMT_ADVANCED, NULL, 0);
  +    char * buf = alloca(nb+1);
   
   /*...@-modunconnomods @*/
  -    nb = gcry_sexp_sprint(sexp, GCRYSEXP_FMT_ADVANCED, buf, sizeof(buf));
  +    nb = gcry_sexp_sprint(sexp, GCRYSEXP_FMT_ADVANCED, buf, nb);
   /*...@=modunconnomods @*/
  +    buf[nb] = '\0';
   /*...@-modfilesys@*/
   if (_pgp_debug)
   fprintf(stderr, "========== %s:\n%s", msg, buf);
  @@ -179,12 +180,10 @@
   assert(sigp->hash_algo == rpmDigestAlgo(ctx));
       xx = rpmDigestFinal(ctx, (void **)&dig->sha1, &dig->sha1len, 0);
   
  -   /* Set DSA hash. */
  -/*...@-moduncon -noeffectuncon @*/
  +    /* Set DSA hash. */
       err = rpmgcErr(gc, "DSA gc->hash",
                gcry_sexp_build(&gc->hash, NULL,
                        "(data (flags raw) (value %b))", dig->sha1len, 
dig->sha1) );
  -/*...@=moduncon =noeffectuncon @*/
   if (_pgp_debug < 0)
   rpmgcDump("gc->hash", gc->hash);
   
  @@ -200,6 +199,7 @@
       gcry_error_t err;
   
   /*...@-moduncon -noeffectuncon @*/
  +
       err = rpmgcErr(gc, "DSA gc->sig",
                gcry_sexp_build(&gc->sig, NULL,
                        "(sig-val (DSA (r %m) (s %m)))", gc->r, gc->s) );
  @@ -219,7 +219,9 @@
       gcry_sexp_release(gc->pkey);     gc->pkey = NULL;
       gcry_sexp_release(gc->hash);     gc->hash = NULL;
       gcry_sexp_release(gc->sig);              gc->sig = NULL;
  +
   /*...@=moduncon -noeffectuncon @*/
  +
       return (err ? 0 : 1);
   }
   
  @@ -257,54 +259,61 @@
        /*...@modifies dig, fileSystem @*/
   {
       rpmgc gc = dig->impl;
  -    size_t nb = ((pgpMpiBits(p) + 7) >> 3) + 2;
  +    size_t nb = pgpMpiLen(p);
  +    const char * mpiname = "";
  +    gcry_mpi_t * mpip = NULL;
       size_t nscan = 0;
       gcry_error_t err;
       int rc = 0;
   
  -/*...@-moduncon -noeffectuncon @*/
       switch (itemno) {
       default:
   assert(0);
        break;
       case 10:         /* RSA m**d */
  -     err = rpmgcErr(gc, "RSA m**d",
  -             gcry_mpi_scan(&gc->c, GCRYMPI_FMT_PGP, p, nb, &nscan) );
  +     mpiname ="RSA m**d";    mpip = &gc->c;
        break;
       case 20:         /* DSA r */
  -     err = rpmgcErr(gc, "DSA r",
  -             gcry_mpi_scan(&gc->r, GCRYMPI_FMT_PGP, p, nb, &nscan) );
  +     mpiname = "DSA r";      mpip = &gc->r;
        break;
       case 21:         /* DSA s */
  -     err = rpmgcErr(gc, "DSA s",
  -             gcry_mpi_scan(&gc->s, GCRYMPI_FMT_PGP, p, nb, &nscan) );
  +     mpiname = "DSA s";      mpip = &gc->s;
        break;
       case 30:         /* RSA n */
  -     err = rpmgcErr(gc, "RSA n",
  -             gcry_mpi_scan(&gc->n, GCRYMPI_FMT_PGP, p, nb, &nscan) );
  +     mpiname = "RSA n";      mpip = &gc->n;
        break;
       case 31:         /* RSA e */
  -     err = rpmgcErr(gc, "RSA e",
  -             gcry_mpi_scan(&gc->e, GCRYMPI_FMT_PGP, p, nb, &nscan) );
  +     mpiname = "RSA e";      mpip = &gc->e;
        break;
       case 40:         /* DSA p */
  -     err = rpmgcErr(gc, "DSA p",
  -             gcry_mpi_scan(&gc->p, GCRYMPI_FMT_PGP, p, nb, &nscan) );
  +     mpiname = "DSA p";      mpip = &gc->p;
        break;
       case 41:         /* DSA q */
  -     err = rpmgcErr(gc, "DSA q",
  -             gcry_mpi_scan(&gc->q, GCRYMPI_FMT_PGP, p, nb, &nscan) );
  +     mpiname = "DSA q";      mpip = &gc->q;
        break;
       case 42:         /* DSA g */
  -     err = rpmgcErr(gc, "DSA g",
  -             gcry_mpi_scan(&gc->g, GCRYMPI_FMT_PGP, p, nb, &nscan) );
  +     mpiname = "DSA g";      mpip = &gc->g;
        break;
       case 43:         /* DSA y */
  -     err = rpmgcErr(gc, "DSA y",
  -             gcry_mpi_scan(&gc->y, GCRYMPI_FMT_PGP, p, nb, &nscan) );
  +     mpiname = "DSA y";      mpip = &gc->y;
        break;
       }
  +
  +/*...@-moduncon -noeffectuncon @*/
  +    err = rpmgcErr(gc, mpiname,
  +             gcry_mpi_scan(mpip, GCRYMPI_FMT_PGP, p, nb, &nscan) );
   /*...@=moduncon =noeffectuncon @*/
  +
  +    if (_pgp_debug < 0)
  +    {        size_t nbits = gcry_mpi_get_nbits(*mpip);
  +     unsigned char * hex = NULL;
  +     size_t nhex = 0;
  +     err = rpmgcErr(gc, "MPI print",
  +             gcry_mpi_aprint(GCRYMPI_FMT_HEX, &hex, &nhex, *mpip) );
  +     fprintf(stderr, "*** %s\t%5d:%s\n", mpiname, nbits, hex);
  +     hex = _free(hex);
  +    }
  +
       return rc;
   }
   /*...@=globuse =mustmod @*/
  @@ -370,13 +379,27 @@
   }
   /*...@=mustmod@*/
   
  +/*...@unchecked@*/
  +static int rpmgc_initialized;
  +
   static /*...@null@*/
   void * rpmgcFree(/*...@only@*/ void * impl)
        /*...@modifies impl @*/
   {
       rpmgc gc = impl;
  +
       rpmgcClean(impl);
  +
  +    if (--rpmgc_initialized == 0 && _pgp_debug < 0) {
  +     gcry_error_t err;
  +     err = rpmgcErr(gc, "CLEAR_DEBUG_FLAGS",
  +             gcry_control(GCRYCTL_CLEAR_DEBUG_FLAGS, 3));
  +     err = rpmgcErr(gc, "SET_VERBOSITY",
  +             gcry_control(GCRYCTL_SET_VERBOSITY, 0) );
  +    }
  +
       gc = _free(gc);
  +
       return NULL;
   }
   
  @@ -385,6 +408,15 @@
        /*...@*/
   {
       rpmgc gc = xcalloc(1, sizeof(*gc));
  +
  +    if (rpmgc_initialized++ == 0 && _pgp_debug < 0) {
  +     gcry_error_t err;
  +     err = rpmgcErr(gc, "SET_VERBOSITY",
  +             gcry_control(GCRYCTL_SET_VERBOSITY, 3) );
  +     err = rpmgcErr(gc, "SET_DEBUG_FLAGS",
  +             gcry_control(GCRYCTL_SET_DEBUG_FLAGS, 3) );
  +    }
  +
       return (void *) gc;
   }
   
  @@ .
______________________________________________________________________
RPM Package Manager                                    http://rpm5.org
CVS Sources Repository                                [email protected]

Reply via email to