Author: glen Date: Mon Jun 8 09:31:49 2009 GMT Module: packages Tag: rpm-4_5 ---- Log message: - add padding for signatures so that rpm's do not have to be rewritten when signatures are added note: rpm addsign doesn't support such signing yet
---- Files affected: packages/rpm: rpm-sigpad.patch (NONE -> 1.1.2.1) (NEW) ---- Diffs: ================================================================ Index: packages/rpm/rpm-sigpad.patch diff -u /dev/null packages/rpm/rpm-sigpad.patch:1.1.2.1 --- /dev/null Mon Jun 8 11:31:49 2009 +++ packages/rpm/rpm-sigpad.patch Mon Jun 8 11:31:44 2009 @@ -0,0 +1,39 @@ + - jbj: reserve ~1K in RPMSIGTAG_PADDING for now. + - jbj: add RPMSIGTAG_PADDING to force metadata header alignment in file. +--- rpm-4.5/build/pack.c 2007-12-17 00:28:09.000000000 +0200 ++++ rpm-4.5-sigpad/build/pack.c 2009-06-08 12:29:50.225343621 +0300 +@@ -702,6 +702,22 @@ + goto exit; + } + ++ /* Pad the signature header to put the metadata header at known offset. */ ++ { size_t slen = headerSizeof(sig, HEADER_MAGIC_YES); ++ void * uh = headerUnload(sig); ++ static const size_t align = 1024; ++ size_t nb = align - 96 - 16 - 8; ++ unsigned char * b; ++ ++ uh = _free(uh); ++assert(slen < nb); ++ nb -= slen; ++ b = memset(alloca(nb), 0, nb); ++ (void) headerAddEntry(sig, RPMSIGTAG_PADDING, RPM_BIN_TYPE, b, nb); ++ sig = headerReload(sig, RPMTAG_HEADERSIGNATURES); ++assert(sig != NULL); ++ } ++ + /* Open the output file */ + fd = Fopen(fileName, "w"); + if (fd == NULL || Ferror(fd)) { +--- rpm-4.5/lib/rpmlib.h 2008-06-10 02:19:16.000000000 +0300 ++++ rpm-4.5-sigpad/lib/rpmlib.h 2009-06-08 12:29:50.225343621 +0300 +@@ -1058,7 +1058,8 @@ + RPMSIGTAG_BADSHA1_2 = RPMTAG_BADSHA1_2, /*!< internal Broken SHA1, take 2. */ + RPMSIGTAG_SHA1 = RPMTAG_SHA1HEADER, /*!< internal sha1 header digest. */ + RPMSIGTAG_DSA = RPMTAG_DSAHEADER, /*!< internal DSA header signature. */ +- RPMSIGTAG_RSA = RPMTAG_RSAHEADER /*!< internal RSA header signature. */ ++ RPMSIGTAG_RSA = RPMTAG_RSAHEADER, /*!< internal RSA header signature. */ ++ RPMSIGTAG_PADDING = 0x3fffffff /*!< signature header padding */ + }; + + /** \ingroup signature ================================================================ _______________________________________________ pld-cvs-commit mailing list pld-cvs-commit@lists.pld-linux.org http://lists.pld-linux.org/mailman/listinfo/pld-cvs-commit