|
|
5860f5 |
From 116a6f7105414819944c3347b12a21d2af4a26de Mon Sep 17 00:00:00 2001
|
|
|
5860f5 |
From: Florian Festi <ffesti@redhat.com>
|
|
|
5860f5 |
Date: Mon, 30 Sep 2013 16:08:57 +0200
|
|
|
5860f5 |
Subject: [PATCH 2/2] Move RPMSIGTAG_SIZE vs PMSIGTAG_LONGSIZE detection to
|
|
|
5860f5 |
rpmGenDigest()
|
|
|
5860f5 |
|
|
|
5860f5 |
Fixes problem with rpmSign() only using RPMSIGTAG_SIZE
|
|
|
5860f5 |
Fixes rh#1012595 for now as we are only moving to PMSIGTAG_LONGSIZE when needed
|
|
|
5860f5 |
---
|
|
|
5860f5 |
build/pack.c | 5 +----
|
|
|
5860f5 |
lib/signature.c | 32 ++++++++++++++++----------------
|
|
|
5860f5 |
2 files changed, 17 insertions(+), 20 deletions(-)
|
|
|
5860f5 |
|
|
|
5860f5 |
diff --git a/build/pack.c b/build/pack.c
|
|
|
5860f5 |
index 40bf9dc..81eee37 100644
|
|
|
5860f5 |
--- a/build/pack.c
|
|
|
5860f5 |
+++ b/build/pack.c
|
|
|
5860f5 |
@@ -257,7 +257,6 @@ static rpmRC writeRPM(Package pkg, unsigned char ** pkgidp,
|
|
|
5860f5 |
int xx;
|
|
|
5860f5 |
rpmRC rc = RPMRC_OK;
|
|
|
5860f5 |
struct rpmtd_s td;
|
|
|
5860f5 |
- rpmTagVal sizetag;
|
|
|
5860f5 |
rpmTagVal payloadtag;
|
|
|
5860f5 |
|
|
|
5860f5 |
if (pkgidp)
|
|
|
5860f5 |
@@ -377,13 +376,11 @@ static rpmRC writeRPM(Package pkg, unsigned char ** pkgidp,
|
|
|
5860f5 |
* such a package.
|
|
|
5860f5 |
*/
|
|
|
5860f5 |
if (pkg->cpioArchiveSize < UINT32_MAX) {
|
|
|
5860f5 |
- sizetag = RPMSIGTAG_SIZE;
|
|
|
5860f5 |
payloadtag = RPMSIGTAG_PAYLOADSIZE;
|
|
|
5860f5 |
} else {
|
|
|
5860f5 |
- sizetag = RPMSIGTAG_LONGSIZE;
|
|
|
5860f5 |
payloadtag = RPMSIGTAG_LONGARCHIVESIZE;
|
|
|
5860f5 |
}
|
|
|
5860f5 |
- (void) rpmGenDigest(sig, sigtarget, sizetag);
|
|
|
5860f5 |
+ (void) rpmGenDigest(sig, sigtarget, RPMSIGTAG_SIZE);
|
|
|
5860f5 |
(void) rpmGenDigest(sig, sigtarget, RPMSIGTAG_MD5);
|
|
|
5860f5 |
|
|
|
5860f5 |
if (SHA1) {
|
|
|
5860f5 |
diff --git a/lib/signature.c b/lib/signature.c
|
|
|
5860f5 |
index 4acce7a..f17e47f 100644
|
|
|
5860f5 |
--- a/lib/signature.c
|
|
|
5860f5 |
+++ b/lib/signature.c
|
|
|
5860f5 |
@@ -347,24 +347,24 @@ int rpmGenDigest(Header sigh, const char * file, rpmTagVal sigTag)
|
|
|
5860f5 |
int ret = -1; /* assume failure. */
|
|
|
5860f5 |
|
|
|
5860f5 |
switch (sigTag) {
|
|
|
5860f5 |
- case RPMSIGTAG_SIZE: {
|
|
|
5860f5 |
- rpm_off_t size;
|
|
|
5860f5 |
+ case RPMSIGTAG_SIZE:
|
|
|
5860f5 |
+ case RPMSIGTAG_LONGSIZE:
|
|
|
5860f5 |
if (stat(file, &st) != 0)
|
|
|
5860f5 |
break;
|
|
|
5860f5 |
- size = st.st_size;
|
|
|
5860f5 |
- if (!sighdrPut(sigh, sigTag, RPM_INT32_TYPE, &size, 1))
|
|
|
5860f5 |
- break;
|
|
|
5860f5 |
- ret = 0;
|
|
|
5860f5 |
- } break;
|
|
|
5860f5 |
- case RPMSIGTAG_LONGSIZE: {
|
|
|
5860f5 |
- rpm_loff_t size;
|
|
|
5860f5 |
- if (stat(file, &st) != 0)
|
|
|
5860f5 |
- break;
|
|
|
5860f5 |
- size = st.st_size;
|
|
|
5860f5 |
- if (!sighdrPut(sigh, sigTag, RPM_INT64_TYPE, &size, 1))
|
|
|
5860f5 |
- break;
|
|
|
5860f5 |
- ret = 0;
|
|
|
5860f5 |
- } break;
|
|
|
5860f5 |
+ if (st.st_size>UINT32_MAX || sigTag==RPMSIGTAG_LONGSIZE) {
|
|
|
5860f5 |
+ rpm_loff_t size;
|
|
|
5860f5 |
+ size = st.st_size;
|
|
|
5860f5 |
+ if (!sighdrPut(sigh, RPMSIGTAG_LONGSIZE, RPM_INT64_TYPE, &size, 1))
|
|
|
5860f5 |
+ break;
|
|
|
5860f5 |
+ ret = 0;
|
|
|
5860f5 |
+ } else {
|
|
|
5860f5 |
+ rpm_off_t size;
|
|
|
5860f5 |
+ size = st.st_size;
|
|
|
5860f5 |
+ if (!sighdrPut(sigh, RPMSIGTAG_SIZE, RPM_INT32_TYPE, &size, 1))
|
|
|
5860f5 |
+ break;
|
|
|
5860f5 |
+ ret = 0;
|
|
|
5860f5 |
+ }
|
|
|
5860f5 |
+ break;
|
|
|
5860f5 |
case RPMSIGTAG_MD5:
|
|
|
5860f5 |
pktlen = 16;
|
|
|
5860f5 |
pkt = xcalloc(pktlen, sizeof(*pkt));
|
|
|
5860f5 |
--
|
|
|
5860f5 |
1.8.3.1
|
|
|
5860f5 |
|