diff --git a/services/sensor/src/sensor_data_processer.cpp b/services/sensor/src/sensor_data_processer.cpp index 0a543ffc9527cc78bbbc6d1510a8ff8d2dedaa1a..1c3bd0605ff55eafeb6c8650be1830c8be92561f 100644 --- a/services/sensor/src/sensor_data_processer.cpp +++ b/services/sensor/src/sensor_data_processer.cpp @@ -240,9 +240,9 @@ void SensorDataProcesser::SendRawData(std::unordered_map(event.size()); + size_t eventSize = event.size(); std::vector transferEvents; - for (int32_t i = 0; i < eventSize; i++) { + for (size_t i = 0; i < eventSize; i++) { struct TransferSensorEvents transferEvent = { .sensorTypeId = event[i].sensorTypeId, .version = event[i].version, diff --git a/utils/src/report_data_callback.cpp b/utils/src/report_data_callback.cpp index 3f00ae3552ae46dc2714dcded49d94cb3273c574..425266e0c9a5f6703b7dc45afc0afcc9b58af7f6 100644 --- a/utils/src/report_data_callback.cpp +++ b/utils/src/report_data_callback.cpp @@ -66,6 +66,13 @@ int32_t ReportDataCallback::ReportEventCallback(const struct SensorEvent* event, } int32_t leftSize = CIRCULAR_BUF_LEN - cb->eventsBuf_.eventNum; int32_t toEndLen = CIRCULAR_BUF_LEN - cb->eventsBuf_.writePosition; + if (leftSize < 0 || toEndLen < 0) { + SEN_HILOGE("Leftsize and toendlen cannot be less than zero"); + if (event->data != nullptr) { + delete[] event->data; + } + return ERROR; + } if (toEndLen == 0) { cb->eventsBuf_.circularBuf[0] = *event; cb->eventsBuf_.writePosition = 1 - toEndLen;