malmond / rpms / rpm

Forked from rpms/rpm 4 years ago
Clone

Blame SOURCES/0004-Use-lower-level-headerPut-for-file-signing.patch

657fb1
From fa25bcaab93cd9f1f90d5ebb0111655b265386dc Mon Sep 17 00:00:00 2001
657fb1
From: Panu Matilainen <pmatilai@redhat.com>
657fb1
Date: Tue, 10 Oct 2017 11:07:38 +0300
657fb1
Subject: [PATCH 04/33] Use lower-level headerPut() for file signing
657fb1
657fb1
Not supposed to affect behavior at all, but we'll need this in the
657fb1
next step.
657fb1
---
657fb1
 sign/rpmsignfiles.c | 19 ++++++++++++++++---
657fb1
 1 file changed, 16 insertions(+), 3 deletions(-)
657fb1
657fb1
diff --git a/sign/rpmsignfiles.c b/sign/rpmsignfiles.c
657fb1
index 61b73bd40..1fc127cb1 100644
657fb1
--- a/sign/rpmsignfiles.c
657fb1
+++ b/sign/rpmsignfiles.c
657fb1
@@ -82,7 +82,7 @@ char *keypass)
657fb1
 
657fb1
 rpmRC rpmSignFiles(Header h, const char *key, char *keypass)
657fb1
 {
657fb1
-    struct rpmtd_s digests;
657fb1
+    struct rpmtd_s digests, td;
657fb1
     int algo;
657fb1
     int diglen;
657fb1
     uint32_t siglen;
657fb1
@@ -110,7 +110,19 @@ rpmRC rpmSignFiles(Header h, const char *key, char *keypass)
657fb1
     headerDel(h, RPMTAG_FILESIGNATURELENGTH);
657fb1
     headerDel(h, RPMTAG_FILESIGNATURES);
657fb1
     siglen = signatureLength(algoname, diglen, key, keypass);
657fb1
-    headerPutUint32(h, RPMTAG_FILESIGNATURELENGTH, &siglen, 1);
657fb1
+
657fb1
+    rpmtdReset(&td);
657fb1
+    td.tag = RPMTAG_FILESIGNATURELENGTH;
657fb1
+    td.type = RPM_INT32_TYPE;
657fb1
+    td.data = &siglen;
657fb1
+    td.count = 1;
657fb1
+    headerPut(h, &td, HEADERPUT_DEFAULT);
657fb1
+
657fb1
+    rpmtdReset(&td);
657fb1
+    td.tag = RPMTAG_FILESIGNATURES;
657fb1
+    td.type = RPM_STRING_ARRAY_TYPE;
657fb1
+    td.data = NULL; /* set in the loop below */
657fb1
+    td.count = 1;
657fb1
 
657fb1
     headerGet(h, RPMTAG_FILEDIGESTS, &digests, HEADERGET_MINMEM);
657fb1
     while ((digest = rpmtdNextString(&digests))) {
657fb1
@@ -120,7 +132,8 @@ rpmRC rpmSignFiles(Header h, const char *key, char *keypass)
657fb1
 	    rc = RPMRC_FAIL;
657fb1
 	    goto exit;
657fb1
 	}
657fb1
-	if (!headerPutString(h, RPMTAG_FILESIGNATURES, signature)) {
657fb1
+	td.data = &signature;
657fb1
+	if (!headerPut(h, &td, HEADERPUT_APPEND)) {
657fb1
 	    free(signature);
657fb1
 	    rpmlog(RPMLOG_ERR, _("headerPutString failed\n"));
657fb1
 	    rc = RPMRC_FAIL;
657fb1
-- 
657fb1
2.13.5
657fb1