diff --git a/services/sensor/hdi_connection/adapter/src/compatible_connection.cpp b/services/sensor/hdi_connection/adapter/src/compatible_connection.cpp index 86273d687574cbc328b8fb08cc254cb31429946d..f4bf6f62fb81f7f37085938eb2e666dbbd89c4e4 100644 --- a/services/sensor/hdi_connection/adapter/src/compatible_connection.cpp +++ b/services/sensor/hdi_connection/adapter/src/compatible_connection.cpp @@ -138,6 +138,7 @@ int32_t CompatibleConnection::SensorDataCallback(const struct SensorEvents *even .dataLen = event->dataLen }; sensorEvent.data = new uint8_t[SENSOR_DATA_LENGHT]; + CHKPR(sensorEvent.data, ERR_INVALID_VALUE); errno_t ret = memcpy_s(sensorEvent.data, event->dataLen, event->data, event->dataLen); if (ret != EOK) { SEN_HILOGE("copy data failed"); diff --git a/services/sensor/hdi_connection/adapter/src/sensor_event_callback.cpp b/services/sensor/hdi_connection/adapter/src/sensor_event_callback.cpp index 531b49cbca73bdbe36d47ab77bda253ceeda2b13..435bb4e08633e167ab82d61c0151d038fe6ee340 100644 --- a/services/sensor/hdi_connection/adapter/src/sensor_event_callback.cpp +++ b/services/sensor/hdi_connection/adapter/src/sensor_event_callback.cpp @@ -44,6 +44,7 @@ int32_t SensorEventCallback::OnDataEvent(const HdfSensorEvents& event) .dataLen = event.dataLen }; sensorEvent.data = new uint8_t[SENSOR_DATA_LENGHT]; + CHKPR(sensorEvent.data, ERR_INVALID_VALUE); for (int32_t i = 0; i < static_cast(dataSize); i++) { sensorEvent.data[i] = event.data[i]; } diff --git a/services/sensor/src/sensor_data_processer.cpp b/services/sensor/src/sensor_data_processer.cpp index be50d8c78b9094e6397815e1acbb5e29c4a04db1..d88d4911dd90b6022c90daa3f521395b3f32f3ec 100644 --- a/services/sensor/src/sensor_data_processer.cpp +++ b/services/sensor/src/sensor_data_processer.cpp @@ -356,7 +356,9 @@ int32_t SensorDataProcesser::ProcessEvents(sptr dataCallback int32_t eventNum = eventsBuf.eventNum; for (int32_t i = 0; i < eventNum; i++) { EventFilter(eventsBuf); - delete[] eventsBuf.circularBuf[eventsBuf.readPos].data; + if (eventsBuf.circularBuf[eventsBuf.readPos].data != nullptr) { + delete[] eventsBuf.circularBuf[eventsBuf.readPos].data; + } eventsBuf.readPos++; if (eventsBuf.readPos == CIRCULAR_BUF_LEN) { eventsBuf.readPos = 0;