Fixed bug on adding string to iotcon attribute 79/85779/1
authorkmook <kmook.choi@samsung.com>
Mon, 29 Aug 2016 05:32:03 +0000 (14:32 +0900)
committerkmook <kmook.choi@samsung.com>
Mon, 29 Aug 2016 05:32:03 +0000 (14:32 +0900)
Change-Id: I1e86e897b8b726b988c9710805efb5fc84e2d703
Signed-off-by: kmook <kmook.choi@samsung.com>
daemon/ServiceManager.cpp
daemon/service_provider/RemoteAppControlServiceProvider.cpp

index 191ba87..6676dff 100755 (executable)
@@ -277,19 +277,36 @@ static iotcon_representation_h _get_d2d_service_representation(conv::ServiceMana
                return NULL;
        }
 
-       char* deviceId = (char*) conv::util::getDeviceId().c_str();
-       char* deviceName = (char*) conv::util::getDeviceName().c_str();
+       string deviceIdStr = conv::util::getDeviceId();
+       string deviceNameStr = conv::util::getDeviceName();
+       char* deviceId = new char[deviceIdStr.size() + 1];
+       char* deviceName = new char[deviceNameStr.size() + 1];
+
+       memset(deviceId, 0, deviceIdStr.size() + 1);
+       memset(deviceName, 0, deviceNameStr.size() + 1);
+
+       strncpy(deviceId, deviceIdStr.c_str(), deviceIdStr.size()+1);
+       strncpy(deviceName, deviceNameStr.c_str(), deviceNameStr.size()+1);
 
        iotcon_attributes_add_str(attributes, CONV_JSON_DEVICE_ID, deviceId);
        iotcon_attributes_add_str(attributes, CONV_JSON_DEVICE_NAME, deviceName);
 #if defined(_TV_) || defined(TIZEN_PROFILE_TV) || defined(TIZEN_TV) || defined(TIZEN_TV_PRODUCT)
        _D("device type : TV");
-       string device_type("TV");
+       string deviceTypeStr("TV");
 #else
        _D("device type : MOBILE");
-       string device_type("MOBILE");
+       string deviceTypeStr("MOBILE");
 #endif
-       iotcon_attributes_add_str(attributes, CONV_JSON_DEVICE_TYPE, (char*) device_type.c_str());
+       char* deviceType = new char[deviceTypeStr.size() + 1];
+
+       memset(deviceType, 0, deviceTypeStr.size() + 1);
+       strncpy(deviceType, deviceTypeStr.c_str(), deviceTypeStr.size()+1);
+
+       iotcon_attributes_add_str(attributes, CONV_JSON_DEVICE_TYPE, deviceType);
+
+       delete[] deviceId;
+       delete[] deviceName;
+       delete[] deviceType;
 
        conv::Json serviceJson;
        instance->getServiceInfoForDiscovery(&serviceJson);
index aa0c29d..432f7c1 100755 (executable)
@@ -554,9 +554,17 @@ int conv::RemoteAppControlServiceProvider::publishRequest(Request* requestObj)
        iotcon_attributes_h attributes;
        iotcon_attributes_create(&attributes);
 
-       iotcon_attributes_add_str(attributes, CONV_JSON_APP_CONTROL, (char*)app_control.c_str());
+       char* appControl = new char[app_control.size() + 1];
+
+       memset(appControl, 0, app_control.size() + 1);
+       strncpy(appControl, app_control.c_str(), app_control.size()+1);
+
+
+       iotcon_attributes_add_str(attributes, CONV_JSON_APP_CONTROL, appControl);
        iotcon_attributes_add_int(attributes, CONV_JSON_REPLY, reply);
 
+       delete[] appControl;
+
        if (reply == 1) {
                int req_id = get_req_id();
                iotcon_attributes_add_int(attributes, CONV_JSON_REQ_ID, req_id);