changeset 3991:376d3096844b

6538315 KMF should duplicate KMF_X509_NAME records instead of copying ptr values
author haimay
date Fri, 06 Apr 2007 16:51:47 -0700
parents 3dd39d80c307
children a83e2b1abacb
files usr/src/lib/libkmf/ber_der/common/clasn1.c usr/src/lib/libkmf/libkmf/common/certgetsetop.c usr/src/lib/libkmf/libkmf/common/csrcrlop.c
diffstat 3 files changed, 36 insertions(+), 15 deletions(-) [+]
line wrap: on
line diff
--- a/usr/src/lib/libkmf/ber_der/common/clasn1.c	Fri Apr 06 16:49:11 2007 -0700
+++ b/usr/src/lib/libkmf/ber_der/common/clasn1.c	Fri Apr 06 16:51:47 2007 -0700
@@ -258,7 +258,7 @@
 {
 	if (src && dst && src->Data != NULL && src->Length > 0) {
 		dst->Length = src->Length;
-		dst->Data = malloc(sizeof (dst->Length));
+		dst->Data = malloc(dst->Length);
 		if (dst->Data == NULL)
 			return (KMF_ERR_MEMORY);
 		(void) memcpy(dst->Data, src->Data, src->Length);
--- a/usr/src/lib/libkmf/libkmf/common/certgetsetop.c	Fri Apr 06 16:49:11 2007 -0700
+++ b/usr/src/lib/libkmf/libkmf/common/certgetsetop.c	Fri Apr 06 16:51:47 2007 -0700
@@ -1844,12 +1844,19 @@
 KMF_SetCertSubjectName(KMF_X509_CERTIFICATE *CertData,
 	KMF_X509_NAME *subject_name_ptr)
 {
-	if (CertData != NULL && subject_name_ptr != NULL)
-		CertData->certificate.subject = *subject_name_ptr;
-	else
+
+	KMF_RETURN rv = KMF_OK;
+	KMF_X509_NAME *temp_name_ptr = NULL;
+
+	if (CertData != NULL && subject_name_ptr != NULL) {
+		rv = CopyRDN(subject_name_ptr, &temp_name_ptr);
+		if (rv == KMF_OK) {
+			CertData->certificate.subject = *temp_name_ptr;
+		}
+	} else {
 		return (KMF_ERR_BAD_PARAMETER);
-
-	return (KMF_OK);
+	}
+	return (rv);
 }
 
 KMF_RETURN
@@ -1926,12 +1933,20 @@
 KMF_SetCertIssuerName(KMF_X509_CERTIFICATE *CertData,
 	KMF_X509_NAME *issuer_name_ptr)
 {
-	if (CertData != NULL && issuer_name_ptr != NULL)
-		CertData->certificate.issuer = *issuer_name_ptr;
-	else
+
+	KMF_RETURN rv = KMF_OK;
+	KMF_X509_NAME *temp_name_ptr = NULL;
+
+	if (CertData != NULL && issuer_name_ptr != NULL) {
+		rv = CopyRDN(issuer_name_ptr, &temp_name_ptr);
+		if (rv == KMF_OK) {
+			CertData->certificate.issuer = *temp_name_ptr;
+		}
+	} else {
 		return (KMF_ERR_BAD_PARAMETER);
+	}
 
-	return (KMF_OK);
+	return (rv);
 }
 
 KMF_RETURN
--- a/usr/src/lib/libkmf/libkmf/common/csrcrlop.c	Fri Apr 06 16:49:11 2007 -0700
+++ b/usr/src/lib/libkmf/libkmf/common/csrcrlop.c	Fri Apr 06 16:51:47 2007 -0700
@@ -119,12 +119,18 @@
 KMF_SetCSRSubjectName(KMF_CSR_DATA *CsrData,
 	KMF_X509_NAME *subject_name_ptr)
 {
-	if (CsrData != NULL && subject_name_ptr != NULL)
-		CsrData->csr.subject = *subject_name_ptr;
-	else
+	KMF_RETURN rv = KMF_OK;
+	KMF_X509_NAME *temp_name_ptr = NULL;
+
+	if (CsrData != NULL && subject_name_ptr != NULL) {
+		rv = CopyRDN(subject_name_ptr, &temp_name_ptr);
+		if (rv == KMF_OK) {
+			CsrData->csr.subject = *temp_name_ptr;
+		}
+	} else {
 		return (KMF_ERR_BAD_PARAMETER);
-
-	return (KMF_OK);
+	}
+	return (rv);
 }
 
 KMF_RETURN