
From: Chenghai Huang <huangchenghai2@huawei.com> 1.Check whether the function is valid before calling the corresponding functio`2.Calculate the length of an array using ARRAY_SIZE. 2.Calculate the length of an array by calling ARRAY_SIZE(). Signed-off-by: Chenghai Huang <huangchenghai2@huawei.com> Signed-off-by: JiangShui Yang <yangjiangshui@h-partners.com> --- src/uadk_prov_cipher.c | 7 ++++--- src/uadk_prov_sm2.c | 12 ++++++++---- 2 files changed, 12 insertions(+), 7 deletions(-) diff --git a/src/uadk_prov_cipher.c b/src/uadk_prov_cipher.c index 23b93d1..82edc55 100644 --- a/src/uadk_prov_cipher.c +++ b/src/uadk_prov_cipher.c @@ -31,7 +31,6 @@ #define UADK_DO_SOFT (-0xE0) #define UADK_DO_HW (-0xF0) -#define OSSL_NELEM(x) (sizeof(x)/sizeof((x)[0])) #define CTX_SYNC_ENC 0 #define CTX_SYNC_DEC 1 #define CTX_ASYNC_ENC 2 @@ -182,9 +181,10 @@ static struct cts_mode_name2id_st cts_modes[] = { static const char *ossl_cipher_cbc_cts_mode_id2name(unsigned int id) { + size_t len = ARRAY_SIZE(cts_modes); size_t i; - for (i = 0; i < OSSL_NELEM(cts_modes); ++i) { + for (i = 0; i < len; ++i) { if (cts_modes[i].id == id) return cts_modes[i].ossl_mode_name; } @@ -194,9 +194,10 @@ static const char *ossl_cipher_cbc_cts_mode_id2name(unsigned int id) static int ossl_cipher_cbc_cts_mode_name2id(const char *name) { + size_t len = ARRAY_SIZE(cts_modes); size_t i; - for (i = 0; i < OSSL_NELEM(cts_modes); ++i) { + for (i = 0; i < len; ++i) { if (OPENSSL_strcasecmp(name, cts_modes[i].ossl_mode_name) == 0) return (int)cts_modes[i].id; } diff --git a/src/uadk_prov_sm2.c b/src/uadk_prov_sm2.c index 7091ea4..c465a15 100644 --- a/src/uadk_prov_sm2.c +++ b/src/uadk_prov_sm2.c @@ -626,12 +626,16 @@ error: static void *uadk_keymgmt_sm2_gen_sw(void *genctx, OSSL_CALLBACK *osslcb, void *cbarg) { - if (uadk_get_sw_offload_state()) { - fprintf(stderr, "switch to software sm2 keygen.\n"); - return get_default_sm2_keymgmt().gen(genctx, osslcb, cbarg); + if (!uadk_get_sw_offload_state()) + return NULL; + + if (!get_default_sm2_keymgmt().gen) { + fprintf(stderr, "failed to get keymgmt gen function\n"); + return NULL; } - return NULL; + fprintf(stderr, "switch to software sm2 keygen.\n"); + return get_default_sm2_keymgmt().gen(genctx, osslcb, cbarg); } /** -- 2.33.0