diff --git a/frameworks/resmgr/src/res_desc.cpp b/frameworks/resmgr/src/res_desc.cpp index e9c836339139267f04450ece067dca443a39f2f8..decbf51d832cdf46b36295b305dbf785865d8220 100644 --- a/frameworks/resmgr/src/res_desc.cpp +++ b/frameworks/resmgr/src/res_desc.cpp @@ -241,7 +241,7 @@ bool IdItem::IsRef(const std::string &value, ResType &resType, uint32_t &id) idStr.assign(it + index + 1, value.size() - index); unsigned long tmpId; - if (!Utils::convertToUnsignedLong(idStr, tmpId)) { + if (!Utils::convertToUnsignedLong(idStr, tmpId) || tmpId > UINT32_MAX) { return false; } uint32_t idd = static_cast(tmpId); diff --git a/interfaces/js/innerkits/core/src/resource_manager_napi_utils.cpp b/interfaces/js/innerkits/core/src/resource_manager_napi_utils.cpp index 3c52835f8c2aa803134a7345f7cbc7745924b455..d6f6ce222e0318e933f380240a2ed42f345af1c5 100644 --- a/interfaces/js/innerkits/core/src/resource_manager_napi_utils.cpp +++ b/interfaces/js/innerkits/core/src/resource_manager_napi_utils.cpp @@ -128,7 +128,7 @@ uint32_t ResourceManagerNapiUtils::GetResId(napi_env env, size_t argc, napi_valu } int64_t resId = 0; status = napi_get_value_int64(env, argv[ARRAY_SUBCRIPTOR_ZERO], &resId); - if (status != napi_ok) { + if (status != napi_ok || resId < 0 || resId > UINT32_MAX) { RESMGR_HILOGE(RESMGR_JS_TAG, "Failed to get id number"); return 0; } @@ -360,7 +360,11 @@ bool ResourceManagerNapiUtils::GetResourceObjectId(napi_env env, } int64_t resId = 0; status = napi_get_value_int64(env, id, &resId); - if (status != napi_ok) { + if (resId == -1) { + resourcePtr->id = 0; + return true; + } + if (status != napi_ok || resId < 0 || resId > UINT32_MAX) { RESMGR_HILOGE(RESMGR_JS_TAG, "Failed to get resource id value"); return false; }