Skip to content

Commit 41ea110

Browse files
committed
update uses of wolfSSL_X509_new and wolfSSL_X509_d2i
where heap doesn't require a new ex function or struct field to avoid size increase
1 parent 03f32b6 commit 41ea110

5 files changed

Lines changed: 28 additions & 23 deletions

File tree

src/ssl.c

Lines changed: 15 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -18856,7 +18856,7 @@ WOLF_STACK_OF(WOLFSSL_X509)* wolfSSL_set_peer_cert_chain(WOLFSSL* ssl)
1885618856
sk = wolfSSL_sk_X509_new_null();
1885718857
i = ssl->session->chain.count-1;
1885818858
for (; i >= 0; i--) {
18859-
x509 = wolfSSL_X509_new();
18859+
x509 = wolfSSL_X509_new_ex(ssl->heap);
1886018860
if (x509 == NULL) {
1886118861
WOLFSSL_MSG("Error Creating X509");
1886218862
wolfSSL_sk_X509_pop_free(sk, NULL);
@@ -19224,9 +19224,10 @@ WOLFSSL_X509* wolfSSL_get_certificate(WOLFSSL* ssl)
1922419224
return NULL;
1922519225
}
1922619226
#ifndef WOLFSSL_X509_STORE_CERTS
19227-
ssl->ourCert = wolfSSL_X509_d2i(NULL,
19227+
ssl->ourCert = wolfSSL_X509_d2i_ex(NULL,
1922819228
ssl->buffers.certificate->buffer,
19229-
ssl->buffers.certificate->length);
19229+
ssl->buffers.certificate->length,
19230+
ssl->heap);
1923019231
#endif
1923119232
}
1923219233
return ssl->ourCert;
@@ -19239,9 +19240,10 @@ WOLFSSL_X509* wolfSSL_get_certificate(WOLFSSL* ssl)
1923919240
return NULL;
1924019241
}
1924119242
#ifndef WOLFSSL_X509_STORE_CERTS
19242-
ssl->ctx->ourCert = wolfSSL_X509_d2i(NULL,
19243+
ssl->ctx->ourCert = wolfSSL_X509_d2i_ex(NULL,
1924319244
ssl->ctx->certificate->buffer,
19244-
ssl->ctx->certificate->length);
19245+
ssl->ctx->certificate->length,
19246+
ssl->heap);
1924519247
#endif
1924619248
ssl->ctx->ownOurCert = 1;
1924719249
}
@@ -19261,9 +19263,9 @@ WOLFSSL_X509* wolfSSL_CTX_get0_certificate(WOLFSSL_CTX* ctx)
1926119263
return NULL;
1926219264
}
1926319265
#ifndef WOLFSSL_X509_STORE_CERTS
19264-
ctx->ourCert = wolfSSL_X509_d2i(NULL,
19266+
ctx->ourCert = wolfSSL_X509_d2i_ex(NULL,
1926519267
ctx->certificate->buffer,
19266-
ctx->certificate->length);
19268+
ctx->certificate->length, ctx->heap);
1926719269
#endif
1926819270
ctx->ownOurCert = 1;
1926919271
}
@@ -26221,7 +26223,8 @@ void* wolfSSL_GetHKDFExtractCtx(WOLFSSL* ssl)
2622126223
return WOLFSSL_FAILURE;
2622226224
}
2622326225
#else
26224-
ctx->ourCert = wolfSSL_X509_d2i(NULL, x->derCert->buffer,x->derCert->length);
26226+
ctx->ourCert = wolfSSL_X509_d2i_ex(NULL, x->derCert->buffer,
26227+
x->derCert->length, ctx->heap);
2622526228
if(ctx->ourCert == NULL){
2622626229
return WOLFSSL_FAILURE;
2622726230
}
@@ -30057,8 +30060,8 @@ int wolfSSL_CTX_get_extra_chain_certs(WOLFSSL_CTX* ctx, WOLF_STACK_OF(X509)** ch
3005730060
idx += 3;
3005830061

3005930062
/* Create a new X509 from DER encoded data. */
30060-
node->data.x509 = wolfSSL_X509_d2i(NULL, ctx->certChain->buffer + idx,
30061-
length);
30063+
node->data.x509 = wolfSSL_X509_d2i_ex(NULL,
30064+
ctx->certChain->buffer + idx, length, ctx->heap);
3006230065
if (node->data.x509 == NULL) {
3006330066
XFREE(node, NULL, DYNAMIC_TYPE_OPENSSL);
3006430067
/* Return as much of the chain as we created. */
@@ -33784,8 +33787,8 @@ WOLFSSL_STACK* wolfSSL_PKCS7_to_stack(PKCS7* pkcs7)
3378433787
return p7->certs;
3378533788

3378633789
for (i = 0; i < MAX_PKCS7_CERTS && p7->pkcs7.cert[i]; i++) {
33787-
WOLFSSL_X509* x509 = wolfSSL_X509_d2i(NULL, p7->pkcs7.cert[i],
33788-
p7->pkcs7.certSz[i]);
33790+
WOLFSSL_X509* x509 = wolfSSL_X509_d2i_ex(NULL, p7->pkcs7.cert[i],
33791+
p7->pkcs7.certSz[i], pkcs7->heap);
3378933792
if (!ret)
3379033793
ret = wolfSSL_sk_X509_new_null();
3379133794
if (x509) {

src/x509.c

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7582,7 +7582,7 @@ static WOLFSSL_X509* d2i_X509orX509REQ_bio(WOLFSSL_BIO* bio,
75827582
#endif
75837583
}
75847584
else {
7585-
localX509 = wolfSSL_X509_d2i(NULL, mem, size);
7585+
localX509 = wolfSSL_X509_d2i_ex(NULL, mem, size, bio->heap);
75867586
}
75877587
if (localX509 == NULL) {
75887588
WOLFSSL_MSG("wolfSSL_X509_d2i error");
@@ -13315,7 +13315,7 @@ static int x509GetIssuerFromCM(WOLFSSL_X509 **issuer, WOLFSSL_CERT_MANAGER* cm,
1331513315
#endif
1331613316

1331713317
/* Use existing CA retrieval APIs that use DecodedCert. */
13318-
InitDecodedCert(cert, x->derCert->buffer, x->derCert->length, NULL);
13318+
InitDecodedCert(cert, x->derCert->buffer, x->derCert->length, cm->heap);
1331913319
if (ParseCertRelative(cert, CERT_TYPE, 0, NULL) == 0
1332013320
&& !cert->selfSigned) {
1332113321
#ifndef NO_SKID
@@ -13337,8 +13337,8 @@ static int x509GetIssuerFromCM(WOLFSSL_X509 **issuer, WOLFSSL_CERT_MANAGER* cm,
1333713337

1333813338
#ifdef WOLFSSL_SIGNER_DER_CERT
1333913339
/* populate issuer with Signer DER */
13340-
if (wolfSSL_X509_d2i(issuer, ca->derCert->buffer,
13341-
ca->derCert->length) == NULL)
13340+
if (wolfSSL_X509_d2i_ex(issuer, ca->derCert->buffer,
13341+
ca->derCert->length, cm->heap) == NULL)
1334213342
return WOLFSSL_FAILURE;
1334313343
#else
1334413344
/* Create an empty certificate as CA doesn't have a certificate. */
@@ -13804,7 +13804,7 @@ void wolfSSL_X509V3_set_ctx(WOLFSSL_X509V3_CTX* ctx, WOLFSSL_X509* issuer,
1380413804

1380513805
/* not checking ctx->x509 for null first since app won't have initialized
1380613806
* this X509V3_CTX before this function call */
13807-
ctx->x509 = wolfSSL_X509_new();
13807+
ctx->x509 = wolfSSL_X509_new_ex(issuer->heap);
1380813808
if (!ctx->x509)
1380913809
return;
1381013810

src/x509_str.c

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,8 @@ WOLFSSL_X509_STORE_CTX* wolfSSL_X509_STORE_CTX_new(void)
6363

6464

6565
int wolfSSL_X509_STORE_CTX_init(WOLFSSL_X509_STORE_CTX* ctx,
66-
WOLFSSL_X509_STORE* store, WOLFSSL_X509* x509, WOLF_STACK_OF(WOLFSSL_X509)* sk)
66+
WOLFSSL_X509_STORE* store, WOLFSSL_X509* x509,
67+
WOLF_STACK_OF(WOLFSSL_X509)* sk)
6768
{
6869
int ret = 0;
6970
(void)sk;
@@ -75,8 +76,8 @@ int wolfSSL_X509_STORE_CTX_init(WOLFSSL_X509_STORE_CTX* ctx,
7576
ctx->current_cert = x509;
7677
#else
7778
if(x509 != NULL){
78-
ctx->current_cert = wolfSSL_X509_d2i(NULL, x509->derCert->buffer,
79-
x509->derCert->length);
79+
ctx->current_cert = wolfSSL_X509_d2i_ex(NULL, x509->derCert->buffer,
80+
x509->derCert->length, x509->heap);
8081
if(ctx->current_cert == NULL)
8182
return WOLFSSL_FAILURE;
8283
} else

tests/api.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -31740,7 +31740,7 @@ static int test_wolfSSL_X509_NAME(void)
3174031740
XFCLOSE(f);
3174131741

3174231742
c = buf;
31743-
ExpectNotNull(x509 = wolfSSL_X509_d2i(NULL, c, bytes));
31743+
ExpectNotNull(x509 = wolfSSL_X509_d2i_ex(NULL, c, bytes, HEAP_HINT));
3174431744

3174531745
/* test cmp function */
3174631746
ExpectNotNull(a = X509_get_issuer_name(x509));
@@ -36869,8 +36869,8 @@ static int test_wolfSSL_X509_NID(void)
3686936869
/* ------ PARSE ORIGINAL SELF-SIGNED CERTIFICATE ------ */
3687036870

3687136871
/* convert cert from DER to internal WOLFSSL_X509 struct */
36872-
ExpectNotNull(cert = wolfSSL_X509_d2i(&cert, client_cert_der_2048,
36873-
sizeof_client_cert_der_2048));
36872+
ExpectNotNull(cert = wolfSSL_X509_d2i_ex(&cert, client_cert_der_2048,
36873+
sizeof_client_cert_der_2048, HEAP_HINT));
3687436874

3687536875
/* ------ EXTRACT CERTIFICATE ELEMENTS ------ */
3687636876

wolfcrypt/src/ecc.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6071,6 +6071,7 @@ int wc_ecc_init_ex(ecc_key* key, void* heap, int devId)
60716071
#endif
60726072

60736073
#ifdef WOLFSSL_HEAP_TEST
6074+
(void)heap;
60746075
key->heap = (void*)WOLFSSL_HEAP_TEST;
60756076
#else
60766077
key->heap = heap;

0 commit comments

Comments
 (0)