addressed jenkins failure

fix missing mutex initialization
This commit is contained in:
Hideki Miyazaki
2021-03-09 11:54:48 +09:00
parent a13784abe1
commit 2d79578eda
3 changed files with 34 additions and 18 deletions

View File

@ -1828,6 +1828,11 @@ int InitSSL_Ctx(WOLFSSL_CTX* ctx, WOLFSSL_METHOD* method, void* heap)
return MEMORY_E;
}
XMEMSET(ctx->x509_store.lookup.dirs, 0, sizeof(WOLFSSL_BY_DIR));
if (wc_InitMutex(&ctx->x509_store.lookup.dirs->lock) != 0) {
WOLFSSL_MSG("Bad mutex init");
XFREE(ctx->x509_store.lookup.dirs, heap, DYNAMIC_TYPE_OPENSSL);
return BAD_MUTEX_E;
}
#endif
#endif
@ -10653,7 +10658,8 @@ int LoadCrlCertByIssuer(WOLFSSL_X509_STORE* store, X509_NAME* issuer, int type)
return MEMORY_E;
}
if (type == X509_LU_CRL && entry->hashes != NULL) {
if (type == X509_LU_CRL && entry->hashes != NULL &&
wolfSSL_sk_BY_DIR_HASH_num(entry->hashes) > 0) {
/* lock the list */
if (wc_LockMutex(&lookup->dirs->lock) != 0) {
WOLFSSL_MSG("wc_LockMutex cdir Lock error");
@ -10696,7 +10702,6 @@ int LoadCrlCertByIssuer(WOLFSSL_X509_STORE* store, X509_NAME* issuer, int type)
else if (type == X509_LU_CRL) {
ret = wolfSSL_X509_load_crl_file(&store->lookup, filename,
WOLFSSL_FILETYPE_PEM);
printf("return load crl file %d\n", ret);
if (ret != WOLFSSL_SUCCESS) {
WOLFSSL_MSG("failed to load CRL\n");
break;
@ -10713,24 +10718,29 @@ int LoadCrlCertByIssuer(WOLFSSL_X509_STORE* store, X509_NAME* issuer, int type)
break;
}
if (type == X509_LU_CRL) {
if (wc_LockMutex(&lookup->dirs->lock) != 0) {
WOLFSSL_MSG("wc_LockMutex cdir Lock error");
return BAD_MUTEX_E;
}
if (ph == NULL) {
ph = wolfSSL_BY_DIR_HASH_new();
if (ph == NULL) {
WOLFSSL_MSG("failed to allocate hash stack");
ret = WOLFSSL_FAILURE;
} else {
ph->hash_value = hash;
ph->last_suffix = suffix;
ret = wolfSSL_sk_BY_DIR_HASH_push(entry->hashes, ph);
if (suffix == MAX_SUFFIX) {
WOLFSSL_MSG("not found file");
ret = WOLFSSL_FAILURE;
} else {
if (type == X509_LU_CRL) {
if (wc_LockMutex(&lookup->dirs->lock) != 0) {
WOLFSSL_MSG("wc_LockMutex cdir Lock error");
return BAD_MUTEX_E;
}
if (ph == NULL) {
ph = wolfSSL_BY_DIR_HASH_new();
if (ph == NULL) {
WOLFSSL_MSG("failed to allocate hash stack");
ret = WOLFSSL_FAILURE;
} else {
ph->hash_value = hash;
ph->last_suffix = suffix;
ret = wolfSSL_sk_BY_DIR_HASH_push(entry->hashes, ph);
}
}
wc_UnLockMutex(&lookup->dirs->lock);
}
wc_UnLockMutex(&lookup->dirs->lock);
}
XFREE(filename, NULL, DYNAMIC_TYPE_OPENSSL);

View File

@ -25858,6 +25858,10 @@ WOLFSSL_X509_STORE* wolfSSL_X509_STORE_new(void)
goto err_exit;
}
XMEMSET(store->lookup.dirs, 0, sizeof(WOLFSSL_BY_DIR));
if (wc_InitMutex(&store->lookup.dirs->lock) != 0) {
WOLFSSL_MSG("Bad mutex init");
goto err_exit;
}
#endif
return store;

View File

@ -679,6 +679,7 @@ WOLFSSL_API int wolfCrypt_Cleanup(void);
#if !defined(NO_WOLFSSL_DIR)\
&& !defined(WOLFSSL_NUCLEUS) && !defined(WOLFSSL_NUCLEUS_1_2)
#if defined(USE_WINDOWS_API)
#include <sys/stat.h>
#define XSTAT _stat
#define SEPARATOR_CHAR ';'
#elif defined(WOLFSSL_ZEPHYR)
@ -730,6 +731,7 @@ WOLFSSL_API int wolfCrypt_Cleanup(void);
#ifdef USE_WINDOWS_API
WIN32_FIND_DATAA FindFileData;
HANDLE hFind;
struct XSTAT s;
#elif defined(WOLFSSL_ZEPHYR)
struct fs_dirent entry;
struct fs_dir_t dir;