已合并
eal_init bug fix #583
XuZhengYi创建于 2025年9月11日
eal_init bug fix #583
已合并
共 3 个文件变更+10-7
| @@ -58,7 +58,7 @@ static int32_t ProviderModuleInit(uint64_t initOpt, int32_t alg) | |||
| 58 | 58 | ||
| 59 | static void ProviderModuleFree(uint64_t initOpt) | 59 | static void ProviderModuleFree(uint64_t initOpt) |
| 60 | { | 60 | { |
| 61 | - if (!(initOpt & CRYPT_EAL_INIT_PROVIDER) || (g_ealInitOpts & CRYPT_EAL_INIT_PROVIDER) == 0) { | 61 | + if (!(initOpt & CRYPT_EAL_INIT_PROVIDER)) { |
| 62 | return; | 62 | return; |
| 63 | } | 63 | } |
| 64 | CRYPT_EAL_FreePreDefinedProviders(); | 64 | CRYPT_EAL_FreePreDefinedProviders(); |
| @@ -93,7 +93,7 @@ static int32_t BslModuleInit(uint64_t initOpt) | |||
| 93 | 93 | ||
| 94 | static void BslModuleFree(uint64_t initOpt) | 94 | static void BslModuleFree(uint64_t initOpt) |
| 95 | { | 95 | { |
| 96 | - if (!(initOpt & CRYPT_EAL_INIT_BSL) || (g_ealInitOpts & CRYPT_EAL_INIT_BSL) == 0) { | 96 | + if (!(initOpt & CRYPT_EAL_INIT_BSL)) { |
| 97 | return; | 97 | return; |
| 98 | } | 98 | } |
| 99 | BSL_GLOBAL_DeInit(); | 99 | BSL_GLOBAL_DeInit(); |
| @@ -115,7 +115,7 @@ static void BslModuleFree(uint64_t initOpt) | |||
| 115 | 115 | ||
| 116 | static void RandModuleFree(uint64_t initOpt) | 116 | static void RandModuleFree(uint64_t initOpt) |
| 117 | { | 117 | { |
| 118 | - if (!(initOpt & CRYPT_EAL_INIT_RAND) || (g_ealInitOpts & CRYPT_EAL_INIT_RAND) == 0) { | 118 | + if (!(initOpt & CRYPT_EAL_INIT_RAND)) { |
| 119 | return; | 119 | return; |
| 120 | } | 120 | } |
| 121 | CRYPT_EAL_RandDeinit(); | 121 | CRYPT_EAL_RandDeinit(); |
| @@ -165,7 +165,7 @@ static int32_t GlobalLockInit(uint64_t initOpt, int32_t alg) | |||
| 165 | 165 | ||
| 166 | static void GlobalLockFree(uint64_t initOpt) | 166 | static void GlobalLockFree(uint64_t initOpt) |
| 167 | { | 167 | { |
| 168 | - if ((initOpt & CRYPT_EAL_INIT_LOCK) == 0 || (g_ealInitOpts & CRYPT_EAL_INIT_LOCK) == 0) { | 168 | + if ((initOpt & CRYPT_EAL_INIT_LOCK) == 0) { |
| 169 | return; | 169 | return; |
| 170 | } | 170 | } |
| 171 | 171 | ||
| @@ -247,7 +247,7 @@ void CRYPT_EAL_Cleanup(uint64_t opts) | |||
| 247 | RandModuleFree(initOpt); | 247 | RandModuleFree(initOpt); |
| 248 | BslModuleFree(initOpt); | 248 | BslModuleFree(initOpt); |
| 249 | GlobalLockFree(initOpt); | 249 | GlobalLockFree(initOpt); |
| 250 | - g_ealInitOpts = 0; | 250 | + g_ealInitOpts &= (~opts); |
| 251 | } | 251 | } |
| 252 | 252 | ||
| 253 | 253 | ||
| @@ -35,6 +35,9 @@ extern "C" { | |||
| 35 | 35 | ||
| 36 | 36 | ||
| 37 | 37 | ||
| 38 | + | ||
| 39 | + CRYPT_EAL_INIT_PROVIDER | CRYPT_EAL_INIT_PROVIDER_RAND | CRYPT_EAL_INIT_LOCK) | ||
| 40 | + | ||
| 38 | /** | 41 | /** |
| 39 | * @ingroup crypt_method | 42 | * @ingroup crypt_method |
| 40 | * @brief CRYPTO initialization | 43 | * @brief CRYPTO initialization |
| @@ -234,7 +234,7 @@ void SDV_CRYPTO_PROVIDER_LOAD_TC003(char *path, int cmd, char *test1, char *attr | |||
| 234 | ASSERT_EQ(CRYPT_EAL_ProviderSetLoadPath(NULL, path), CRYPT_SUCCESS); | 234 | ASSERT_EQ(CRYPT_EAL_ProviderSetLoadPath(NULL, path), CRYPT_SUCCESS); |
| 235 | ASSERT_EQ(CRYPT_EAL_ProviderLoad(NULL, cmd, test1, NULL, NULL), CRYPT_SUCCESS); | 235 | ASSERT_EQ(CRYPT_EAL_ProviderLoad(NULL, cmd, test1, NULL, NULL), CRYPT_SUCCESS); |
| 236 | ASSERT_EQ(CRYPT_EAL_ProviderUnload(NULL, cmd, test1), CRYPT_SUCCESS); | 236 | ASSERT_EQ(CRYPT_EAL_ProviderUnload(NULL, cmd, test1), CRYPT_SUCCESS); |
| 237 | - CRYPT_EAL_Cleanup(1); | 237 | + CRYPT_EAL_Cleanup(CRYPT_EAL_INIT_ALL); |
| 238 | ASSERT_EQ(CRYPT_EAL_ProviderLoad(NULL, cmd, test1, NULL, NULL), CRYPT_PROVIDER_INVALID_LIB_CTX); | 238 | ASSERT_EQ(CRYPT_EAL_ProviderLoad(NULL, cmd, test1, NULL, NULL), CRYPT_PROVIDER_INVALID_LIB_CTX); |
| 239 | ASSERT_EQ(CRYPT_EAL_Init(CRYPT_EAL_INIT_CPU|CRYPT_EAL_INIT_PROVIDER|CRYPT_EAL_INIT_PROVIDER_RAND), CRYPT_SUCCESS); | 239 | ASSERT_EQ(CRYPT_EAL_Init(CRYPT_EAL_INIT_CPU|CRYPT_EAL_INIT_PROVIDER|CRYPT_EAL_INIT_PROVIDER_RAND), CRYPT_SUCCESS); |
| 240 | ASSERT_EQ(CRYPT_EAL_ProviderSetLoadPath(NULL, path), CRYPT_SUCCESS); | 240 | ASSERT_EQ(CRYPT_EAL_ProviderSetLoadPath(NULL, path), CRYPT_SUCCESS); |
| @@ -250,7 +250,7 @@ void SDV_CRYPTO_PROVIDER_LOAD_TC003(char *path, int cmd, char *test1, char *attr | |||
| 250 | 250 | ||
| 251 | EXIT: | 251 | EXIT: |
| 252 | CRYPT_EAL_MdFreeCtx(mdCtx); | 252 | CRYPT_EAL_MdFreeCtx(mdCtx); |
| 253 | - CRYPT_EAL_Cleanup(1); | 253 | + CRYPT_EAL_Cleanup(CRYPT_EAL_INIT_ALL); |
| 254 | ASSERT_EQ(CRYPT_EAL_Init(CRYPT_EAL_INIT_CPU|CRYPT_EAL_INIT_PROVIDER|CRYPT_EAL_INIT_PROVIDER_RAND), CRYPT_SUCCESS); | 254 | ASSERT_EQ(CRYPT_EAL_Init(CRYPT_EAL_INIT_CPU|CRYPT_EAL_INIT_PROVIDER|CRYPT_EAL_INIT_PROVIDER_RAND), CRYPT_SUCCESS); |
| 255 | 255 | ||
| 256 | } | 256 | } |