From bc9ca4926f94f56fc9f71bb7343800ebd3c87893 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=A7=A6=E9=99=85=E7=BA=A2?= Date: Thu, 22 Aug 2024 06:30:47 +0000 Subject: [PATCH 1/5] add right verifying MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 秦际红 --- services/native/src/usb_service.cpp | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/services/native/src/usb_service.cpp b/services/native/src/usb_service.cpp index faff38fc..2d4a0824 100644 --- a/services/native/src/usb_service.cpp +++ b/services/native/src/usb_service.cpp @@ -841,6 +841,10 @@ int32_t UsbService::ControlTransfer(const UsbDev &dev, const UsbCtrlTransfer &ct int32_t UsbService::UsbControlTransfer( const UsbDev &dev, const UsbCtrlTransferParams &ctrlParams, std::vector &bufferData) { + if (!UsbService::CheckDevicePermission(busNum, devAddr)) { + return UEC_SERVICE_PERMISSION_DENIED; + } + std::lock_guard guard(mutex_); if (usbd_ == nullptr) { USB_HILOGE(MODULE_USB_SERVICE, "UsbService::usbd_ is nullptr"); @@ -885,6 +889,10 @@ int32_t UsbService::SetActiveConfig(uint8_t busNum, uint8_t devAddr, uint8_t con // LCOV_EXCL_START int32_t UsbService::GetActiveConfig(uint8_t busNum, uint8_t devAddr, uint8_t &configIndex) { + if (!UsbService::CheckDevicePermission(busNum, devAddr)) { + return UEC_SERVICE_PERMISSION_DENIED; + } + const UsbDev dev = {busNum, devAddr}; if (usbd_ == nullptr) { USB_HILOGE(MODULE_USB_SERVICE, "UsbService::usbd_ is nullptr"); @@ -955,6 +963,10 @@ int32_t UsbService::GetFileDescriptor(uint8_t busNum, uint8_t devAddr, int32_t & int32_t UsbService::RequestQueue(const UsbDev &dev, const UsbPipe &pipe, const std::vector &clientData, const std::vector &bufferData) { + if (!UsbService::CheckDevicePermission(dev.busNum, dev.devAddr)) { + return UEC_SERVICE_PERMISSION_DENIED; + } + if (usbd_ == nullptr) { USB_HILOGE(MODULE_USB_SERVICE, "UsbService::usbd_ is nullptr"); return UEC_SERVICE_INVALID_VALUE; @@ -971,6 +983,10 @@ int32_t UsbService::RequestQueue(const UsbDev &dev, const UsbPipe &pipe, const s int32_t UsbService::RequestWait( const UsbDev &dev, int32_t timeOut, std::vector &clientData, std::vector &bufferData) { + if (!UsbService::CheckDevicePermission(dev.busNum, dev.devAddr)) { + return UEC_SERVICE_PERMISSION_DENIED; + } + if (usbd_ == nullptr) { USB_HILOGE(MODULE_USB_SERVICE, "UsbService::usbd_ is nullptr"); return UEC_SERVICE_INVALID_VALUE; @@ -986,6 +1002,10 @@ int32_t UsbService::RequestWait( // LCOV_EXCL_START int32_t UsbService::RequestCancel(uint8_t busNum, uint8_t devAddr, uint8_t interfaceId, uint8_t endpointId) { + if (!UsbService::CheckDevicePermission(busNum, devAddr)) { + return UEC_SERVICE_PERMISSION_DENIED; + } + const UsbDev dev = {busNum, devAddr}; const UsbPipe pipe = {interfaceId, endpointId}; if (usbd_ == nullptr) { -- Gitee From 2fd6ff9958d258eb571f5c23756bb1a96333e660 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=A7=A6=E9=99=85=E7=BA=A2?= Date: Thu, 22 Aug 2024 06:47:15 +0000 Subject: [PATCH 2/5] add right verifying MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 秦际红 --- services/native/src/usb_service.cpp | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/services/native/src/usb_service.cpp b/services/native/src/usb_service.cpp index 2d4a0824..bad7c586 100644 --- a/services/native/src/usb_service.cpp +++ b/services/native/src/usb_service.cpp @@ -1715,6 +1715,10 @@ bool UsbService::GetBundleInfo(std::string &tokenId, int32_t &userId) // LCOV_EXCL_START int32_t UsbService::RegBulkCallback(const UsbDev &devInfo, const UsbPipe &pipe, const sptr &cb) { + if (!UsbService::CheckDevicePermission(devInfo.busNum, devInfo.devAddr)) { + return UEC_SERVICE_PERMISSION_DENIED; + } + if (cb == nullptr) { USB_HILOGE(MODULE_USB_SERVICE, "cb is nullptr"); return UEC_SERVICE_INVALID_VALUE; @@ -1739,6 +1743,10 @@ int32_t UsbService::RegBulkCallback(const UsbDev &devInfo, const UsbPipe &pipe, // LCOV_EXCL_START int32_t UsbService::UnRegBulkCallback(const UsbDev &devInfo, const UsbPipe &pipe) { + if (!UsbService::CheckDevicePermission(devInfo.busNum, devInfo.devAddr)) { + return UEC_SERVICE_PERMISSION_DENIED; + } + if (usbd_ == nullptr) { USB_HILOGE(MODULE_USB_SERVICE, "UsbService::usbd_ is nullptr"); return UEC_SERVICE_INVALID_VALUE; @@ -1756,6 +1764,10 @@ int32_t UsbService::UnRegBulkCallback(const UsbDev &devInfo, const UsbPipe &pipe // LCOV_EXCL_START int32_t UsbService::BulkRead(const UsbDev &devInfo, const UsbPipe &pipe, sptr &ashmem) { + if (!UsbService::CheckDevicePermission(devInfo.busNum, devInfo.devAddr)) { + return UEC_SERVICE_PERMISSION_DENIED; + } + if (ashmem == nullptr) { USB_HILOGE(MODULE_USB_SERVICE, "BulkRead error ashmem"); return UEC_SERVICE_INVALID_VALUE; @@ -1776,6 +1788,10 @@ int32_t UsbService::BulkRead(const UsbDev &devInfo, const UsbPipe &pipe, sptr &ashmem) { + if (!UsbService::CheckDevicePermission(devInfo.busNum, devInfo.devAddr)) { + return UEC_SERVICE_PERMISSION_DENIED; + } + if (ashmem == nullptr) { USB_HILOGE(MODULE_USB_SERVICE, "BulkWrite error ashmem"); return UEC_SERVICE_INVALID_VALUE; @@ -1796,6 +1812,10 @@ int32_t UsbService::BulkWrite(const UsbDev &devInfo, const UsbPipe &pipe, sptr Date: Thu, 22 Aug 2024 07:06:27 +0000 Subject: [PATCH 3/5] add right verifying MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 秦际红 --- services/native/src/usb_service.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/services/native/src/usb_service.cpp b/services/native/src/usb_service.cpp index bad7c586..38fa5c80 100644 --- a/services/native/src/usb_service.cpp +++ b/services/native/src/usb_service.cpp @@ -841,7 +841,7 @@ int32_t UsbService::ControlTransfer(const UsbDev &dev, const UsbCtrlTransfer &ct int32_t UsbService::UsbControlTransfer( const UsbDev &dev, const UsbCtrlTransferParams &ctrlParams, std::vector &bufferData) { - if (!UsbService::CheckDevicePermission(busNum, devAddr)) { + if (!UsbService::CheckDevicePermission(dev.busNum, dev.devAddr)) { return UEC_SERVICE_PERMISSION_DENIED; } @@ -1718,7 +1718,7 @@ int32_t UsbService::RegBulkCallback(const UsbDev &devInfo, const UsbPipe &pipe, if (!UsbService::CheckDevicePermission(devInfo.busNum, devInfo.devAddr)) { return UEC_SERVICE_PERMISSION_DENIED; } - + if (cb == nullptr) { USB_HILOGE(MODULE_USB_SERVICE, "cb is nullptr"); return UEC_SERVICE_INVALID_VALUE; -- Gitee From 18492a8fd85d5ed786ae138051d4e502ba98fd00 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=A7=A6=E9=99=85=E7=BA=A2?= Date: Thu, 22 Aug 2024 07:37:35 +0000 Subject: [PATCH 4/5] add right verifying MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 秦际红 --- services/native/src/usb_service.cpp | 38 +++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) diff --git a/services/native/src/usb_service.cpp b/services/native/src/usb_service.cpp index 38fa5c80..d43a71d9 100644 --- a/services/native/src/usb_service.cpp +++ b/services/native/src/usb_service.cpp @@ -505,6 +505,14 @@ int32_t UsbService::RemoveRight(std::string deviceName) // LCOV_EXCL_START int32_t UsbService::GetDevices(std::vector &deviceList) { + if (usbRightManager_ == nullptr) { + USB_HILOGE(MODULE_USB_SERVICE, "invalid usbRightManager_"); + return UEC_SERVICE_INVALID_VALUE; + } + if (!(usbRightManager_->CheckPermission())) { + USB_HILOGW(MODULE_USB_SERVICE, "is not system app"); + return UEC_SERVICE_PERMISSION_DENIED_SYSAPI; + } std::map devices; if (usbHostManager_ == nullptr) { USB_HILOGE(MODULE_USB_SERVICE, "invalid usbHostManager_"); @@ -2048,6 +2056,14 @@ int32_t UsbService::PreCallFunction() // LCOV_EXCL_START int32_t UsbService::ManageGlobalInterface(bool disable) { + if (usbRightManager_ == nullptr) { + USB_HILOGE(MODULE_USB_SERVICE, "invalid usbRightManager_"); + return UEC_SERVICE_INVALID_VALUE; + } + if (!(usbRightManager_->CheckPermission())) { + USB_HILOGW(MODULE_USB_SERVICE, "is not system app"); + return UEC_SERVICE_PERMISSION_DENIED_SYSAPI; + } if (PreCallFunction() != UEC_OK) { USB_HILOGE(MODULE_USB_SERVICE, "PreCallFunction failed"); return UEC_SERVICE_PRE_MANAGE_INTERFACE_FAILED; @@ -2060,6 +2076,14 @@ int32_t UsbService::ManageGlobalInterface(bool disable) // LCOV_EXCL_START int32_t UsbService::ManageDevice(int32_t vendorId, int32_t productId, bool disable) { + if (usbRightManager_ == nullptr) { + USB_HILOGE(MODULE_USB_SERVICE, "invalid usbRightManager_"); + return UEC_SERVICE_INVALID_VALUE; + } + if (!(usbRightManager_->CheckPermission())) { + USB_HILOGW(MODULE_USB_SERVICE, "is not system app"); + return UEC_SERVICE_PERMISSION_DENIED_SYSAPI; + } if (PreCallFunction() != UEC_OK) { USB_HILOGE(MODULE_USB_SERVICE, "PreCallFunction failed"); return UEC_SERVICE_PRE_MANAGE_INTERFACE_FAILED; @@ -2072,6 +2096,14 @@ int32_t UsbService::ManageDevice(int32_t vendorId, int32_t productId, bool disab // LCOV_EXCL_START int32_t UsbService::ManageInterfaceType(const std::vector &disableType, bool disable) { + if (usbRightManager_ == nullptr) { + USB_HILOGE(MODULE_USB_SERVICE, "invalid usbRightManager_"); + return UEC_SERVICE_INVALID_VALUE; + } + if (!(usbRightManager_->CheckPermission())) { + USB_HILOGW(MODULE_USB_SERVICE, "is not system app"); + return UEC_SERVICE_PERMISSION_DENIED_SYSAPI; + } if (PreCallFunction() != UEC_OK) { USB_HILOGE(MODULE_USB_SERVICE, "PreCallFunction failed"); return UEC_SERVICE_PRE_MANAGE_INTERFACE_FAILED; @@ -2268,6 +2300,9 @@ int32_t UsbService::ClearHalt(uint8_t busNum, uint8_t devAddr, uint8_t interface // LCOV_EXCL_START int32_t UsbService::GetInterfaceActiveStatus(uint8_t busNum, uint8_t devAddr, uint8_t interfaceid, bool &unactivated) { + if (!UsbService::CheckDevicePermission(busNum, devAddr)) { + return UEC_SERVICE_PERMISSION_DENIED; + } if (PreCallFunction() != UEC_OK) { USB_HILOGE(MODULE_USB_SERVICE, "PreCallFunction failed"); return UEC_SERVICE_PRE_MANAGE_INTERFACE_FAILED; @@ -2289,6 +2324,9 @@ int32_t UsbService::GetInterfaceActiveStatus(uint8_t busNum, uint8_t devAddr, ui // LCOV_EXCL_START int32_t UsbService::GetDeviceSpeed(uint8_t busNum, uint8_t devAddr, uint8_t &speed) { + if (!UsbService::CheckDevicePermission(busNum, devAddr)) { + return UEC_SERVICE_PERMISSION_DENIED; + } if (PreCallFunction() != UEC_OK) { USB_HILOGE(MODULE_USB_SERVICE, "PreCallFunction failed"); return UEC_SERVICE_PRE_MANAGE_INTERFACE_FAILED; -- Gitee From c696abbc0cb2afe99d35baea0b36c7baccc04512 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=A7=A6=E9=99=85=E7=BA=A2?= Date: Thu, 22 Aug 2024 11:31:21 +0000 Subject: [PATCH 5/5] add right verifying MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 秦际红 --- services/native/src/usb_service.cpp | 8 -------- 1 file changed, 8 deletions(-) diff --git a/services/native/src/usb_service.cpp b/services/native/src/usb_service.cpp index d43a71d9..181d034a 100644 --- a/services/native/src/usb_service.cpp +++ b/services/native/src/usb_service.cpp @@ -505,14 +505,6 @@ int32_t UsbService::RemoveRight(std::string deviceName) // LCOV_EXCL_START int32_t UsbService::GetDevices(std::vector &deviceList) { - if (usbRightManager_ == nullptr) { - USB_HILOGE(MODULE_USB_SERVICE, "invalid usbRightManager_"); - return UEC_SERVICE_INVALID_VALUE; - } - if (!(usbRightManager_->CheckPermission())) { - USB_HILOGW(MODULE_USB_SERVICE, "is not system app"); - return UEC_SERVICE_PERMISSION_DENIED_SYSAPI; - } std::map devices; if (usbHostManager_ == nullptr) { USB_HILOGE(MODULE_USB_SERVICE, "invalid usbHostManager_"); -- Gitee