malmond / rpms / rpm

Forked from rpms/rpm 4 years ago
Clone

Blame SOURCES/0007-Assume-failure-in-rpmSignFiles.patch

657fb1
From 83d623cd684ae424cf0c804d7a141981f283f5c4 Mon Sep 17 00:00:00 2001
657fb1
From: Panu Matilainen <pmatilai@redhat.com>
657fb1
Date: Tue, 10 Oct 2017 14:43:58 +0300
657fb1
Subject: [PATCH 07/33] Assume failure in rpmSignFiles()
657fb1
657fb1
Doesn't make it any shorter yet, but makes more sense in the next steps.
657fb1
Just refactoring.
657fb1
---
657fb1
 sign/rpmsignfiles.c | 16 ++++++++--------
657fb1
 1 file changed, 8 insertions(+), 8 deletions(-)
657fb1
657fb1
diff --git a/sign/rpmsignfiles.c b/sign/rpmsignfiles.c
657fb1
index 2dcc50400..c1d227a07 100644
657fb1
--- a/sign/rpmsignfiles.c
657fb1
+++ b/sign/rpmsignfiles.c
657fb1
@@ -88,23 +88,24 @@ rpmRC rpmSignFiles(Header sigh, Header h, const char *key, char *keypass)
657fb1
     uint32_t siglen;
657fb1
     const char *algoname;
657fb1
     const char *digest;
657fb1
-    char *signature;
657fb1
-    rpmRC rc = RPMRC_OK;
657fb1
+    char *signature = NULL;
657fb1
+    rpmRC rc = RPMRC_FAIL;
657fb1
 
657fb1
+    rpmtdReset(&digests);
657fb1
     algo = headerGetNumber(h, RPMTAG_FILEDIGESTALGO);
657fb1
     if (!algo) {
657fb1
         /* use default algorithm */
657fb1
         algo = PGPHASHALGO_MD5;
657fb1
     } else if (algo < 0 || algo >= ARRAY_SIZE(hash_algo_name)) {
657fb1
 	rpmlog(RPMLOG_ERR, _("File digest algorithm id is invalid"));
657fb1
-	return RPMRC_FAIL;
657fb1
+	goto exit;
657fb1
     }
657fb1
 
657fb1
     diglen = rpmDigestLength(algo);
657fb1
     algoname = hash_algo_name[algo];
657fb1
     if (!algoname) {
657fb1
 	rpmlog(RPMLOG_ERR, _("hash_algo_name failed\n"));
657fb1
-	return RPMRC_FAIL;
657fb1
+	goto exit;
657fb1
     }
657fb1
 
657fb1
     headerDel(sigh, RPMTAG_FILESIGNATURELENGTH);
657fb1
@@ -129,20 +130,19 @@ rpmRC rpmSignFiles(Header sigh, Header h, const char *key, char *keypass)
657fb1
 	signature = signFile(algoname, digest, diglen, key, keypass);
657fb1
 	if (!signature) {
657fb1
 	    rpmlog(RPMLOG_ERR, _("signFile failed\n"));
657fb1
-	    rc = RPMRC_FAIL;
657fb1
 	    goto exit;
657fb1
 	}
657fb1
 	td.data = &signature;
657fb1
 	if (!headerPut(sigh, &td, HEADERPUT_APPEND)) {
657fb1
-	    free(signature);
657fb1
 	    rpmlog(RPMLOG_ERR, _("headerPutString failed\n"));
657fb1
-	    rc = RPMRC_FAIL;
657fb1
 	    goto exit;
657fb1
 	}
657fb1
-	free(signature);
657fb1
+	signature = _free(signature);
657fb1
     }
657fb1
+    rc = RPMRC_OK;
657fb1
 
657fb1
 exit:
657fb1
+    free(signature);
657fb1
     rpmtdFreeData(&digests);
657fb1
     return rc;
657fb1
 }
657fb1
-- 
657fb1
2.13.5
657fb1