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