From a2c5b16afd04b4cc857590e66db6730e3d22e5ac Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8E=8B=E9=9D=99?= Date: Tue, 10 Jun 2025 10:14:30 +0800 Subject: [PATCH] =?UTF-8?q?=E5=91=8A=E8=AD=A6=E6=B8=85=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 王静 --- frameworks/js/napi/crypto/src/napi_utils.cpp | 39 ++++++++++++++++---- 1 file changed, 32 insertions(+), 7 deletions(-) diff --git a/frameworks/js/napi/crypto/src/napi_utils.cpp b/frameworks/js/napi/crypto/src/napi_utils.cpp index b4684cd..77844fb 100644 --- a/frameworks/js/napi/crypto/src/napi_utils.cpp +++ b/frameworks/js/napi/crypto/src/napi_utils.cpp @@ -299,7 +299,7 @@ bool GetBigIntFromNapiValue(napi_env env, napi_value arg, HcfBigInteger *bigInt) LOGE("Get big int failed."); return false; } - int length = wordCount * sizeof(uint64_t); + size_t length = wordCount * sizeof(uint64_t); uint8_t *retArr = reinterpret_cast(HcfMalloc(length, 0)); if (retArr == nullptr) { LOGE("malloc blob data failed!"); @@ -316,7 +316,7 @@ bool GetBigIntFromNapiValue(napi_env env, napi_value arg, HcfBigInteger *bigInt) return false; } bigInt->data = retArr; - bigInt->len = length; + bigInt->len = (uint32_t)length; return true; } @@ -925,7 +925,12 @@ static bool GetFpField(napi_env env, napi_value arg, HcfECField **ecField) HcfFree(fp); return false; } - (void)memcpy_s(fp->base.fieldType, fieldTpyeLen+ 1, ECC_FIELD_TYPE_FP.c_str(), fieldTpyeLen); + if (memcpy_s(fp->base.fieldType, fieldTpyeLen + 1, ECC_FIELD_TYPE_FP.c_str(), fieldTpyeLen) != EOK) { + LOGE("memcpy_s data to buffer failed!"); + HcfFree(fp->base.fieldType); + HcfFree(fp); + return false; + } napi_value p = GetDetailAsyKeySpecValue(env, arg, "p"); bool ret = GetBigIntFromNapiValue(env, p, &fp->p); @@ -1008,7 +1013,12 @@ static bool InitEccCommonAsyKeySpec(napi_env env, napi_value arg, HcfEccCommPara LOGE("malloc ECC algName failed!"); return false; } - (void)memcpy_s(spec->base.algName, algNameLen+ 1, algName.c_str(), algNameLen); + if (memcpy_s(spec->base.algName, algNameLen + 1, algName.c_str(), algNameLen) != EOK) { + LOGE("memcpy_s data to buffer failed!"); + HcfFree(spec->base.algName); + spec->base.algName = nullptr; + return false; + } spec->base.specType = HCF_COMMON_PARAMS_SPEC; // get h @@ -1210,7 +1220,12 @@ static bool InitRsaCommonAsyKeySpec(napi_env env, napi_value arg, HcfRsaCommPara LOGE("malloc RSA algName failed!"); return false; } - (void)memcpy_s(spec->base.algName, algNameLen+ 1, RSA_ASY_KEY_SPEC.c_str(), algNameLen); + if (memcpy_s(spec->base.algName, algNameLen + 1, RSA_ASY_KEY_SPEC.c_str(), algNameLen) != EOK) { + LOGE("memcpy_s data to buffer failed!"); + HcfFree(spec->base.algName); + spec->base.algName = nullptr; + return false; + } spec->base.specType = HCF_COMMON_PARAMS_SPEC; napi_value n = GetDetailAsyKeySpecValue(env, arg, "n"); @@ -1335,7 +1350,12 @@ static bool InitAlg25519CommonAsyKeySpec(HcfAsyKeyParamsSpec *spec, const string LOGE("malloc alg25519 algName failed!"); return false; } - (void)memcpy_s(spec->algName, algNameLen + 1, algName.c_str(), algNameLen); + if (memcpy_s(spec->algName, algNameLen + 1, algName.c_str(), algNameLen) != EOK) { + LOGE("memcpy_s data to buffer failed!"); + HcfFree(spec->algName); + spec->algName = nullptr; + return false; + } return true; } @@ -1460,7 +1480,12 @@ static bool InitDhCommonAsyKeySpec(napi_env env, napi_value arg, HcfDhCommParams LOGE("malloc DH algName failed!"); return false; } - (void)memcpy_s(spec->base.algName, algNameLen+ 1, DH_ASY_KEY_SPEC.c_str(), algNameLen); + if (memcpy_s(spec->base.algName, algNameLen + 1, DH_ASY_KEY_SPEC.c_str(), algNameLen) != EOK) { + LOGE("memcpy_s data to buffer failed!"); + HcfFree(spec->base.algName); + spec->base.algName = nullptr; + return false; + } spec->base.specType = HCF_COMMON_PARAMS_SPEC; napi_value length = nullptr; -- Gitee