From fc9aab53b6f25c42a2a5671cce1e08fc6e150943 Mon Sep 17 00:00:00 2001 From: litiangang4 Date: Thu, 13 Jul 2023 10:36:10 +0800 Subject: [PATCH] =?UTF-8?q?=E5=88=A0=E9=99=A4=E8=A7=A6=E6=91=B8=E5=B1=8F?= =?UTF-8?q?=E8=8A=82=E7=82=B9=E9=9D=9E=E6=B3=95=E5=B1=9E=E6=80=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: litiangang4 --- .../source/inputinject/src/virtual_device.cpp | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/services/source/inputinject/src/virtual_device.cpp b/services/source/inputinject/src/virtual_device.cpp index 232bfeb..feef9e2 100644 --- a/services/source/inputinject/src/virtual_device.cpp +++ b/services/source/inputinject/src/virtual_device.cpp @@ -48,7 +48,7 @@ VirtualDevice::~VirtualDevice() bool VirtualDevice::DoIoctl(int32_t fd, int32_t request, const uint32_t value) { - int32_t rc = ioctl(fd, request, value); + int rc = ioctl(fd, request, value); if (rc < 0) { DHLOGE("ioctl failed"); return false; @@ -90,6 +90,10 @@ void VirtualDevice::SetABSInfo(struct uinput_user_dev& inputUserDev, const Input DHLOGI("SetABSInfo nodeName: %s, absCode: %d, absMin: %d, absMax: %d, absFuzz: %d, absFlat: %d", inputDevice.name.c_str(), absCode, absInfo[ABS_MIN_POS], absInfo[ABS_MAX_POS], absInfo[ABS_FUZZ_POS], absInfo[ABS_FLAT_POS]); + if (absInfo[ABS_MAX_POS] < absInfo[ABS_MIN_POS]) { + DHLOGE("NodeName: %s, absCode: %d, attributes is invalid.", inputDevice.name.c_str(), absCode); + continue; + } inputUserDev.absmin[absCode] = absInfo[ABS_MIN_POS]; inputUserDev.absmax[absCode] = absInfo[ABS_MAX_POS]; inputUserDev.absfuzz[absCode] = absInfo[ABS_FUZZ_POS]; @@ -146,12 +150,9 @@ bool VirtualDevice::SetUp(const InputDevice& inputDevice, const std::string& dev DHLOGE("Unable to set input device info"); return false; } - - if (ioctl(fd_, UI_DEV_CREATE) < 0) { - DHLOGE( - "fd = %d, ioctl(fd_, UI_DEV_CREATE) = %d", - fd_, ioctl(fd_, UI_DEV_CREATE)); - DHLOGE("Unable to create input device"); + int ret = ioctl(fd_, UI_DEV_CREATE); + if (ret < 0) { + DHLOGE("Unable to create input device, fd: %d, ret= %d", fd_, ret); return false; } DHLOGI("create fd %d", fd_); -- Gitee