Do not use memcpy for vine_service_s 15/256815/6
authorCheoleun Moon <chleun.moon@samsung.com>
Tue, 13 Apr 2021 11:17:22 +0000 (20:17 +0900)
committerCheoleun Moon <chleun.moon@samsung.com>
Wed, 14 Apr 2021 04:21:15 +0000 (13:21 +0900)
Change-Id: If464cbac64927bce1347a540fbd46d48071072c2
Signed-off-by: Cheoleun Moon <chleun.moon@samsung.com>
src/vine-service.cpp

index f0471b0..4419550 100755 (executable)
@@ -100,8 +100,20 @@ int _vine_service_clone(vine_service_h origin, vine_service_h *cloned)
        vine_service_s *origin_service = (vine_service_s *)origin;
        vine_service_s *cloned_service = new vine_service_s;
 
-       memcpy(cloned_service, origin_service, sizeof(vine_service_s));
+       cloned_service->type = origin_service->type;
+       strncpy(cloned_service->service_type, origin_service->service_type, VINE_MAX_SERVICE_TYPE_LEN);
+       strncpy(cloned_service->service_name, origin_service->service_name, VINE_MAX_SERVICE_NAME_LEN);
+       strncpy(cloned_service->host_name, origin_service->host_name, VINE_MAX_HOST_NAME_LEN);
+       strncpy(cloned_service->ip, origin_service->ip, VINE_MAX_IP_LEN);
+       cloned_service->family = origin_service->family;
+       cloned_service->port = origin_service->port;
        cloned_service->attributes = origin_service->attributes;
+       strncpy(cloned_service->iface_name, origin_service->iface_name, IF_NAMESIZE);
+       cloned_service->state = origin_service->state;
+
+       cloned_service->disc_handle = NULL;
+       cloned_service->ip_resolved_cb = NULL;
+       cloned_service->ip_resolved_cb_data = NULL;
 
        *cloned = cloned_service;
        VINE_LOGD("Cloned service[%p]", cloned_service);