diff --git a/interfaces/kits/js/napi/include/napi_util.h b/interfaces/kits/js/napi/include/napi_util.h index 61c623758fd1857f4f6f97180421601284c4959e..5a4f669d9afe88c1bf3fa81057f8b3ee7b9f4618 100644 --- a/interfaces/kits/js/napi/include/napi_util.h +++ b/interfaces/kits/js/napi/include/napi_util.h @@ -36,8 +36,6 @@ public: const napi_env &env, const napi_value &object, const std::string &fieldStr, uint32_t &fieldRef); static bool JsObjectToUint8( const napi_env &env, const napi_value &object, const std::string &fieldStr, uint8_t &fieldRef); - static bool JsObjectToUint8WithDefaultValue(const napi_env &env, - const napi_value &object, const std::string &fieldStr, uint8_t &fieldRef, uint8_t defaultValue); static bool JsUint8ArrayParse( const napi_env &env, const napi_value &object, uint8_t **uint8Buffer, size_t &bufferSize, size_t &offset); static void Uint8ArrayToJsValue( diff --git a/interfaces/kits/js/napi/src/napi_util.cpp b/interfaces/kits/js/napi/src/napi_util.cpp index a5e29001395cbe764ec57cb12c453133624c33dd..ea89af8069276ddbdb82aaf069ec1a696655f529 100644 --- a/interfaces/kits/js/napi/src/napi_util.cpp +++ b/interfaces/kits/js/napi/src/napi_util.cpp @@ -19,7 +19,6 @@ #include #include #include -#include #include "hilog_wrapper.h" #include "securec.h" @@ -211,53 +210,6 @@ bool NapiUtil::JsObjectToUint8( } } -bool NapiUtil::JsObjectToUint8WithDefaultValue( - const napi_env &env, const napi_value &object, const std::string &fieldStr, uint8_t &fieldRef, uint8_t defaultValue) -{ - bool hasProperty = false; - napi_status status = napi_has_named_property(env, object, fieldStr.c_str(), &hasProperty); - if (status != napi_ok || !hasProperty) { - fieldRef = defaultValue; - USB_HILOGI(MODULE_JS_NAPI, "Property '%{public}s' not found, using default: %{public}u", - fieldStr.c_str(), defaultValue); - return true; - } - - napi_value field = nullptr; - status = napi_get_named_property(env, object, fieldStr.c_str(), &field); - if (status != napi_ok) { - USB_HILOGE(MODULE_JS_NAPI, "Failed to get property '%{public}s'", fieldStr.c_str()); - return false; - } - - napi_valuetype valueType; - status = napi_typeof(env, field, &valueType); - if (status != napi_ok || valueType != napi_number) { - fieldRef = defaultValue; - USB_HILOGI(MODULE_JS_NAPI, "Property '%{public}s' is not a number, using default: %{public}u", - fieldStr.c_str(), defaultValue); - return true; - } - - uint32_t tempValue = 0; - status = napi_get_value_uint32(env, field, &tempValue); - if (status != napi_ok) { - fieldRef = defaultValue; - USB_HILOGI(MODULE_JS_NAPI, "Failed to convert '%{public}s' to uint32, using default: %{public}u", - fieldStr.c_str(), defaultValue); - return true; - } - - if (tempValue > UINT8_MAX) { - USB_HILOGE(MODULE_JS_NAPI, "Value of '%{public}s' out of range (0-255): %{public}u", - fieldStr.c_str(), tempValue); - return false; - } - - fieldRef = static_cast(tempValue); - return true; -} - bool NapiUtil::JsUint8ArrayParse( const napi_env &env, const napi_value &object, uint8_t **uint8Buffer, size_t &bufferSize, size_t &offset) { diff --git a/interfaces/kits/js/napi/src/serial_info.cpp b/interfaces/kits/js/napi/src/serial_info.cpp index 0b098efd34cdab380339687eec19e374e789ed46..66d53dc508a582d2aec38895c843e83c5cd6ebad 100644 --- a/interfaces/kits/js/napi/src/serial_info.cpp +++ b/interfaces/kits/js/napi/src/serial_info.cpp @@ -44,6 +44,7 @@ using namespace OHOS::USB; const int32_t ARGC_1 = 1; const int32_t ARGC_2 = 2; const int32_t ARGC_3 = 3; +const uint8_t DATA_BITS = 8; static UsbSrvClient &g_usbClient = UsbSrvClient::GetInstance(); @@ -137,6 +138,9 @@ static bool ParseSetAttributeInterfaceParams(napi_env env, napi_callback_info in int32_t& portIdValue, UsbSerialAttr& serialAttribute) { USB_HILOGI(MODULE_JS_NAPI, "ParseSetAttributeInterfaceParams start"); + serialAttribute.dataBits_ = DATA_BITS; + serialAttribute.parity_ = 0; + serialAttribute.stopBits_ = 0; size_t argc = ARGC_2; napi_value argv[ARGC_2] = { nullptr }; if (!CheckNapiResult(env, napi_get_cb_info(env, info, &argc, argv, nullptr, nullptr), @@ -164,9 +168,10 @@ static bool ParseSetAttributeInterfaceParams(napi_env env, napi_callback_info in return false; } bool result = NapiUtil::JsObjectToUint32(env, obj, "baudRate", serialAttribute.baudRate_) && - NapiUtil::JsObjectToUint8WithDefaultValue(env, obj, "dataBits", serialAttribute.dataBits_, 8) && - NapiUtil::JsObjectToUint8WithDefaultValue(env, obj, "parity", serialAttribute.parity_, 0) && - NapiUtil::JsObjectToUint8WithDefaultValue(env, obj, "stopBits", serialAttribute.stopBits_, 0); + NapiUtil::JsObjectToUint8(env, obj, "dataBits", serialAttribute.dataBits_) && + NapiUtil::JsObjectToUint8(env, obj, "parity", serialAttribute.parity_) && + NapiUtil::JsObjectToUint8(env, obj, "stopBits", serialAttribute.stopBits_); + USB_HILOGI(MODULE_JS_NAPI, "serialAttribute.dataBits_: %{public}d", serialAttribute.dataBits_); if (!CheckAndThrowOnError(env, result == true, SYSPARAM_INVALID_INPUT, "Parse attribute failed.")) { return false; diff --git a/services/native/src/usb_host_manager.cpp b/services/native/src/usb_host_manager.cpp index e422bf4ba36a4fc490a332bee12d4f1549e4c387..f3bb46914e313e4f4e63af2208dfa76b10e0e9e8 100644 --- a/services/native/src/usb_host_manager.cpp +++ b/services/native/src/usb_host_manager.cpp @@ -1492,8 +1492,8 @@ int32_t UsbHostManager::GetEdmTypePolicy(sptr remote, std::vector } int32_t size = reply.ReadInt32(); - if (size > WHITELIST_POLICY_MAX_DEVICES) { - USB_HILOGE(MODULE_USB_SERVICE, "EdmTypeList size=[%{public}d] is too large", size); + if (size <= 0 || static_cast(size) > WHITELIST_POLICY_MAX_DEVICES) { + USB_HILOGE(MODULE_USB_SERVICE, "EdmTypeList size=[%{public}d] is invalid", size); return UEC_SERVICE_EDM_DEVICE_SIZE_EXCEED; } USB_HILOGI(MODULE_USB_SERVICE, "GetEdmTypePolicy return size:%{public}d", size); @@ -1593,8 +1593,8 @@ int32_t UsbHostManager::GetEdmWhiteListPolicy(sptr remote, std::v } int32_t size = reply.ReadInt32(); - if (size > WHITELIST_POLICY_MAX_DEVICES) { - USB_HILOGE(MODULE_USB_SERVICE, "EdmWhiteList size=[%{public}d] is too large", size); + if (size <= 0 || static_cast(size) > WHITELIST_POLICY_MAX_DEVICES) { + USB_HILOGE(MODULE_USB_SERVICE, "EdmTypeList size=[%{public}d] is invalid", size); return UEC_SERVICE_EDM_DEVICE_SIZE_EXCEED; } USB_HILOGI(MODULE_USB_SERVICE, "GetEdmWhiteListPolicy return size:%{public}d", size);