Mercurial > illumos > illumos-gate
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