char *mdgd_addr2host(char *addr, int port, bool is_secure);
int mdgd_uuid_to_str(const OicUuid_t *uuid, char **strUuid);
int mdgd_str_to_uuid(const char *strUuid, OicUuid_t *uuid);
+void mdgd_clean_channel(mdgd_channel_t *channel);
+void mdgd_clean_device(mdgd_device_t *device);
void mdgd_clean_user_data(void *user_data);
GVariant *mdgd_create_variant_group(mdgd_group_t *group);
GVariant *mdgd_create_variant_device(mdgd_device_t *device);
char *group_name;
group_name = g_strdup((char *)sqlite3_column_text(stmt, 1));
LOG_DEBUG("%d. %s", ++i, group_name);
+ g_free(group_name);
}
sqlite3_finalize(stmt);
group_name = g_strdup((char *)sqlite3_column_text(stmt, 1));
device_id = g_strdup((char *)sqlite3_column_text(stmt, 2));
LOG_DEBUG("%d. %s, %s", ++i, group_name, device_id);
+
+ g_free(device_id);
+ g_free(group_name);
}
sqlite3_finalize(stmt);
result = mdgd_group_invite_device((char *)sender, group_name, device, pin);
+ mdgd_clean_device(device);
+
group_complete_invite_device(group, invocation, result);
LOG_END();
cmd->user_data = (void *)device;
mdgd_iot_get_device_description(cmd, host_addr, conn_type);
+
+ g_free(addr);
+ g_free(host_addr);
}
return result;
OicUuid_t *uuid_3 = NULL;
OicUuid_t *uuid_4 = NULL;
- OicSecAcl_t *acl_1 = NULL;
- OicSecAcl_t *acl_2 = NULL;
-
OCProvisionDev_t *target_dev_1 = NULL;
OCProvisionDev_t *target_dev_2 = NULL;
OCProvisionDev_t *subject_dev_1 = NULL;
g_free(uuid_3);
if (uuid_4)
g_free(uuid_4);
- if (acl_1)
- OCDeleteACLList(acl_1);
- if (acl_2)
- OCDeleteACLList(acl_2);
return result;
}
char tempaddr[26] = {
0,
};
+ char *temp_for_strtok = NULL;
+ char *ret_ptr = NULL;
LOG_BEGIN();
if (cmd == NULL) {
LOG_ERR("cmd is NULL");
- ret = MDGD_ERROR_OPERATION_FAILED;
- goto SEND_THREAD_EXIT;
+ return NULL;
}
/* create socket */
serveraddr_v6.sin6_scope_id = if_nametoindex("wlan0");
sscanf(cmd->addr, "coaps://[%s", (char *)tempaddr);
- strtok(tempaddr, "%");
+ ret_ptr = strtok_r(tempaddr, "%", &temp_for_strtok);
- inet_pton(AF_INET6, tempaddr, &serveraddr_v6.sin6_addr);
+ inet_pton(AF_INET6, ret_ptr, &serveraddr_v6.sin6_addr);
retval = connect(sock, (struct sockaddr *)&serveraddr_v6, sizeof(serveraddr_v6));
} else {
serveraddr.sin_family = AF_INET;
serveraddr.sin_port = htons(PORT);
sscanf(cmd->addr, "coaps://%s", (char *)tempaddr);
- strtok(tempaddr, ":");
+ ret_ptr = strtok_r(tempaddr, ":", &temp_for_strtok);
- inet_pton(AF_INET, tempaddr, &serveraddr.sin_addr.s_addr);
+ inet_pton(AF_INET, ret_ptr, &serveraddr.sin_addr.s_addr);
retval = connect(sock, (struct sockaddr *)&serveraddr, sizeof(serveraddr));
}
- LOG_DEBUG("Connect to %s. Sending %s file...", tempaddr, cmd->arg1);
+ LOG_DEBUG("Connect to %s. Sending %s file...", ret_ptr, cmd->arg1);
/* connect */
if (retval < 0) {
- LOG_ERR("connect() error : %s", strerror(errno));
+ char buf[128];
+ strerror_r(errno, buf, 128);
+ LOG_ERR("connect() error : %s", buf);
ret = MDGD_ERROR_OPERATION_FAILED;
goto SEND_THREAD_EXIT;
}
fd = fopen(cmd->arg1, "rb");
if (fd == NULL) {
- LOG_ERR("fopen() error : %s", strerror(errno));
+ char buf[128];
+ strerror_r(errno, buf, 128);
+ LOG_ERR("fopen() error : %s", buf);
ret = MDGD_ERROR_OPERATION_FAILED;
goto SEND_THREAD_EXIT;
}
prev_percent = cur_percent;
retval = write(sock, buf, num_read);
if (retval == -1) {
- LOG_ERR("write() error! : %s", strerror(errno));
+ char buf[128];
+ strerror_r(errno, buf, 128);
+ LOG_ERR("write() error : %s", buf);
+
ret = MDGD_ERROR_OPERATION_FAILED;
goto SEND_THREAD_EXIT;
}
LOG_DEBUG("file trans complete : %d bytes\n", num_total);
break;
} else {
- LOG_ERR("file I/O error : %s", strerror(errno));
+ char buf[128];
+ strerror_r(errno, buf, 128);
+ LOG_ERR("file I/O error : %s", buf);
+
ret = MDGD_ERROR_OPERATION_FAILED;
goto SEND_THREAD_EXIT;
}
channel->device_id = g_strdup(cmd->uuid);
channel->channel_id = g_strdup(channel_id.c_str());
mdgd_group_notify_event(cmd->sender, MDGD_EVENT_REQ_CHANNEL_LIST_FINISH, ret, (void *)channel);
+ mdgd_clean_channel(channel);
}
} else if (cmd->type == MDGD_REQ_SEND_FILE) {
GError *error = NULL;
{
LOG_BEGIN();
- int server_sockfd, client_sockfd;
+ int server_sockfd = 0;
+ int client_sockfd = 0;
int fd;
struct sockaddr_in serveraddr, clientaddr;
struct sockaddr_in6 serveraddr_v6, clientaddr_v6;
fd = open(receive_file->file_path, O_WRONLY | O_CREAT | O_EXCL, 0700);
if (!fd || errno == EEXIST) {
- LOG_ERR("file open error : %s", strerror(errno));
+ char buf[128];
+ strerror_r(errno, buf, 128);
+ LOG_ERR("file open error : %s", buf);
+
goto RECEIVE_THREAD_EXIT;
}
server_sockfd = socket(AF_INET, SOCK_STREAM, 0);
if (server_sockfd == -1) {
- LOG_ERR("socket error : %s", strerror(errno));
+ char buf[128];
+ strerror_r(errno, buf, 128);
+ LOG_ERR("socket error : %s", buf);
+
goto RECEIVE_THREAD_EXIT;
}
serveraddr_v6.sin6_scope_id = if_nametoindex("wlan0");
if (bind(server_sockfd, (struct sockaddr *)&serveraddr_v6, sizeof(serveraddr_v6)) < 0) {
- LOG_ERR("bind error : %s", strerror(errno));
+ char buf[128];
+ strerror_r(errno, buf, 128);
+ LOG_ERR("bind error : %s", buf);
+
goto RECEIVE_THREAD_EXIT;
}
} else {
serveraddr.sin_port = htons(PORT);
if (bind(server_sockfd, (struct sockaddr *)&serveraddr, sizeof(serveraddr)) < 0) {
- LOG_ERR("bind error : %s", strerror(errno));
+ char buf[128];
+ strerror_r(errno, buf, 128);
+ LOG_ERR("bind error : %s", buf);
+
goto RECEIVE_THREAD_EXIT;
}
}
if (listen(server_sockfd, 5) != 0) {
- LOG_ERR("listen error : %s", strerror(errno));
+ char buf[128];
+ strerror_r(errno, buf, 128);
+ LOG_ERR("listen error : %s", buf);
+
goto RECEIVE_THREAD_EXIT;
}
}
if (client_sockfd == -1) {
- LOG_ERR("socket error : %s", strerror(errno));
+ char buf[128];
+ strerror_r(errno, buf, 128);
+ LOG_ERR("socket error : %s", buf);
+
goto RECEIVE_THREAD_EXIT;
}
if (server_sockfd > 0)
close(server_sockfd);
+ if (receive_file->file_path != NULL)
+ g_free(receive_file->file_path);
+
+ if (receive_file->device_id != NULL)
+ g_free(receive_file->device_id);
+
+ if (receive_file->conn_type != NULL)
+ g_free(receive_file->conn_type);
+
+ if (receive_file != NULL)
+ g_free(receive_file);
+
LOG_END();
g_thread_exit(NULL);
char *channel_id = g_strdup(key);
LOG_DEBUG("Channel ID : %s", channel_id);
responseRep.setValue(std::string(channel_id), "NONE");
+ g_free(channel_id);
}
break;
return OC_STACK_OK;
}
+void mdgd_clean_device(mdgd_device_t *device)
+{
+ if (NULL == device)
+ return;
+
+ if (device->device_id) {
+ g_free(device->device_id);
+ device->device_id = NULL;
+ }
+
+ if (device->model_name) {
+ g_free(device->model_name);
+ device->model_name = NULL;
+ }
+
+ if (device->device_name) {
+ g_free(device->device_name);
+ device->device_name = NULL;
+ }
+
+ if (device->platform_ver) {
+ g_free(device->platform_ver);
+ device->platform_ver = NULL;
+ }
+
+ if (device->vendor_id) {
+ g_free(device->vendor_id);
+ device->vendor_id = NULL;
+ }
+
+ if (device->profile) {
+ g_free(device->profile);
+ device->profile = NULL;
+ }
+
+ g_free(device);
+ device = NULL;
+}
+
+void mdgd_clean_channel(mdgd_channel_t *channel)
+{
+ if (NULL == channel)
+ return;
+
+ if (channel->device_id) {
+ g_free(channel->device_id);
+ channel->device_id = NULL;
+ }
+
+ if (channel->channel_id) {
+ g_free(channel->channel_id);
+ channel->channel_id = NULL;
+ }
+
+ g_free(channel);
+ channel = NULL;
+}
+
void mdgd_clean_user_data(void *user_data)
{
mdgd_command_t *cmd = (mdgd_command_t *)user_data;
g_variant_new_int32(device->type));
g_variant_builder_close(builder);
+
+ mdgd_clean_device(device);
}
va = g_variant_builder_end(builder);
char *platform_ver = NULL;
char *vendor_id = NULL;
char *profile = NULL;
- bool is_invited;
+ bool is_invited = false;
int type = MDGD_DEVICE_TYPE_LOCAL;
GVariantIter *iter = NULL;
const gchar *key;