From 6727cdb51fe467afc1c14cc45bafc53f62e14d4c Mon Sep 17 00:00:00 2001 From: "kibak.yoon" Date: Tue, 29 Mar 2016 00:39:13 +0900 Subject: [PATCH] sensord: fix the memory leak when get_data is failed - problem: if sensor->get_data() is failed, event memory is not freed. so there is memory-leak problem. - solution: the allocation code of the event meory is moved when it is needed. Change-Id: If42ab454c269ceab2ed64a13a9915cab23a2822e Signed-off-by: kibak.yoon --- src/server/sensor_event_poller.cpp | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/server/sensor_event_poller.cpp b/src/server/sensor_event_poller.cpp index b6d46ca..1327b44 100644 --- a/src/server/sensor_event_poller.cpp +++ b/src/server/sensor_event_poller.cpp @@ -135,7 +135,6 @@ bool sensor_event_poller::process_event(int fd, const std::vector &ids continue; while (remains > 0) { - event = (sensor_event_t *)malloc(sizeof(sensor_event_t)); remains = sensor->get_data(&data, &data_length); if (remains < 0) { _E("Failed to get sensor data"); @@ -143,11 +142,16 @@ bool sensor_event_poller::process_event(int fd, const std::vector &ids } if (!sensor->on_event(data, data_length, remains)) { - free(event); free(data); continue; } + event = (sensor_event_t *)malloc(sizeof(sensor_event_t)); + if (!event) { + _E("Memory allocation failed"); + break; + } + event->sensor_id = sensor->get_id(); event->event_type = sensor->get_event_type(); event->data_length = data_length; -- 2.7.4