mirror of
https://github.com/wolfSSL/wolfssl.git
synced 2025-08-02 20:24:39 +02:00
adjust temporary buffer size and memory free'ing
This commit is contained in:
@@ -4095,7 +4095,8 @@ void FreeX509(WOLFSSL_X509* x509)
|
|||||||
XFREE(x509->CRLInfo, x509->heap, DYNAMIC_TYPE_X509_EXT);
|
XFREE(x509->CRLInfo, x509->heap, DYNAMIC_TYPE_X509_EXT);
|
||||||
x509->CRLInfo = NULL;
|
x509->CRLInfo = NULL;
|
||||||
}
|
}
|
||||||
#if defined(OPENSSL_ALL) || defined(WOLFSSL_QT)
|
#if defined(OPENSSL_ALL) || defined(OPENSSL_EXTRA) || \
|
||||||
|
defined(WOLFSSL_QT)
|
||||||
if (x509->authInfoCaIssuer != NULL) {
|
if (x509->authInfoCaIssuer != NULL) {
|
||||||
XFREE(x509->authInfoCaIssuer, x509->heap, DYNAMIC_TYPE_X509_EXT);
|
XFREE(x509->authInfoCaIssuer, x509->heap, DYNAMIC_TYPE_X509_EXT);
|
||||||
}
|
}
|
||||||
|
47
src/x509.c
47
src/x509.c
@@ -216,8 +216,13 @@ void wolfSSL_X509_EXTENSION_free(WOLFSSL_X509_EXTENSION* x)
|
|||||||
if (x == NULL)
|
if (x == NULL)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (x->obj != NULL)
|
if (x->obj != NULL) {
|
||||||
|
if (x->obj->pathlen != NULL) {
|
||||||
|
wolfSSL_ASN1_INTEGER_free(x->obj->pathlen);
|
||||||
|
x->obj->pathlen = NULL;
|
||||||
|
}
|
||||||
wolfSSL_ASN1_OBJECT_free(x->obj);
|
wolfSSL_ASN1_OBJECT_free(x->obj);
|
||||||
|
}
|
||||||
|
|
||||||
asn1 = x->value;
|
asn1 = x->value;
|
||||||
if (asn1.length > 0 && asn1.data != NULL && asn1.isDynamic)
|
if (asn1.length > 0 && asn1.data != NULL && asn1.isDynamic)
|
||||||
@@ -4411,8 +4416,6 @@ int wolfSSL_GENERAL_NAME_print(WOLFSSL_BIO* out, WOLFSSL_GENERAL_NAME* gen)
|
|||||||
}
|
}
|
||||||
#endif /* OPENSSL_ALL */
|
#endif /* OPENSSL_ALL */
|
||||||
|
|
||||||
#if defined(OPENSSL_ALL)
|
|
||||||
|
|
||||||
WOLF_STACK_OF(WOLFSSL_X509_EXTENSION)* wolfSSL_sk_X509_EXTENSION_new_null(void)
|
WOLF_STACK_OF(WOLFSSL_X509_EXTENSION)* wolfSSL_sk_X509_EXTENSION_new_null(void)
|
||||||
{
|
{
|
||||||
WOLFSSL_STACK* sk = wolfSSL_sk_new_node(NULL);
|
WOLFSSL_STACK* sk = wolfSSL_sk_new_node(NULL);
|
||||||
@@ -4458,8 +4461,6 @@ void wolfSSL_sk_X509_EXTENSION_pop_free(
|
|||||||
wolfSSL_sk_pop_free(sk, (wolfSSL_sk_freefunc)f);
|
wolfSSL_sk_pop_free(sk, (wolfSSL_sk_freefunc)f);
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif /* OPENSSL_ALL */
|
|
||||||
|
|
||||||
#endif /* OPENSSL_EXTRA */
|
#endif /* OPENSSL_EXTRA */
|
||||||
|
|
||||||
#if defined(OPENSSL_EXTRA) && !defined(NO_FILESYSTEM) && !defined(NO_STDIO_FILESYSTEM)
|
#if defined(OPENSSL_EXTRA) && !defined(NO_FILESYSTEM) && !defined(NO_STDIO_FILESYSTEM)
|
||||||
@@ -5510,6 +5511,8 @@ static int X509PrintExtensions(WOLFSSL_BIO* bio, WOLFSSL_X509* x509, int indent)
|
|||||||
|
|
||||||
count = wolfSSL_X509_get_ext_count(x509);
|
count = wolfSSL_X509_get_ext_count(x509);
|
||||||
if (count > 0) {
|
if (count > 0) {
|
||||||
|
char* buf = NULL;
|
||||||
|
|
||||||
#ifdef WOLFSSL_CERT_REQ
|
#ifdef WOLFSSL_CERT_REQ
|
||||||
if (x509->isCSR) {
|
if (x509->isCSR) {
|
||||||
XSNPRINTF(scratch, MAX_WIDTH, "%*s%s\n", indent, "",
|
XSNPRINTF(scratch, MAX_WIDTH, "%*s%s\n", indent, "",
|
||||||
@@ -5525,12 +5528,18 @@ static int X509PrintExtensions(WOLFSSL_BIO* bio, WOLFSSL_X509* x509, int indent)
|
|||||||
return WOLFSSL_FAILURE;
|
return WOLFSSL_FAILURE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
buf = (char*)XMALLOC(MAX_WIDTH-4-indent, x509->heap,
|
||||||
|
DYNAMIC_TYPE_TMP_BUFFER);
|
||||||
|
if (buf == NULL) {
|
||||||
|
return WOLFSSL_FAILURE;
|
||||||
|
}
|
||||||
|
|
||||||
for (i = 0; i < count; i++) {
|
for (i = 0; i < count; i++) {
|
||||||
WOLFSSL_X509_EXTENSION* ext = wolfSSL_X509_get_ext(x509, i);
|
WOLFSSL_X509_EXTENSION* ext;
|
||||||
|
|
||||||
|
ext = wolfSSL_X509_get_ext(x509, i);
|
||||||
if (ext != NULL) {
|
if (ext != NULL) {
|
||||||
WOLFSSL_ASN1_OBJECT* obj;
|
WOLFSSL_ASN1_OBJECT* obj;
|
||||||
char buf[MAX_WIDTH-4]; /* -4 to avoid warning when used in
|
|
||||||
* in XSNPRINTF */
|
|
||||||
int nid;
|
int nid;
|
||||||
char val[5];
|
char val[5];
|
||||||
int valSz = 5;
|
int valSz = 5;
|
||||||
@@ -5553,7 +5562,8 @@ static int X509PrintExtensions(WOLFSSL_BIO* bio, WOLFSSL_X509* x509, int indent)
|
|||||||
case NID_subject_key_identifier:
|
case NID_subject_key_identifier:
|
||||||
if (!x509->subjKeyIdSet || x509->subjKeyId == NULL ||
|
if (!x509->subjKeyIdSet || x509->subjKeyId == NULL ||
|
||||||
x509->subjKeyIdSz == 0) {
|
x509->subjKeyIdSz == 0) {
|
||||||
return WOLFSSL_FAILURE;
|
ret = WOLFSSL_FAILURE;
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
XSNPRINTF(scratch, sizeof(scratch) - 1, "%*s",
|
XSNPRINTF(scratch, sizeof(scratch) - 1, "%*s",
|
||||||
@@ -5568,14 +5578,16 @@ static int X509PrintExtensions(WOLFSSL_BIO* bio, WOLFSSL_X509* x509, int indent)
|
|||||||
XSTRNCAT(scratch, val, valSz);
|
XSTRNCAT(scratch, val, valSz);
|
||||||
if (wolfSSL_BIO_write(bio, scratch,
|
if (wolfSSL_BIO_write(bio, scratch,
|
||||||
(int)XSTRLEN(scratch)) <= 0) {
|
(int)XSTRLEN(scratch)) <= 0) {
|
||||||
return WOLFSSL_FAILURE;
|
ret = WOLFSSL_FAILURE;
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case NID_authority_key_identifier:
|
case NID_authority_key_identifier:
|
||||||
if (!x509->authKeyIdSet || x509->authKeyId == NULL ||
|
if (!x509->authKeyIdSet || x509->authKeyId == NULL ||
|
||||||
x509->authKeyIdSz == 0) {
|
x509->authKeyIdSz == 0) {
|
||||||
return WOLFSSL_FAILURE;
|
ret = WOLFSSL_FAILURE;
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
XSNPRINTF(scratch, sizeof(scratch) - 1, "%*s%s",
|
XSNPRINTF(scratch, sizeof(scratch) - 1, "%*s%s",
|
||||||
@@ -5597,20 +5609,23 @@ static int X509PrintExtensions(WOLFSSL_BIO* bio, WOLFSSL_X509* x509, int indent)
|
|||||||
XSTRNCAT(scratch, "\n", len + 1);
|
XSTRNCAT(scratch, "\n", len + 1);
|
||||||
if (wolfSSL_BIO_write(bio, scratch,
|
if (wolfSSL_BIO_write(bio, scratch,
|
||||||
(int)XSTRLEN(scratch)) <= 0) {
|
(int)XSTRLEN(scratch)) <= 0) {
|
||||||
return WOLFSSL_FAILURE;
|
ret = WOLFSSL_FAILURE;
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
|
||||||
case NID_basic_constraints:
|
case NID_basic_constraints:
|
||||||
if (!x509->basicConstSet) {
|
if (!x509->basicConstSet) {
|
||||||
return WOLFSSL_FAILURE;
|
ret = WOLFSSL_FAILURE;
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
XSNPRINTF(scratch, sizeof(scratch), "%*sCA:%s\n",
|
XSNPRINTF(scratch, sizeof(scratch), "%*sCA:%s\n",
|
||||||
indent + 8, "", (x509->isCa)? "TRUE": "FALSE");
|
indent + 8, "", (x509->isCa)? "TRUE": "FALSE");
|
||||||
if (wolfSSL_BIO_write(bio, scratch,
|
if (wolfSSL_BIO_write(bio, scratch,
|
||||||
(int)XSTRLEN(scratch)) <= 0) {
|
(int)XSTRLEN(scratch)) <= 0) {
|
||||||
return WOLFSSL_FAILURE;
|
ret = WOLFSSL_FAILURE;
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@@ -5631,6 +5646,10 @@ static int X509PrintExtensions(WOLFSSL_BIO* bio, WOLFSSL_X509* x509, int indent)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (buf != NULL) {
|
||||||
|
XFREE(buf, x509->heap, DYNAMIC_TYPE_TMP_BUFFER);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user