forked from wolfSSL/wolfssl
Fix for PKCS12 dynamic type names (also fix to use manual realloc since its NUMA type and that behaves different).
This commit is contained in:
18
src/ssl.c
18
src/ssl.c
@ -15542,7 +15542,7 @@ int wolfSSL_PKCS12_parse(WC_PKCS12* pkcs12, const char* psw,
|
|||||||
heap, DYNAMIC_TYPE_X509);
|
heap, DYNAMIC_TYPE_X509);
|
||||||
if (*ca == NULL) {
|
if (*ca == NULL) {
|
||||||
if (pk != NULL) {
|
if (pk != NULL) {
|
||||||
XFREE(pk, heap, DYNAMIC_TYPE_PKCS);
|
XFREE(pk, heap, DYNAMIC_TYPE_PUBLIC_KEY);
|
||||||
}
|
}
|
||||||
if (certData != NULL) {
|
if (certData != NULL) {
|
||||||
XFREE(*cert, heap, DYNAMIC_TYPE_PKCS); *cert = NULL;
|
XFREE(*cert, heap, DYNAMIC_TYPE_PKCS); *cert = NULL;
|
||||||
@ -15580,7 +15580,7 @@ int wolfSSL_PKCS12_parse(WC_PKCS12* pkcs12, const char* psw,
|
|||||||
wolfSSL_X509_free(x509);
|
wolfSSL_X509_free(x509);
|
||||||
wolfSSL_sk_X509_free(*ca); *ca = NULL;
|
wolfSSL_sk_X509_free(*ca); *ca = NULL;
|
||||||
if (pk != NULL) {
|
if (pk != NULL) {
|
||||||
XFREE(pk, heap, DYNAMIC_TYPE_PKCS);
|
XFREE(pk, heap, DYNAMIC_TYPE_PUBLIC_KEY);
|
||||||
}
|
}
|
||||||
if (certData != NULL) {
|
if (certData != NULL) {
|
||||||
XFREE(certData, heap, DYNAMIC_TYPE_PKCS);
|
XFREE(certData, heap, DYNAMIC_TYPE_PKCS);
|
||||||
@ -15602,7 +15602,7 @@ int wolfSSL_PKCS12_parse(WC_PKCS12* pkcs12, const char* psw,
|
|||||||
wolfSSL_X509_free(x509);
|
wolfSSL_X509_free(x509);
|
||||||
wolfSSL_sk_X509_free(*ca); *ca = NULL;
|
wolfSSL_sk_X509_free(*ca); *ca = NULL;
|
||||||
if (pk != NULL) {
|
if (pk != NULL) {
|
||||||
XFREE(pk, heap, DYNAMIC_TYPE_PKCS);
|
XFREE(pk, heap, DYNAMIC_TYPE_PUBLIC_KEY);
|
||||||
}
|
}
|
||||||
if (certData != NULL) {
|
if (certData != NULL) {
|
||||||
XFREE(certData, heap, DYNAMIC_TYPE_PKCS);
|
XFREE(certData, heap, DYNAMIC_TYPE_PKCS);
|
||||||
@ -15632,7 +15632,7 @@ int wolfSSL_PKCS12_parse(WC_PKCS12* pkcs12, const char* psw,
|
|||||||
DYNAMIC_TYPE_X509);
|
DYNAMIC_TYPE_X509);
|
||||||
if (*cert == NULL) {
|
if (*cert == NULL) {
|
||||||
if (pk != NULL) {
|
if (pk != NULL) {
|
||||||
XFREE(pk, heap, DYNAMIC_TYPE_PKCS);
|
XFREE(pk, heap, DYNAMIC_TYPE_PUBLIC_KEY);
|
||||||
}
|
}
|
||||||
if (ca != NULL) {
|
if (ca != NULL) {
|
||||||
wolfSSL_sk_X509_free(*ca); *ca = NULL;
|
wolfSSL_sk_X509_free(*ca); *ca = NULL;
|
||||||
@ -15649,7 +15649,7 @@ int wolfSSL_PKCS12_parse(WC_PKCS12* pkcs12, const char* psw,
|
|||||||
WOLFSSL_MSG("Failed to copy decoded cert");
|
WOLFSSL_MSG("Failed to copy decoded cert");
|
||||||
FreeDecodedCert(&DeCert);
|
FreeDecodedCert(&DeCert);
|
||||||
if (pk != NULL) {
|
if (pk != NULL) {
|
||||||
XFREE(pk, heap, DYNAMIC_TYPE_PKCS);
|
XFREE(pk, heap, DYNAMIC_TYPE_PUBLIC_KEY);
|
||||||
}
|
}
|
||||||
if (ca != NULL) {
|
if (ca != NULL) {
|
||||||
wolfSSL_sk_X509_free(*ca); *ca = NULL;
|
wolfSSL_sk_X509_free(*ca); *ca = NULL;
|
||||||
@ -15673,7 +15673,7 @@ int wolfSSL_PKCS12_parse(WC_PKCS12* pkcs12, const char* psw,
|
|||||||
if (ca != NULL) {
|
if (ca != NULL) {
|
||||||
wolfSSL_sk_X509_free(*ca); *ca = NULL;
|
wolfSSL_sk_X509_free(*ca); *ca = NULL;
|
||||||
}
|
}
|
||||||
XFREE(pk, heap, DYNAMIC_TYPE_PKCS);
|
XFREE(pk, heap, DYNAMIC_TYPE_PUBLIC_KEY);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
#ifndef NO_RSA
|
#ifndef NO_RSA
|
||||||
@ -15707,7 +15707,7 @@ int wolfSSL_PKCS12_parse(WC_PKCS12* pkcs12, const char* psw,
|
|||||||
wolfSSL_sk_X509_free(*ca); *ca = NULL;
|
wolfSSL_sk_X509_free(*ca); *ca = NULL;
|
||||||
}
|
}
|
||||||
XFREE(*pkey, heap, DYNAMIC_TYPE_PUBLIC_KEY); *pkey = NULL;
|
XFREE(*pkey, heap, DYNAMIC_TYPE_PUBLIC_KEY); *pkey = NULL;
|
||||||
XFREE(pk, heap, DYNAMIC_TYPE_PKCS);
|
XFREE(pk, heap, DYNAMIC_TYPE_PUBLIC_KEY);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -15718,7 +15718,7 @@ int wolfSSL_PKCS12_parse(WC_PKCS12* pkcs12, const char* psw,
|
|||||||
wolfSSL_sk_X509_free(*ca); *ca = NULL;
|
wolfSSL_sk_X509_free(*ca); *ca = NULL;
|
||||||
}
|
}
|
||||||
XFREE(*pkey, heap, DYNAMIC_TYPE_PUBLIC_KEY); *pkey = NULL;
|
XFREE(*pkey, heap, DYNAMIC_TYPE_PUBLIC_KEY); *pkey = NULL;
|
||||||
XFREE(pk, heap, DYNAMIC_TYPE_PKCS);
|
XFREE(pk, heap, DYNAMIC_TYPE_PUBLIC_KEY);
|
||||||
WOLFSSL_MSG("Bad PKCS12 key format");
|
WOLFSSL_MSG("Bad PKCS12 key format");
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@ -15735,7 +15735,7 @@ int wolfSSL_PKCS12_parse(WC_PKCS12* pkcs12, const char* psw,
|
|||||||
wolfSSL_sk_X509_free(*ca); *ca = NULL;
|
wolfSSL_sk_X509_free(*ca); *ca = NULL;
|
||||||
}
|
}
|
||||||
XFREE(*pkey, heap, DYNAMIC_TYPE_PUBLIC_KEY); *pkey = NULL;
|
XFREE(*pkey, heap, DYNAMIC_TYPE_PUBLIC_KEY); *pkey = NULL;
|
||||||
XFREE(pk, heap, DYNAMIC_TYPE_PKCS);
|
XFREE(pk, heap, DYNAMIC_TYPE_PUBLIC_KEY);
|
||||||
WOLFSSL_MSG("Bad PKCS12 key format");
|
WOLFSSL_MSG("Bad PKCS12 key format");
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -886,9 +886,7 @@ int wc_PKCS12_parse(WC_PKCS12* pkcs12, const char* psw,
|
|||||||
case WC_PKCS12_ShroudedKeyBag: /* 668 */
|
case WC_PKCS12_ShroudedKeyBag: /* 668 */
|
||||||
{
|
{
|
||||||
byte* k;
|
byte* k;
|
||||||
#ifdef FREESCALE_MQX
|
|
||||||
byte* tmp;
|
|
||||||
#endif
|
|
||||||
WOLFSSL_MSG("PKCS12 Shrouded Key Bag found");
|
WOLFSSL_MSG("PKCS12 Shrouded Key Bag found");
|
||||||
if (data[idx++] !=
|
if (data[idx++] !=
|
||||||
(ASN_CONSTRUCTED | ASN_CONTEXT_SPECIFIC)) {
|
(ASN_CONSTRUCTED | ASN_CONTEXT_SPECIFIC)) {
|
||||||
@ -914,9 +912,7 @@ int wc_PKCS12_parse(WC_PKCS12* pkcs12, const char* psw,
|
|||||||
|
|
||||||
if (ret < size) {
|
if (ret < size) {
|
||||||
/* shrink key buffer */
|
/* shrink key buffer */
|
||||||
#ifdef FREESCALE_MQX
|
byte* tmp = (byte*)XMALLOC(ret, pkcs12->heap,
|
||||||
/* MQX classic has no realloc */
|
|
||||||
tmp = (byte*)XMALLOC(ret, pkcs12->heap,
|
|
||||||
DYNAMIC_TYPE_PUBLIC_KEY);
|
DYNAMIC_TYPE_PUBLIC_KEY);
|
||||||
if (tmp == NULL) {
|
if (tmp == NULL) {
|
||||||
XFREE(k, pkcs12->heap, DYNAMIC_TYPE_PUBLIC_KEY);
|
XFREE(k, pkcs12->heap, DYNAMIC_TYPE_PUBLIC_KEY);
|
||||||
@ -925,13 +921,6 @@ int wc_PKCS12_parse(WC_PKCS12* pkcs12, const char* psw,
|
|||||||
XMEMCPY(tmp, k, ret);
|
XMEMCPY(tmp, k, ret);
|
||||||
XFREE(k, pkcs12->heap, DYNAMIC_TYPE_PUBLIC_KEY);
|
XFREE(k, pkcs12->heap, DYNAMIC_TYPE_PUBLIC_KEY);
|
||||||
k = tmp;
|
k = tmp;
|
||||||
#else
|
|
||||||
k = (byte*)XREALLOC(k, ret, pkcs12->heap,
|
|
||||||
DYNAMIC_TYPE_PUBLIC_KEY);
|
|
||||||
if (k == NULL) {
|
|
||||||
ERROR_OUT(MEMORY_E, exit_pk12par);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
size = ret;
|
size = ret;
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user