]>
Commit | Line | Data |
---|---|---|
99996533 ER |
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 | |
5 | @@ -702,6 +702,22 @@ | |
6 | goto exit; | |
7 | } | |
8 | ||
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; | |
14 | + unsigned char * b; | |
15 | + | |
16 | + uh = _free(uh); | |
17 | +assert(slen < nb); | |
18 | + nb -= slen; | |
19 | + b = memset(alloca(nb), 0, nb); | |
20 | + (void) headerAddEntry(sig, RPMSIGTAG_PADDING, RPM_BIN_TYPE, b, nb); | |
21 | + sig = headerReload(sig, RPMTAG_HEADERSIGNATURES); | |
22 | +assert(sig != NULL); | |
23 | + } | |
24 | + | |
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 | |
30 | @@ -1058,7 +1058,8 @@ | |
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 */ | |
37 | }; | |
38 | ||
39 | /** \ingroup signature |