diff --git a/frameworks/src/bundle_active_app_group_napi.cpp b/frameworks/src/bundle_active_app_group_napi.cpp index d3edabf605f4bff7c66f39182a143d3737bfa9ce..930e3929c828df9145d99a2bc6d7ff2423f9f09c 100644 --- a/frameworks/src/bundle_active_app_group_napi.cpp +++ b/frameworks/src/bundle_active_app_group_napi.cpp @@ -39,14 +39,20 @@ const int32_t PRIORITY_GROUP_DEFAULT = -1; const uint32_t APP_USAGE_MIN_PARAMS_BUNDLE_GROUP = 2; const uint32_t APP_USAGE_PARAMS_BUNDLE_GROUP = 3; const uint32_t ZERO_ARG = 0; +const uint32_t FRIST_ARG = 1; const uint32_t SECOND_ARG = 2; const std::vector GROUP_TYPE {10, 20, 30, 40, 50, 60}; static sptr registerObserver = nullptr; std::mutex g_observerMutex_; -napi_value GetQueryAppGroupBundleName(const napi_env &env, napi_value* argv, QueryAppGroupParamsInfo ¶ms) +napi_value GetQueryAppGroupBundleName(const napi_env &env, napi_value* argv, QueryAppGroupParamsInfo ¶ms, + size_t argvLen) { + if (len <= ZERO_ARG) { + params.errorCode = ERR_PARAMETERS_EMPTY; + return BundleStateCommon::HandleParamErr(env, ERR_PARAMETERS_EMPTY, "bundleName"); + } napi_valuetype valuetype; NAPI_CALL(env, napi_typeof(env, argv[ZERO_ARG], &valuetype)); if (valuetype != napi_string) { @@ -82,14 +88,14 @@ napi_value ParseQueryAppGroupParameters(const napi_env &env, const napi_callback if (valuetype == napi_function) { napi_create_reference(env, argv[0], 1, ¶ms.callback); } else { - GetQueryAppGroupBundleName(env, argv, params); + GetQueryAppGroupBundleName(env, argv, params, sizeof(argv)); if (params.errorCode != ERR_OK) { return BundleStateCommon::NapiGetNull(env); } } } else if (argc == PRIORITY_GROUP_PARAMS) { // argv[0] : bundleName - GetQueryAppGroupBundleName(env, argv, params); + GetQueryAppGroupBundleName(env, argv, params, sizeof(argv)); if (params.errorCode != ERR_OK) { return BundleStateCommon::NapiGetNull(env); } @@ -195,9 +201,14 @@ napi_value QueryAppGroupSync(napi_env env, napi_callback_info info) return BundleStateCommon::GetErrorValue(env, errorCode); } -napi_value GetAppGroupParameters(const napi_env &env, napi_value* argv, ParamsBundleGroupInfo ¶ms) +napi_value GetAppGroupParameters(const napi_env &env, napi_value* argv, ParamsBundleGroupInfo ¶ms, + size_t argvLen) { - if (BundleStateCommon::GetInt32NumberValue(env, argv[1], params.newGroup) == nullptr) { + if (argvLen <= FRIST_ARG) { + params.errorCode = ERR_PARAMETERS_EMPTY; + return BundleStateCommon::HandleParamErr(env, ERR_PARAMETERS_EMPTY, "newGroup"); + } + if (BundleStateCommon::GetInt32NumberValue(env, argv[FRIST_ARG], params.newGroup) == nullptr) { BUNDLE_ACTIVE_LOGW("ParseSetAppGroupParameters failed, newGroup type is invalid."); params.errorCode = ERR_NEW_GROUP_TYPE; return BundleStateCommon::HandleParamErr(env, ERR_NEW_GROUP_TYPE, ""); @@ -217,8 +228,13 @@ napi_value GetAppGroupParameters(const napi_env &env, napi_value* argv, ParamsBu return BundleStateCommon::NapiGetNull(env); } -napi_value GetSetAppGroupBundleName(const napi_env &env, napi_value* argv, ParamsBundleGroupInfo ¶ms) +napi_value GetSetAppGroupBundleName(const napi_env &env, napi_value* argv, ParamsBundleGroupInfo ¶ms, + size_t argvLen) { + if (argvLen <= ZERO_ARG) { + params.errorCode = ERR_PARAMETERS_EMPTY; + return BundleStateCommon::HandleParamErr(env, ERR_PARAMETERS_EMPTY, "bundleName"); + } napi_valuetype valuetype; NAPI_CALL(env, napi_typeof(env, argv[ZERO_ARG], &valuetype)); if (valuetype != napi_string) { @@ -247,12 +263,12 @@ napi_value ParseSetAppGroupParameters(const napi_env &env, const napi_callback_i return BundleStateCommon::HandleParamErr(env, ERR_PARAMETERS_NUMBER, ""); } // argv[0] : bundleName - GetSetAppGroupBundleName(env, argv, params); + GetSetAppGroupBundleName(env, argv, params, sizeof(argv)); if (params.errorCode != ERR_OK) { return BundleStateCommon::NapiGetNull(env); } // argv[1] : newGroup - GetAppGroupParameters(env, argv, params); + GetAppGroupParameters(env, argv, params, sizeof(argv)); if (params.errorCode != ERR_OK) { return BundleStateCommon::NapiGetNull(env); } diff --git a/frameworks/src/bundle_state_query_napi.cpp b/frameworks/src/bundle_state_query_napi.cpp index 4a61ec5ef4d6e68c3dbc53712476d5402346e9b3..38d4631e3ff3e8aef931dbfbcff329fa6d742dbb 100644 --- a/frameworks/src/bundle_state_query_napi.cpp +++ b/frameworks/src/bundle_state_query_napi.cpp @@ -452,8 +452,12 @@ napi_value QueryBundleEvents(napi_env env, napi_callback_info info) } napi_value GetBundleStatsInfoByIntervalCallBack(const napi_env &env, napi_value* argv, - AppUsageParamsByIntervalInfo ¶ms) + AppUsageParamsByIntervalInfo ¶ms, size_t argvLen) { + if (argvLen <= THIRD_ARG) { + params.errorCode = ERR_PARAMETERS_EMPTY; + return BundleStateCommon::HandleParamErr(env, ERR_PARAMETERS_EMPTY, "callback"); + } napi_valuetype valuetype = napi_undefined; NAPI_CALL(env, napi_typeof(env, argv[THIRD_ARG], &valuetype)); if (valuetype != napi_function) { @@ -510,7 +514,7 @@ napi_value ParseQueryBundleStatsInfoByInterval(const napi_env &env, const napi_c } // argv[THIRD_ARG]: callback if (argc == APP_USAGE_PARAMS_BY_INTERVAL) { - GetBundleStatsInfoByIntervalCallBack(env, argv, params); + GetBundleStatsInfoByIntervalCallBack(env, argv, params, sizeof(argv)); if (params.errorCode != ERR_OK) { return BundleStateCommon::NapiGetNull(env); }