m_evt_channel->send_sync(msg);
m_evt_channel->read_sync(reply);
- reply.disclose((char *)&buf);
+ reply.disclose((char *)&buf, sizeof(buf));
m_id = buf.listener_id;
m_connected.store(true);
m_cmd_channel->send_sync(msg);
m_cmd_channel->read_sync(reply);
- reply.disclose((char *)&buf);
+ reply.disclose((char *)&buf, sizeof(buf));
int size = sizeof(sensor_data_t);
if (buf.len > size || buf.len < 0) {
retvm_if(!reply_buf, -ENOMEM, "Failed to allocate memory");
- reply.disclose((char *)reply_buf);
+ reply.disclose((char *)reply_buf, size);
if (reply_buf->len <= 0) {
delete [] reply_buf;
ret = m_cmd_channel->read_sync(reply);
retvm_if(!ret, false, "Failed to receive message");
- reply.disclose(buf);
+ reply.disclose(buf, MAX_BUF_SIZE);
decode_sensors(buf, m_sensors);
ret_if(msg.header()->err < 0);
char uri[NAME_MAX] = {0, };
- msg.disclose(uri);
+ msg.disclose(uri, NAME_MAX);
m_manager->remove_sensor(uri);
auto it = m_sensor_removed_callbacks.begin();
break;
case CMD_PROVIDER_ATTR_INT:
cmd_provider_attr_int_t buf;
- msg.disclose((char *)&buf);
+ msg.disclose((char *)&buf, sizeof(buf));
if (buf.attribute == SENSORD_ATTRIBUTE_INTERVAL && m_interval_changed_cb)
m_interval_changed_cb(m_provider, buf.value, m_interval_changed_user_data);
attr = (cmd_provider_attr_str_t *) new(std::nothrow) char[msg.size()];
retm_if(!attr, "Failed to allocate memory");
- msg.disclose((char *)attr);
+ msg.disclose((char *)attr, msg.size());
if (m_attribute_str_cb)
m_attribute_str_cb(m_provider, attr->attribute, attr->value, attr->len, m_attribute_str_user_data);
auto reply = message::create();
RETM_IF(!reply, "Failed to allocate memory");
- msg.disclose(buf);
+ msg.disclose(buf, MAX_BUF_SIZE);
reply->enclose(buf, MAX_BUF_SIZE);
ch->send(reply);
SLEEP_1S;
ch->read_sync(reply);
- reply.disclose(buf);
+ reply.disclose(buf, MAX_BUF_SIZE);
int ret = strncmp(buf, "111", 3);
ASSERT_EQ(ret, 0);
ch->read_sync(reply);
}
- reply.disclose(buf);
+ reply.disclose(buf, MAX_BUF_SIZE);
ret = strncmp(buf, "111", 3);
ASSERT_EQ(ret, 0);
ch->read_sync(reply);
}
- reply.disclose(buf);
+ reply.disclose(buf, MAX_BUF_SIZE);
ret = strncmp(buf, "111", 3);
ASSERT_EQ(ret, 0);
void read(channel *ch, message &msg)
{
char buf[MAX_BUF_SIZE];
- msg.disclose(buf);
+ msg.disclose(buf, MAX_BUF_SIZE);
auto reply = message::create();
if (!reply) return;
ch[0]->send_sync(msg);
SLEEP_1S;
ch[0]->read_sync(reply);
- reply.disclose(buf);
+ reply.disclose(buf, MAX_BUF_SIZE);
ret = strncmp(buf, "TEXTTEXTTEXTTEXT", 16);
ASSERT_EQ(ret, 0);
ch[1]->send_sync(msg);
SLEEP_1S;
ch[1]->read_sync(reply);
- reply.disclose(buf);
+ reply.disclose(buf, MAX_BUF_SIZE);
ret = strncmp(buf, "TEXTTEXTTEXTTEXT", 16);
ASSERT_EQ(ret, 0);
SLEEP_1S;
ch->read_sync(reply);
- reply.disclose(buf);
+ reply.disclose(buf, MAX_BUF_SIZE);
ret = strncmp(buf, "TEXTTEXTTEXTTEXT", 16);
ASSERT_EQ(ret, 0);
static uint32_t listener_id = 1;
cmd_listener_connect_t buf;
- msg.disclose((char *)&buf);
+ msg.disclose((char *)&buf, sizeof(buf));
sensor_listener_proxy *listener;
listener = new(std::nothrow) sensor_listener_proxy(listener_id,
int server_channel_handler::listener_start(channel *ch, message &msg)
{
cmd_listener_start_t buf;
- msg.disclose((char *)&buf);
+ msg.disclose((char *)&buf, sizeof(buf));
uint32_t id = buf.listener_id;
auto it = m_listeners.find(id);
int server_channel_handler::listener_stop(channel *ch, message &msg)
{
cmd_listener_stop_t buf;
- msg.disclose((char *)&buf);
+ msg.disclose((char *)&buf, sizeof(buf));
uint32_t id = buf.listener_id;
auto it = m_listeners.find(id);
int server_channel_handler::listener_set_attr_int(channel *ch, message &msg)
{
cmd_listener_attr_int_t buf;
- msg.disclose((char *)&buf);
+ msg.disclose((char *)&buf, sizeof(buf));
uint32_t id = buf.listener_id;
int ret = OP_SUCCESS;
buf = (cmd_listener_attr_str_t *) new(std::nothrow) char[msg.size()];
retvm_if(!buf, -ENOMEM, "Failed to allocate memory");
- msg.disclose((char *)buf);
+ msg.disclose((char *)buf, msg.size());
id = buf->listener_id;
auto it = m_listeners.find(id);
int server_channel_handler::listener_get_attr_int(ipc::channel *ch, ipc::message &msg)
{
cmd_listener_attr_int_t buf;
- msg.disclose((char *)&buf);
+ msg.disclose((char *)&buf, sizeof(buf));
uint32_t id = buf.listener_id;
int attr = buf.attribute;
int value = 0;
buf = (cmd_listener_attr_str_t *) new(std::nothrow) char[msg.size()];
retvm_if(!buf, -ENOMEM, "Failed to allocate memory");
- msg.disclose((char *)buf);
+ msg.disclose((char *)buf, msg.size());
id = buf->listener_id;
auto it = m_listeners.find(id);
int len;
uint32_t id;
- msg.disclose((char *)&buf);
+ msg.disclose((char *)&buf, sizeof(buf));
id = buf.listener_id;
auto it = m_listeners.find(id);
int len;
uint32_t id;
- msg.disclose((char *)&buf);
+ msg.disclose((char *)&buf, sizeof(buf));
id = buf.listener_id;
auto it = m_listeners.find(id);
void *data = (void *)malloc(size);
retvm_if(!data, -ENOMEM, "Failed to allocate memory");
- msg.disclose(data);
+ msg.disclose(data, size);
it->second->publish((sensor_data_t*)data, size);
return OP_SUCCESS;
{
sensor_handler *sensor;
cmd_has_privilege_t buf;
- msg.disclose((char *)&buf);
+ msg.disclose((char *)&buf, sizeof(buf));
sensor = m_manager->get_sensor(buf.sensor);
retv_if(!sensor, OP_ERROR);
m_size = 0;
}
-void message::disclose(void *msg)
+void message::disclose(void *msg, const size_t size)
{
- if (!msg || !m_msg)
+ if (!msg || !m_msg || m_size > size)
return;
::memcpy(msg, m_msg, m_size);
void enclose(const void *msg, const size_t size);
void enclose(int error);
- void disclose(void *msg);
+ void disclose(void *msg, const size_t size);
uint32_t type(void);
void set_type(uint32_t type);