1 - jbj: reserve ~1K in RPMSIGTAG_PADDING for now.
2 - jbj: add RPMSIGTAG_PADDING to force metadata header alignment in file.
3 --- rpm-4.5/build/pack.c 2007-12-17 00:28:09.000000000 +0200
4 +++ rpm-4.5-sigpad/build/pack.c 2009-06-08 12:29:50.225343621 +0300
9 + /* Pad the signature header to put the metadata header at known offset. */
10 + { size_t slen = headerSizeof(sig, HEADER_MAGIC_YES);
11 + void * uh = headerUnload(sig);
12 + static const size_t align = 1024;
13 + size_t nb = align - 96 - 16 - 8;
19 + b = memset(alloca(nb), 0, nb);
20 + (void) headerAddEntry(sig, RPMSIGTAG_PADDING, RPM_BIN_TYPE, b, nb);
21 + sig = headerReload(sig, RPMTAG_HEADERSIGNATURES);
25 /* Open the output file */
26 fd = Fopen(fileName, "w");
27 if (fd == NULL || Ferror(fd)) {
28 --- rpm-4.5/lib/rpmlib.h 2008-06-10 02:19:16.000000000 +0300
29 +++ rpm-4.5-sigpad/lib/rpmlib.h 2009-06-08 12:29:50.225343621 +0300
31 RPMSIGTAG_BADSHA1_2 = RPMTAG_BADSHA1_2, /*!< internal Broken SHA1, take 2. */
32 RPMSIGTAG_SHA1 = RPMTAG_SHA1HEADER, /*!< internal sha1 header digest. */
33 RPMSIGTAG_DSA = RPMTAG_DSAHEADER, /*!< internal DSA header signature. */
34 - RPMSIGTAG_RSA = RPMTAG_RSAHEADER /*!< internal RSA header signature. */
35 + RPMSIGTAG_RSA = RPMTAG_RSAHEADER, /*!< internal RSA header signature. */
36 + RPMSIGTAG_PADDING = 0x3fffffff /*!< signature header padding */
39 /** \ingroup signature