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 [email protected]