@@ -3593,7 +3593,7 @@ WOLFSSL_X509* wolfSSL_d2i_X509(WOLFSSL_X509** x509, const unsigned char** in,
35933593}
35943594
35953595static WOLFSSL_X509 * d2i_X509orX509REQ (WOLFSSL_X509 * * x509 ,
3596- const byte * in , int len , int req )
3596+ const byte * in , int len , int req , void * heap )
35973597{
35983598 WOLFSSL_X509 * newX509 = NULL ;
35993599 int type = req ? CERTREQ_TYPE : CERT_TYPE ;
@@ -3620,12 +3620,12 @@ static WOLFSSL_X509* d2i_X509orX509REQ(WOLFSSL_X509** x509,
36203620 return NULL ;
36213621 #endif
36223622
3623- InitDecodedCert (cert , (byte * )in , len , NULL );
3623+ InitDecodedCert (cert , (byte * )in , len , heap );
36243624 #ifdef WOLFSSL_CERT_REQ
36253625 cert -> isCSR = (byte )req ;
36263626 #endif
36273627 if (ParseCertRelative (cert , type , 0 , NULL ) == 0 ) {
3628- newX509 = wolfSSL_X509_new ( );
3628+ newX509 = wolfSSL_X509_new_ex ( heap );
36293629 if (newX509 != NULL ) {
36303630 if (CopyDecodedToX509 (newX509 , cert ) != 0 ) {
36313631 wolfSSL_X509_free (newX509 );
@@ -3659,16 +3659,22 @@ int wolfSSL_X509_get_isCA(WOLFSSL_X509* x509)
36593659 return isCA ;
36603660}
36613661
3662+ WOLFSSL_X509 * wolfSSL_X509_d2i_ex (WOLFSSL_X509 * * x509 , const byte * in , int len ,
3663+ void * heap )
3664+ {
3665+ return d2i_X509orX509REQ (x509 , in , len , 0 , heap );
3666+ }
3667+
36623668WOLFSSL_X509 * wolfSSL_X509_d2i (WOLFSSL_X509 * * x509 , const byte * in , int len )
36633669{
3664- return d2i_X509orX509REQ (x509 , in , len , 0 );
3670+ return wolfSSL_X509_d2i_ex (x509 , in , len , NULL );
36653671}
36663672
36673673#ifdef WOLFSSL_CERT_REQ
36683674WOLFSSL_X509 * wolfSSL_X509_REQ_d2i (WOLFSSL_X509 * * x509 ,
36693675 const unsigned char * in , int len )
36703676{
3671- return d2i_X509orX509REQ (x509 , in , len , 1 );
3677+ return d2i_X509orX509REQ (x509 , in , len , 1 , NULL );
36723678}
36733679#endif
36743680
@@ -5319,19 +5325,24 @@ WOLFSSL_X509* wolfSSL_X509_REQ_load_certificate_buffer(
53195325/* returns a pointer to a new WOLFSSL_X509 structure on success and NULL on
53205326 * fail
53215327 */
5322- WOLFSSL_X509 * wolfSSL_X509_new (void )
5328+ WOLFSSL_X509 * wolfSSL_X509_new_ex (void * heap )
53235329{
53245330 WOLFSSL_X509 * x509 ;
53255331
5326- x509 = (WOLFSSL_X509 * )XMALLOC (sizeof (WOLFSSL_X509 ), NULL ,
5332+ x509 = (WOLFSSL_X509 * )XMALLOC (sizeof (WOLFSSL_X509 ), heap ,
53275333 DYNAMIC_TYPE_X509 );
53285334 if (x509 != NULL ) {
5329- InitX509 (x509 , 1 , NULL );
5335+ InitX509 (x509 , 1 , heap );
53305336 }
53315337
53325338 return x509 ;
53335339}
53345340
5341+ WOLFSSL_X509 * wolfSSL_X509_new (void )
5342+ {
5343+ return wolfSSL_X509_new_ex (NULL );
5344+ }
5345+
53355346WOLFSSL_ABI
53365347WOLFSSL_X509_NAME * wolfSSL_X509_get_subject_name (WOLFSSL_X509 * cert )
53375348{
@@ -13408,7 +13419,7 @@ int wolfSSL_X509_check_issued(WOLFSSL_X509 *issuer, WOLFSSL_X509 *subject)
1340813419
1340913420#if defined(OPENSSL_EXTRA ) || defined(WOLFSSL_WPAS_SMALL ) || \
1341013421 defined(KEEP_PEER_CERT )
13411- WOLFSSL_X509 * wolfSSL_X509_dup (WOLFSSL_X509 * x )
13422+ WOLFSSL_X509 * wolfSSL_X509_dup_ex (WOLFSSL_X509 * x , void * heap )
1341213423{
1341313424 WOLFSSL_ENTER ("wolfSSL_X509_dup" );
1341413425
@@ -13422,7 +13433,13 @@ WOLFSSL_X509* wolfSSL_X509_dup(WOLFSSL_X509 *x)
1342213433 return NULL ;
1342313434 }
1342413435
13425- return wolfSSL_X509_d2i (NULL , x -> derCert -> buffer , x -> derCert -> length );
13436+ return wolfSSL_X509_d2i_ex (NULL , x -> derCert -> buffer , x -> derCert -> length ,
13437+ heap );
13438+ }
13439+
13440+ WOLFSSL_X509 * wolfSSL_X509_dup (WOLFSSL_X509 * x )
13441+ {
13442+ return wolfSSL_X509_dup_ex (x , NULL );
1342613443}
1342713444#endif /* OPENSSL_EXTRA || WOLFSSL_WPAS_SMALL */
1342813445
0 commit comments