Fix svace issue 37/191237/8
authorJihoon Jung <jh8801.jung@samsung.com>
Mon, 15 Oct 2018 05:29:02 +0000 (14:29 +0900)
committerJihoon Jung <jh8801.jung@samsung.com>
Mon, 15 Oct 2018 05:39:14 +0000 (14:39 +0900)
Signed-off-by: Jihoon Jung <jh8801.jung@samsung.com>
Change-Id: Ie62f624e50462727ab0a373b44682fa2372a042c

src/mdg-manager/include/mdgd_util.h
src/mdg-manager/src/mdgd_db.c
src/mdg-manager/src/mdgd_gdbus.c
src/mdg-manager/src/mdgd_iot.cpp
src/mdg-manager/src/mdgd_iot_client.cpp
src/mdg-manager/src/mdgd_iot_server.cpp
src/mdg-manager/src/mdgd_util.c

index 3cf2212..d6f486a 100644 (file)
@@ -32,6 +32,8 @@ char *mdgd_get_readable_uuid(const OicUuid_t *uuid);
 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);
index 9cc5e87..d365778 100644 (file)
@@ -676,6 +676,7 @@ int mdgd_db_group_print()
                                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);
@@ -714,6 +715,9 @@ int mdgd_db_device_print()
                                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);
index 63cd8ed..4f49f49 100644 (file)
@@ -99,6 +99,8 @@ gboolean group_invite_device(Group *group, GDBusMethodInvocation *invocation, gc
 
        result = mdgd_group_invite_device((char *)sender, group_name, device, pin);
 
+       mdgd_clean_device(device);
+
        group_complete_invite_device(group, invocation, result);
 
        LOG_END();
index 1577b7d..67eadd9 100644 (file)
@@ -350,6 +350,9 @@ int mdgd_iot_find_devices(char *sender, int timeout, bool is_invited)
                cmd->user_data = (void *)device;
 
                mdgd_iot_get_device_description(cmd, host_addr, conn_type);
+
+               g_free(addr);
+               g_free(host_addr);
        }
 
        return result;
@@ -443,9 +446,6 @@ int mdgd_iot_pair(char *group_name, char *pin, char *target1, char *subject1, ch
        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;
@@ -557,10 +557,6 @@ PV_PAIR_END:
                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;
 }
index efc224c..05682c6 100644 (file)
@@ -77,13 +77,14 @@ static gpointer __file_send_thread_func(gpointer user_data)
        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 */
@@ -105,33 +106,37 @@ static gpointer __file_send_thread_func(gpointer user_data)
                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;
        }
@@ -146,7 +151,10 @@ static gpointer __file_send_thread_func(gpointer user_data)
                        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;
                        }
@@ -163,7 +171,10 @@ static gpointer __file_send_thread_func(gpointer user_data)
                        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;
                }
@@ -350,6 +361,7 @@ static void __request_finish(const HeaderOptions &,
                                        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;
index f9b49e8..0dda1f5 100644 (file)
@@ -68,7 +68,8 @@ static gpointer __file_receive_thread_func(gpointer user_data)
 {
        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;
@@ -101,7 +102,10 @@ static gpointer __file_receive_thread_func(gpointer user_data)
 
        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;
        }
 
@@ -114,7 +118,10 @@ static gpointer __file_receive_thread_func(gpointer user_data)
                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;
        }
 
@@ -130,7 +137,10 @@ static gpointer __file_receive_thread_func(gpointer user_data)
                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 {
@@ -139,13 +149,19 @@ static gpointer __file_receive_thread_func(gpointer user_data)
                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;
        }
 
@@ -162,7 +178,10 @@ static gpointer __file_receive_thread_func(gpointer user_data)
        }
 
        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;
        }
 
@@ -190,6 +209,18 @@ 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);
@@ -476,6 +507,7 @@ OCEntityHandlerResult _request_handler(std::shared_ptr<OCResourceRequest> reques
                                                        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;
index 854d2b1..6c3d782 100644 (file)
@@ -197,6 +197,64 @@ int mdgd_str_to_uuid(const char *strUuid, OicUuid_t *uuid)
        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;
@@ -429,6 +487,8 @@ GVariant *mdgd_create_variant_device_list(char *group_name)
                                      g_variant_new_int32(device->type));
 
                g_variant_builder_close(builder);
+
+               mdgd_clean_device(device);
        }
 
        va = g_variant_builder_end(builder);
@@ -459,7 +519,7 @@ mdgd_device_t *mdgd_get_device_from_variant(GVariant *va)
        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;