@@ -221,8 +221,12 @@ static void CRL_Entry_free(CRL_Entry* crle, void* heap)
221221/* Free all CRL resources */
222222void FreeCRL (WOLFSSL_CRL * crl , int dynamic )
223223{
224- CRL_Entry * tmp = crl -> crlList ;
224+ CRL_Entry * tmp ;
225225
226+ if (crl == NULL )
227+ return ;
228+
229+ tmp = crl -> crlList ;
226230 WOLFSSL_ENTER ("FreeCRL" );
227231 if (crl -> monitors [0 ].path )
228232 XFREE (crl -> monitors [0 ].path , crl -> heap , DYNAMIC_TYPE_CRL_MONITOR );
@@ -829,6 +833,7 @@ static int DupX509_CRL(WOLFSSL_X509_CRL *dupl, const WOLFSSL_X509_CRL* crl)
829833int wolfSSL_X509_STORE_add_crl (WOLFSSL_X509_STORE * store , WOLFSSL_X509_CRL * newcrl )
830834{
831835 WOLFSSL_X509_CRL * crl ;
836+ int ret = 0 ;
832837
833838 WOLFSSL_ENTER ("wolfSSL_X509_STORE_add_crl" );
834839 if (store == NULL || newcrl == NULL || store -> cm == NULL )
@@ -837,20 +842,19 @@ int wolfSSL_X509_STORE_add_crl(WOLFSSL_X509_STORE *store, WOLFSSL_X509_CRL *newc
837842 if (store -> cm -> crl == NULL ) {
838843 crl = wolfSSL_X509_crl_new (store -> cm );
839844 if (crl == NULL ) {
845+ WOLFSSL_MSG ("wolfSSL_X509_crl_new failed" );
840846 return WOLFSSL_FAILURE ;
841847 }
842848 if (wc_LockRwLock_Rd (& newcrl -> crlLock ) != 0 ) {
843849 WOLFSSL_MSG ("wc_LockRwLock_Rd failed" );
844850 return BAD_MUTEX_E ;
845851 }
846- if (DupX509_CRL (crl , newcrl ) != 0 ) {
847- if (crl != NULL ) {
848- wc_UnLockRwLock (& newcrl -> crlLock );
849- FreeCRL (crl , 1 );
850- }
852+ ret = DupX509_CRL (crl , newcrl );
853+ wc_UnLockRwLock (& newcrl -> crlLock );
854+ if (ret != 0 ) {
855+ FreeCRL (crl , 1 );
851856 return WOLFSSL_FAILURE ;
852857 }
853- wc_UnLockRwLock (& newcrl -> crlLock );
854858 store -> crl = store -> cm -> crl = crl ;
855859 if (wolfSSL_CertManagerEnableCRL (store -> cm , WOLFSSL_CRL_CHECKALL )
856860 != WOLFSSL_SUCCESS ) {
0 commit comments