From e5815b18598c3771f9e9b5f639ecfee3f239ad51 Mon Sep 17 00:00:00 2001 From: luzhiye Date: Mon, 7 Jul 2025 15:08:05 +0800 Subject: [PATCH] =?UTF-8?q?=E4=B8=B2=E5=8F=A3=E9=85=8D=E7=BD=AE=E5=8F=82?= =?UTF-8?q?=E6=95=B0=E9=BB=98=E8=AE=A4=E5=80=BC=E6=95=B4=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: luzhiye --- interfaces/kits/js/napi/include/napi_util.h | 2 - interfaces/kits/js/napi/src/napi_util.cpp | 48 --------------------- interfaces/kits/js/napi/src/serial_info.cpp | 11 +++-- services/native/src/usb_host_manager.cpp | 8 ++-- 4 files changed, 12 insertions(+), 57 deletions(-) diff --git a/interfaces/kits/js/napi/include/napi_util.h b/interfaces/kits/js/napi/include/napi_util.h index 61c62375..5a4f669d 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 a5e29001..ea89af80 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 0b098efd..66d53dc5 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 e422bf4b..f3bb4691 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); -- Gitee