From 96ff0088f5b0654ff88d023e203cce9f9e7f18ef Mon Sep 17 00:00:00 2001 From: hui1975 Date: Thu, 3 Nov 2022 19:23:54 +0800 Subject: [PATCH 1/2] =?UTF-8?q?sensor=E4=B8=ADread()=E8=BF=94=E5=9B=9E?= =?UTF-8?q?=E5=80=BC=E6=A0=A1=E9=AA=8C=E4=B8=93=E9=A1=B9=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: hui1975 Change-Id: Ia6f8aa216f6978102cc655caf23af38bbea41bc2 --- .../sensor/src/sensor_service_proxy.cpp | 6 +++- utils/src/sensor.cpp | 29 ++++++++++--------- 2 files changed, 21 insertions(+), 14 deletions(-) diff --git a/frameworks/native/sensor/src/sensor_service_proxy.cpp b/frameworks/native/sensor/src/sensor_service_proxy.cpp index b0406b7a..76be0c8c 100755 --- a/frameworks/native/sensor/src/sensor_service_proxy.cpp +++ b/frameworks/native/sensor/src/sensor_service_proxy.cpp @@ -177,7 +177,11 @@ std::vector SensorServiceProxy::GetSensorList() SEN_HILOGE("failed, ret:%{public}d", ret); return sensors; } - int32_t sensorCount = reply.ReadInt32(); + int32_t sensorCount; + if (!reply.ReadInt32(sensorCount)) { + SEN_HILOGE("Parcel read failed"); + return sensors; + } SEN_HILOGD("sensorCount:%{public}d", sensorCount); if (sensorCount > MAX_SENSOR_COUNT) { sensorCount = MAX_SENSOR_COUNT; diff --git a/utils/src/sensor.cpp b/utils/src/sensor.cpp index 3c0c2b7c..6dcb9f9c 100644 --- a/utils/src/sensor.cpp +++ b/utils/src/sensor.cpp @@ -241,19 +241,22 @@ std::unique_ptr Sensor::Unmarshalling(Parcel &parcel) bool Sensor::ReadFromParcel(Parcel &parcel) { - sensorId_ = parcel.ReadUint32(); - sensorTypeId_ = parcel.ReadUint32(); - sensorName_ = parcel.ReadString(); - vendorName_ = parcel.ReadString(); - firmwareVersion_ = parcel.ReadString(); - hardwareVersion_ = parcel.ReadString(); - power_ = parcel.ReadFloat(); - maxRange_ = parcel.ReadFloat(); - resolution_ = parcel.ReadFloat(); - flags_ = parcel.ReadUint32(); - fifoMaxEventCount_ = parcel.ReadInt32(); - minSamplePeriodNs_ = parcel.ReadInt64(); - maxSamplePeriodNs_ = parcel.ReadInt64(); + + if ((!parcel.ReadUint32(sensorId_)) || + (!parcel.ReadUint32(sensorTypeId_)) || + (!parcel.ReadString(sensorName_)) || + (!parcel.ReadString(vendorName_)) || + (!parcel.ReadString(firmwareVersion_)) || + (!parcel.ReadString(hardwareVersion_)) || + (!parcel.ReadFloat(power_)) || + (!parcel.ReadFloat(maxRange_)) || + (!parcel.ReadFloat(resolution_)) || + (!parcel.ReadUint32(flags_)) || + (!parcel.ReadInt32(fifoMaxEventCount_)) || + (!parcel.ReadInt64(minSamplePeriodNs_)) || + (!parcel.ReadInt64(maxSamplePeriodNs_))) { + return false; + } return true; } } // namespace Sensors -- Gitee From 84af57b93b786f90f256dcc11bdc07d819141ca7 Mon Sep 17 00:00:00 2001 From: hui1975 Date: Thu, 3 Nov 2022 20:53:58 +0800 Subject: [PATCH 2/2] =?UTF-8?q?58=E8=A1=8Cset=E5=A4=B1=E8=B4=A5=E5=89=8D?= =?UTF-8?q?=E8=A6=81=E5=85=B3=E9=97=ADfd=EF=BC=8C=E5=88=A0=E9=99=A499?= =?UTF-8?q?=E8=A1=8C=E6=81=92=E6=88=90=E7=AB=8B=E6=9D=A1=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: hui1975 Change-Id: Iff0797b9f09ba66a7d2af4be80cc1b76ac9b3d37 --- utils/include/sensor_basic_data_channel.h | 1 + utils/src/sensor_basic_data_channel.cpp | 33 ++++++++++++++--------- 2 files changed, 21 insertions(+), 13 deletions(-) diff --git a/utils/include/sensor_basic_data_channel.h b/utils/include/sensor_basic_data_channel.h index a98543c2..783eae33 100644 --- a/utils/include/sensor_basic_data_channel.h +++ b/utils/include/sensor_basic_data_channel.h @@ -42,6 +42,7 @@ public: bool GetSensorStatus() const; void SetSensorStatus(bool isActive); const std::unordered_map &GetDataCacheBuf() const; + int32_t CloseFdWhenErr(int32_t &sockFd); private: int32_t sendFd_; diff --git a/utils/src/sensor_basic_data_channel.cpp b/utils/src/sensor_basic_data_channel.cpp index 29bfd591..dd571fd4 100755 --- a/utils/src/sensor_basic_data_channel.cpp +++ b/utils/src/sensor_basic_data_channel.cpp @@ -38,6 +38,13 @@ SensorBasicDataChannel::SensorBasicDataChannel() : sendFd_(-1), receiveFd_(-1), SEN_HILOGD("isActive_:%{public}d,sendFd:%{public}d", isActive_, sendFd_); } +int32_t SensorBasicDataChannel::CloseFdWhenErr(int32_t &sockFd) +{ + close(sockFd); + sockFd = -1; + return SENSOR_CHANNEL_SOCKET_CREATE_ERR; +} + int32_t SensorBasicDataChannel::CreateSensorBasicChannel() { if ((sendFd_ != -1) || (receiveFd_ != -1)) { @@ -58,34 +65,34 @@ int32_t SensorBasicDataChannel::CreateSensorBasicChannel() int32_t ret = setsockopt(socketPair[0], SOL_SOCKET, SO_SNDBUF, &SENSOR_READ_DATA_SIZE, sizeof(SENSOR_READ_DATA_SIZE)); if (ret != 0) { - SEN_HILOGE("setsockopt socketpair 0 failed"); - return SENSOR_CHANNEL_SOCKET_CREATE_ERR; + SEN_HILOGE("setsockopt socketpair 0 failed, ret: %{public}d, errno: %{public}d", ret, errno); + return CloseFdWhenErr(socketPair[0]); } ret = setsockopt(socketPair[1], SOL_SOCKET, SO_RCVBUF, &SENSOR_READ_DATA_SIZE, sizeof(SENSOR_READ_DATA_SIZE)); if (ret != 0) { - SEN_HILOGE("setsockopt socketpair 1 failed"); - return SENSOR_CHANNEL_SOCKET_CREATE_ERR; + SEN_HILOGE("setsockopt socketpair 1 failed, ret: %{public}d, errno: %{public}d", ret, errno); + return CloseFdWhenErr(socketPair[1]); } int32_t bufferSize = DEFAULT_CHANNEL_SIZE; ret = setsockopt(socketPair[0], SOL_SOCKET, SO_RCVBUF, &bufferSize, sizeof(bufferSize)); if (ret != 0) { - SEN_HILOGE("setsockopt socketpair 0 failed"); - return SENSOR_CHANNEL_SOCKET_CREATE_ERR; + SEN_HILOGE("setsockopt socketpair 0 failed, ret: %{public}d, errno: %{public}d", ret, errno); + return CloseFdWhenErr(socketPair[0]); } ret = setsockopt(socketPair[1], SOL_SOCKET, SO_SNDBUF, &bufferSize, sizeof(bufferSize)); if (ret != 0) { - SEN_HILOGE("setsockopt socketpair 1 failed"); - return SENSOR_CHANNEL_SOCKET_CREATE_ERR; + SEN_HILOGE("setsockopt socketpair 1 failed, ret: %{public}d, errno: %{public}d", ret, errno); + return CloseFdWhenErr(socketPair[1]); } ret = fcntl(socketPair[0], F_SETFL, O_NONBLOCK); if (ret != 0) { - SEN_HILOGE("fcntl socketpair 0 failed"); - return SENSOR_CHANNEL_SOCKET_CREATE_ERR; + SEN_HILOGE("fcntl socketpair 0 failed, ret: %{public}d, errno: %{public}d", ret, errno); + return CloseFdWhenErr(socketPair[0]); } ret = fcntl(socketPair[1], F_SETFL, O_NONBLOCK); if (ret != 0) { - SEN_HILOGE("fcntl socketpair 1 failed"); - return SENSOR_CHANNEL_SOCKET_CREATE_ERR; + SEN_HILOGE("fcntl socketpair 1 failed, ret: %{public}d, errno: %{public}d", ret, errno); + return CloseFdWhenErr(socketPair[1]); } sendFd_ = socketPair[0]; receiveFd_ = socketPair[1]; @@ -96,7 +103,7 @@ int32_t SensorBasicDataChannel::CreateSensorBasicChannel() int32_t SensorBasicDataChannel::CreateSensorBasicChannel(MessageParcel &data) { CALL_LOG_ENTER; - if ((sendFd_ != -1) || (receiveFd_ != -1)) { + if (sendFd_ != -1) { SEN_HILOGD("already create socketpair"); return ERR_OK; } -- Gitee