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:   22-Oct-2007 03:59:31
  Branch: HEAD                             Handle: 2007102202593001

  Modified files:
    rpm                     CHANGES
    rpm/lib                 rpmchecksig.c

  Log:
    - jbj: rpmchecksig.c: wrap headerAddEntry. headerAddOrAppend next ...

  Summary:
    Revision    Changes     Path
    1.1752      +1  -0      rpm/CHANGES
    1.162       +122 -39    rpm/lib/rpmchecksig.c
  ____________________________________________________________________________

  patch -p0 <<'@@ .'
  Index: rpm/CHANGES
  ============================================================================
  $ cvs diff -u -r1.1751 -r1.1752 CHANGES
  --- rpm/CHANGES       22 Oct 2007 01:06:05 -0000      1.1751
  +++ rpm/CHANGES       22 Oct 2007 01:59:30 -0000      1.1752
  @@ -1,4 +1,5 @@
   4.5 -> 5.0:
  +    - jbj: rpmchecksig.c: wrap headerAddEntry. headerAddOrAppend next ...
       - jbj: rpmfc.c: wrap headerAddEntry.
       - jbj: psm.c: wrap headerAddEntry.
       - jbj: hmm, still segfaults, more to do.
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/lib/rpmchecksig.c
  ============================================================================
  $ cvs diff -u -r1.161 -r1.162 rpmchecksig.c
  --- rpm/lib/rpmchecksig.c     19 Oct 2007 00:36:44 -0000      1.161
  +++ rpm/lib/rpmchecksig.c     22 Oct 2007 01:59:31 -0000      1.162
  @@ -178,6 +178,7 @@
                   fileSystem, internalState @*/
   {
       HGE_t hge = (HGE_t)headerGetExtension;
  +    HAE_t hae = (HAE_t)headerAddEntry;
       HE_t he = memset(alloca(sizeof(*he)), 0, sizeof(*he));
       rpmgi gi = NULL;
       FD_t fd = NULL;
  @@ -265,11 +266,8 @@
        he->tag = RPMTAG_HEADERSIGNATURES;
        xx = hge(sigh, he, 0);
        if (xx) {
  +         HE_t ohe = memset(alloca(sizeof(*ohe)), 0, sizeof(*ohe));
            HeaderIterator hi;
  -         int_32 htag;
  -         rpmTagType type;
  -         int_32 count;
  -         hPTR_t ptr;
            Header oh;
            Header nh;
   
  @@ -281,11 +279,13 @@
   
            oh = headerCopyLoad(he->p.ptr);
            for (hi = headerInitIterator(oh);
  -             headerNextIterator(hi, &htag, &type, &ptr, &count);
  -             ptr = headerFreeData(ptr, type))
  +             headerNextIterator(hi, &ohe->tag, &ohe->t, &ohe->p, &ohe->c);
  +             ohe->p.ptr = headerFreeData(ohe->p.ptr, ohe->t))
            {
  -             if (ptr)
  -                 xx = headerAddEntry(nh, htag, type, ptr, count);
  +             if (ohe->p.ptr) {
  +                 xx = hae(nh, ohe->tag, ohe->t, ohe->p.ptr, ohe->c);
  +assert(xx);
  +             }
            }
            hi = headerFreeIterator(hi);
            oh = headerFree(oh);
  @@ -456,6 +456,8 @@
   
   rpmRC rpmcliImportPubkey(const rpmts ts, const unsigned char * pkt, ssize_t 
pktlen)
   {
  +    HAE_t hae = (HAE_t)headerAddEntry;
  +    HE_t he = memset(alloca(sizeof(*he)), 0, sizeof(*he));
       static unsigned char zeros[] =
        { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
       const char * afmt = "%{pubkeys:armor}";
  @@ -522,50 +524,131 @@
       /* Build pubkey header. */
       h = headerNew();
   
  -    xx = headerAddOrAppendEntry(h, RPMTAG_PUBKEYS,
  -                     RPM_STRING_ARRAY_TYPE, &enc, 1);
  +    he->tag = RPMTAG_PUBKEYS;
  +    he->t = RPM_STRING_ARRAY_TYPE;
  +    he->p.argv = &enc;
  +    he->c = 1;
  +    he->append = 1;
  +    xx = headerAddOrAppendEntry(h, he->tag, he->t, he->p.ptr, he->c);
  +assert(xx);
  +    he->append = 0;
   
       d = headerSprintf(h, afmt, rpmTagTable, rpmHeaderFormats, NULL);
       if (d == NULL)
        goto exit;
   
  -    xx = headerAddEntry(h, RPMTAG_NAME, RPM_STRING_TYPE, "gpg-pubkey", 1);
  -    xx = headerAddEntry(h, RPMTAG_VERSION, RPM_STRING_TYPE, v+8, 1);
  -    xx = headerAddEntry(h, RPMTAG_RELEASE, RPM_STRING_TYPE, r, 1);
  -    xx = headerAddEntry(h, RPMTAG_DESCRIPTION, RPM_STRING_TYPE, d, 1);
  -    xx = headerAddEntry(h, RPMTAG_GROUP, RPM_STRING_TYPE, group, 1);
  -    xx = headerAddEntry(h, RPMTAG_LICENSE, RPM_STRING_TYPE, license, 1);
  -    xx = headerAddEntry(h, RPMTAG_SUMMARY, RPM_STRING_TYPE, u, 1);
  -
  -    xx = headerAddEntry(h, RPMTAG_SIZE, RPM_INT32_TYPE, &zero, 1);
  -
  -    xx = headerAddOrAppendEntry(h, RPMTAG_PROVIDENAME,
  -                     RPM_STRING_ARRAY_TYPE, &u, 1);
  -    xx = headerAddOrAppendEntry(h, RPMTAG_PROVIDEVERSION,
  -                     RPM_STRING_ARRAY_TYPE, &evr, 1);
  -    xx = headerAddOrAppendEntry(h, RPMTAG_PROVIDEFLAGS,
  -                     RPM_INT32_TYPE, &pflags, 1);
  -
  -    xx = headerAddOrAppendEntry(h, RPMTAG_PROVIDENAME,
  -                     RPM_STRING_ARRAY_TYPE, &n, 1);
  -    xx = headerAddOrAppendEntry(h, RPMTAG_PROVIDEVERSION,
  -                     RPM_STRING_ARRAY_TYPE, &evr, 1);
  -    xx = headerAddOrAppendEntry(h, RPMTAG_PROVIDEFLAGS,
  -                     RPM_INT32_TYPE, &pflags, 1);
  -
  -    xx = headerAddEntry(h, RPMTAG_RPMVERSION, RPM_STRING_TYPE, RPMVERSION, 
1);
  +    he->t = RPM_STRING_TYPE;
  +    he->c = 1;
  +    he->tag = RPMTAG_NAME;
  +    he->p.str = "gpg-pubkey";
  +    xx = hae(h, he->tag, he->t, he->p.ptr, he->c);
  +assert(xx);
  +    he->tag = RPMTAG_VERSION;
  +    he->p.str = v+8;
  +    xx = hae(h, he->tag, he->t, he->p.ptr, he->c);
  +assert(xx);
  +    he->tag = RPMTAG_RELEASE;
  +    he->p.str = r;
  +    xx = hae(h, he->tag, he->t, he->p.ptr, he->c);
  +assert(xx);
  +    he->tag = RPMTAG_DESCRIPTION;
  +    he->p.str = d;
  +    xx = hae(h, he->tag, he->t, he->p.ptr, he->c);
  +assert(xx);
  +    he->tag = RPMTAG_GROUP;
  +    he->p.str = group;
  +    xx = hae(h, he->tag, he->t, he->p.ptr, he->c);
  +assert(xx);
  +    he->tag = RPMTAG_LICENSE;
  +    he->p.str = license;
  +    xx = hae(h, he->tag, he->t, he->p.ptr, he->c);
  +assert(xx);
  +    he->tag = RPMTAG_SUMMARY;
  +    he->p.str = u;
  +    xx = hae(h, he->tag, he->t, he->p.ptr, he->c);
  +assert(xx);
  +
  +    he->tag = RPMTAG_SIZE;
  +    he->t = RPM_INT32_TYPE;
  +    he->p.i32p = &zero;
  +    he->c = 1;
  +    xx = hae(h, he->tag, he->t, he->p.ptr, he->c);
  +assert(xx);
  +
  +    he->append = 1;
  +
  +    he->tag = RPMTAG_PROVIDENAME;
  +    he->t = RPM_STRING_ARRAY_TYPE;
  +    he->p.argv = &u;
  +    he->c = 1;
  +    xx = headerAddOrAppendEntry(h, he->tag, he->t, he->p.ptr, he->c);
  +    he->tag = RPMTAG_PROVIDEVERSION;
  +    he->t = RPM_STRING_ARRAY_TYPE;
  +    he->p.argv = &evr;
  +    he->c = 1;
  +    xx = headerAddOrAppendEntry(h, he->tag, he->t, he->p.ptr, he->c);
  +    he->tag = RPMTAG_PROVIDEFLAGS;
  +    he->t = RPM_INT32_TYPE;
  +    he->p.i32p = &pflags;
  +    he->c = 1;
  +    xx = headerAddOrAppendEntry(h, he->tag, he->t, he->p.ptr, he->c);
  +
  +    he->tag = RPMTAG_PROVIDENAME;
  +    he->t = RPM_STRING_ARRAY_TYPE;
  +    he->p.argv = &n;
  +    he->c = 1;
  +    xx = headerAddOrAppendEntry(h, he->tag, he->t, he->p.ptr, he->c);
  +    he->tag = RPMTAG_PROVIDEVERSION;
  +    he->t = RPM_STRING_ARRAY_TYPE;
  +    he->p.argv = &evr;
  +    he->c = 1;
  +    xx = headerAddOrAppendEntry(h, he->tag, he->t, he->p.ptr, he->c);
  +    he->tag = RPMTAG_PROVIDEFLAGS;
  +    he->t = RPM_INT32_TYPE;
  +    he->p.i32p = &pflags;
  +    he->c = 1;
  +    xx = headerAddOrAppendEntry(h, he->tag, he->t, he->p.ptr, he->c);
  +
  +    he->append = 0;
  +
  +    he->tag = RPMTAG_RPMVERSION;
  +    he->t = RPM_STRING_TYPE;
  +    he->p.str = RPMVERSION;
  +    he->c = 1;
  +    xx = hae(h, he->tag, he->t, he->p.ptr, he->c);
  +assert(xx);
   
       /* XXX W2DO: tag value inheirited from parent? */
  -    xx = headerAddEntry(h, RPMTAG_BUILDHOST, RPM_STRING_TYPE, buildhost, 1);
  +    he->tag = RPMTAG_BUILDHOST;
  +    he->t = RPM_STRING_TYPE;
  +    he->p.str = buildhost;
  +    he->c = 1;
  +    xx = hae(h, he->tag, he->t, he->p.ptr, he->c);
  +assert(xx);
       {   int_32 tid = rpmtsGetTid(ts);
  -     xx = headerAddEntry(h, RPMTAG_INSTALLTIME, RPM_INT32_TYPE, &tid, 1);
  +     he->tag = RPMTAG_INSTALLTIME;
  +     he->t = RPM_INT32_TYPE;
  +     he->p.i32p = &tid;
  +     he->c = 1;
  +     xx = hae(h, he->tag, he->t, he->p.ptr, he->c);
  +assert(xx);
        /* XXX W2DO: tag value inheirited from parent? */
  -     xx = headerAddEntry(h, RPMTAG_BUILDTIME, RPM_INT32_TYPE, &tid, 1);
  +     he->tag = RPMTAG_BUILDTIME;
  +     he->t = RPM_INT32_TYPE;
  +     he->p.i32p = &tid;
  +     he->c = 1;
  +     xx = hae(h, he->tag, he->t, he->p.ptr, he->c);
  +assert(xx);
       }
   
   #ifdef       NOTYET
       /* XXX W2DO: tag value inheirited from parent? */
  -    xx = headerAddEntry(h, RPMTAG_SOURCERPM, RPM_STRING_TYPE, fn, 1);
  +    he->tag = RPMTAG_SOURCERPM;
  +    he->t = RPM_STRING_TYPE;
  +    he->p.str = fn;
  +    he->c = 1;
  +    xx = hae(h, he->tag, he->t, he->p.ptr, he->c);
  +assert(xx);
   #endif
   
       /* Add header to database. */
  @@ .
______________________________________________________________________
RPM Package Manager                                    http://rpm5.org
CVS Sources Repository                                rpm-cvs@rpm5.org

Reply via email to