m_var_azimuth = vec;
m_gyro.m_time_stamp = 0;
+ m_gyro_dt = 0;
}
template <typename TYPE>
#include "info.h"
#include <stdio.h>
+#include <stdlib.h>
#include <glib.h>
#include <sensor_internal.h>
sensord_get_sensor_list(type, &sensors, &count);
show_info(sensors, count);
- delete sensors;
+ if (sensors) {
+ free(sensors);
+ sensors = NULL;
+ }
return true;
}
{
int err;
int count;
- sensor_t *sensors;
+ sensor_t *sensors = NULL;
err = sensord_get_sensors(info.type, &sensors, &count);
ASSERT_EQ(err, 0);
handle = sensord_connect(sensors[info.index]);
+ ASSERT_FREE((handle < 0), sensors);
ASSERT_GE(handle, 0);
+ free(sensors);
+ sensors = NULL;
+
return true;
}
bool sensor_adapter::start(sensor_info info, int &handle)
{
- sensor_t *sensors;
+ sensor_t *sensors = NULL;
int count;
int err;
bool ret;
err = sensord_get_sensors(info.type, &sensors, &count);
ASSERT_EQ(err, 0);
+
+ ASSERT_FREE((info.index >= count), sensors);
ASSERT_LT(info.index, count);
+
+ ASSERT_FREE((info.index < 0), sensors);
ASSERT_GE(info.index, 0);
handle = sensord_connect(sensors[info.index]);
+ ASSERT_FREE((handle < 0), sensors);
ASSERT_GE(handle, 0);
ret = sensord_register_event(handle, SENSOR_EVENT(info.type), info.interval, info.batch_latency, info.cb, NULL);
+ ASSERT_FREE((ret != true), sensors);
ASSERT_TRUE(ret);
ret = sensord_start(handle, info.powersave);
+ ASSERT_FREE((ret != true), sensors);
ASSERT_TRUE(ret);
free(sensors);
+ sensors = NULL;
return true;
}
if (!strcmp(command, "test"))
manager = new(std::nothrow) tester_manager;
- if (!strcmp(command, "inject"))
+ else if (!strcmp(command, "inject"))
manager = new(std::nothrow) injector_manager;
- if (!strcmp(command, "info"))
+ else if (!strcmp(command, "info"))
manager = new(std::nothrow) info_manager;
- if (!strcmp(command, "loopback"))
+ else if (!strcmp(command, "loopback"))
manager = new(std::nothrow) loopback_manager;
if (!manager) {
} \
} while (0)
+#define ASSERT_FREE(expr, X) \
+ do { if (expr) { free (X); X = NULL; } } while (0)
+
#define ASSERT_TRUE(condition) ASSERT(condition, ==, true)
#define ASSERT_FALSE(condition) ASSERT(condition, ==, false)
#define ASSERT_EQ(left, right) ASSERT(left, ==, right)
err = sensord_get_sensors(ACCELEROMETER_SENSOR, &sensors, &count);
ASSERT_EQ(err, 0);
+ ASSERT_FREE((count < 0), sensors);
ASSERT_GT(count, 0);
free(sensors);
bool ret;
int handle;
sensor_t sensor;
- sensor_t *list;
- int count;
+ sensor_t *list = NULL;
+ int count = 0;
called = false;
ASSERT_EQ(err, 0);
handle = sensord_connect(sensor);
- ASSERT_EQ(err, 0);
+ ASSERT_FREE(((handle != 0) && list), list);
+ ASSERT_EQ(handle, 0);
ret = sensord_register_event(handle, 1, 100, 100, event_cb, NULL);
+ ASSERT_FREE(((ret != true) && list), list);
ASSERT_TRUE(ret);
ret = sensord_start(handle, 0);
+ ASSERT_FREE(((ret != true) && list), list);
ASSERT_TRUE(ret);
ret = sensord_change_event_interval(handle, 0, 100);
+ ASSERT_FREE(((ret != true) && list), list);
ASSERT_TRUE(ret);
ret = sensord_change_event_max_batch_latency(handle, 0, 100);
+ ASSERT_FREE(((ret != true) && list), list);
ASSERT_TRUE(ret);
mainloop::run();
ret = sensord_stop(handle);
+ ASSERT_FREE(((ret != true) && list), list);
ASSERT_TRUE(ret);
ret = sensord_unregister_event(handle, 1);
+ ASSERT_FREE(((ret != true) && list), list);
ASSERT_TRUE(ret);
ret = sensord_disconnect(handle);
+ ASSERT_FREE(((ret != true) && list), list);
ASSERT_TRUE(ret);
free(list);
sensord_provider_set_resolution(provider, 0.01f);
sensord_add_provider(provider);
-
sensord_remove_provider(provider);
+
sensord_destroy_provider(provider);
}
msg.disclose((char *)&buf);
- sensor_listener_proxy *listener;
+ sensor_listener_proxy *listener = NULL;
listener = new(std::nothrow) sensor_listener_proxy(listener_id,
buf.sensor, m_manager, ch);
retvm_if(!listener, OP_ERROR, "Failed to allocate memory");
- retvm_if(!has_privileges(ch->get_fd(), listener->get_required_privileges()),
- -EACCES, "Permission denied[%d, %s]",
- listener_id, m_listeners[listener_id]->get_required_privileges().c_str());
+
+ if (!has_privileges(ch->get_fd(), listener->get_required_privileges())) {
+ delete listener;
+ listener = NULL;
+ _E("Permission denied[%d, %s]", listener_id,
+ m_listeners[listener_id]->get_required_privileges().c_str());
+ return -EACCES;
+ }
buf.listener_id = listener_id;
reply.enclose((const char *)&buf, sizeof(buf));
reply.header()->err = OP_SUCCESS;
- if (!ch->send_sync(&reply))
+ if (!ch->send_sync(&reply)) {
+ delete listener;
return OP_ERROR;
+ }
_I("Connected sensor_listener[fd(%d) -> id(%u)]", ch->get_fd(), listener_id);
m_listeners[listener_id] = listener;
m_header.type = UNDEFINED_TYPE;
m_header.length = m_size;
m_header.err = 0;
+
+ for (int i = 0; i < MAX_HEADER_RESERVED; ++i)
+ m_header.ancillary[i] = NULL;
}
message::message(const void *msg, size_t sz)
m_header.type = UNDEFINED_TYPE;
m_header.length = m_size;
m_header.err = 0;
+
+ for (int i = 0; i < MAX_HEADER_RESERVED; ++i)
+ m_header.ancillary[i] = NULL;
}
message::message(const message &msg)
m_header.type = UNDEFINED_TYPE;
m_header.length = 0;
m_header.err = error;
+
+ for (int i = 0; i < MAX_HEADER_RESERVED; ++i)
+ m_header.ancillary[i] = NULL;
}
message::~message()