Blame SOURCES/0010-Fix-memory-leak-in-util_internal_token_name.patch

d4b2f2
From 5d2554ed31fa6bc121d94efe533f9e4fea3900aa Mon Sep 17 00:00:00 2001
d4b2f2
From: Rob Crittenden <rcritten@redhat.com>
d4b2f2
Date: Thu, 4 Oct 2018 08:21:35 -0400
d4b2f2
Subject: [PATCH 10/17] Fix memory leak in util_internal_token_name()
d4b2f2
d4b2f2
Allocate memory using the talloc context instead of relying on
d4b2f2
the caller to call free().
d4b2f2
---
d4b2f2
 src/certread-n.c | 2 +-
d4b2f2
 src/certsave-n.c | 2 +-
d4b2f2
 src/keygen-n.c   | 2 +-
d4b2f2
 src/keyiread-n.c | 2 +-
d4b2f2
 src/submit-n.c   | 2 +-
d4b2f2
 src/util-n.c     | 2 +-
d4b2f2
 6 files changed, 6 insertions(+), 6 deletions(-)
d4b2f2
d4b2f2
diff --git a/src/certread-n.c b/src/certread-n.c
d4b2f2
index 1d9217c6..d535030b 100644
d4b2f2
--- a/src/certread-n.c
d4b2f2
+++ b/src/certread-n.c
d4b2f2
@@ -191,7 +191,7 @@ cm_certread_n_main(int fd, struct cm_store_ca *ca, struct cm_store_entry *entry,
d4b2f2
 		_exit(CM_SUB_STATUS_ERROR_AUTH);
d4b2f2
 	}
d4b2f2
 	if (entry->cm_cert_token == NULL) {
d4b2f2
-		entry->cm_cert_token = util_internal_token_name();
d4b2f2
+		entry->cm_cert_token = talloc_strdup(entry, util_internal_token_name());
d4b2f2
 	}
d4b2f2
 	PK11_SetPasswordFunc(&cm_pin_read_for_cert_nss_cb);
d4b2f2
 	for (sle = slotlist->head;
d4b2f2
diff --git a/src/certsave-n.c b/src/certsave-n.c
d4b2f2
index fcb43148..49b28324 100644
d4b2f2
--- a/src/certsave-n.c
d4b2f2
+++ b/src/certsave-n.c
d4b2f2
@@ -215,7 +215,7 @@ cm_certsave_n_main(int fd, struct cm_store_ca *ca, struct cm_store_entry *entry,
d4b2f2
 		}
d4b2f2
 		PK11_SetPasswordFunc(&cm_pin_read_for_cert_nss_cb);
d4b2f2
 		if (entry->cm_cert_token == NULL) {
d4b2f2
-			entry->cm_cert_token = util_internal_token_name();
d4b2f2
+			entry->cm_cert_token = talloc_strdup(entry, util_internal_token_name());
d4b2f2
 		}
d4b2f2
 		for (sle = slotlist->head;
d4b2f2
 		     ((sle != NULL) && (sle->slot != NULL));
d4b2f2
diff --git a/src/keygen-n.c b/src/keygen-n.c
d4b2f2
index f7fdf6c0..76a5c1d3 100644
d4b2f2
--- a/src/keygen-n.c
d4b2f2
+++ b/src/keygen-n.c
d4b2f2
@@ -273,7 +273,7 @@ cm_keygen_n_main(int fd, struct cm_store_ca *ca, struct cm_store_entry *entry,
d4b2f2
 		_exit(CM_SUB_STATUS_ERROR_NO_TOKEN);
d4b2f2
 	}
d4b2f2
 	if (entry->cm_cert_token == NULL) {
d4b2f2
-		entry->cm_cert_token = util_internal_token_name();
d4b2f2
+		entry->cm_cert_token = talloc_strdup(entry, util_internal_token_name());
d4b2f2
 	}
d4b2f2
 	/* Walk the list looking for the requested slot, or the first one if
d4b2f2
 	 * none was requested. */
d4b2f2
diff --git a/src/keyiread-n.c b/src/keyiread-n.c
d4b2f2
index b8408bf1..8f46ec0f 100644
d4b2f2
--- a/src/keyiread-n.c
d4b2f2
+++ b/src/keyiread-n.c
d4b2f2
@@ -153,7 +153,7 @@ cm_keyiread_n_get_keys(struct cm_store_entry *entry, int readwrite)
d4b2f2
 	}
d4b2f2
 	PK11_SetPasswordFunc(&cm_pin_read_for_cert_nss_cb);
d4b2f2
 	if (entry->cm_key_token == NULL) {
d4b2f2
-		entry->cm_key_token = util_internal_token_name();
d4b2f2
+		entry->cm_key_token = talloc_strdup(entry, util_internal_token_name());
d4b2f2
 	}
d4b2f2
 	n_tokens = 0;
d4b2f2
 	pubkey = NULL;
d4b2f2
diff --git a/src/submit-n.c b/src/submit-n.c
d4b2f2
index da07d253..ee6f3105 100644
d4b2f2
--- a/src/submit-n.c
d4b2f2
+++ b/src/submit-n.c
d4b2f2
@@ -347,7 +347,7 @@ cm_submit_n_decrypt_envelope(const unsigned char *envelope,
d4b2f2
 		goto done;
d4b2f2
 	}
d4b2f2
 	if (args->entry->cm_key_token == NULL) {
d4b2f2
-		args->entry->cm_key_token = util_internal_token_name();
d4b2f2
+		args->entry->cm_key_token = talloc_strdup(args->entry, util_internal_token_name());
d4b2f2
 	}
d4b2f2
 	PK11_SetPasswordFunc(&cm_pin_read_for_cert_nss_cb);
d4b2f2
 	n_tokens = 0;
d4b2f2
diff --git a/src/util-n.c b/src/util-n.c
d4b2f2
index 293e2583..4ab3d47b 100644
d4b2f2
--- a/src/util-n.c
d4b2f2
+++ b/src/util-n.c
d4b2f2
@@ -291,5 +291,5 @@ util_set_db_entry_cert_owner(const char *dbdir, struct cm_store_entry *entry)
d4b2f2
 char *
d4b2f2
 util_internal_token_name()
d4b2f2
 {
d4b2f2
-	return strdup(PK11_GetTokenName(PK11_GetInternalKeySlot()));
d4b2f2
+	return PK11_GetTokenName(PK11_GetInternalKeySlot());
d4b2f2
 }
d4b2f2
-- 
d4b2f2
2.14.4
d4b2f2