From: saerome.kim Date: Tue, 9 Jan 2018 11:19:12 +0000 (+0900) Subject: Fix memory leak & build warning X-Git-Tag: submit/tizen/20190131.065036~268 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=19efd50ee560bc397742b12831d0da04fc1fda98;p=platform%2Fcore%2Fapi%2Fmulti-device-group.git Fix memory leak & build warning Signed-off-by: saerome.kim --- diff --git a/src/d2d-subowner/d2ds-subowner.c b/src/d2d-subowner/d2ds-subowner.c index 082c73c..583e5e5 100644 --- a/src/d2d-subowner/d2ds-subowner.c +++ b/src/d2d-subowner/d2ds-subowner.c @@ -97,8 +97,8 @@ typedef struct { int permission;/**< Permision */ /* For CRED provisioning */ - OCProvisionDev_t *dev1; /**< 1st device for CRED provisiong */ - OCProvisionDev_t *dev2; /**< 2nd device for CRED provisiong */ + gchar *uuid_dev1; /**< 1st device for CRED provisiong */ + gchar *uuid_dev2; /**< 2nd device for CRED provisiong */ } d2ds_req_cb_s; typedef struct _d2ds_subowner { @@ -380,7 +380,7 @@ static int _wait_cb_ret(int msec) { OCStackResult ret = OC_STACK_OK; - d2ds_check_null_ret("g_client", g_client); + d2ds_check_null_ret_error("g_client", g_client, OC_STACK_INVALID_PARAM); for (int i=0; !g_client->g_doneCB && msec > i; ++i) { usleep(1000); @@ -569,6 +569,12 @@ static void _request_cleanup(gpointer data) if (con->uuid_target_str) { g_free(con->uuid_target_str); } + if (con->uuid_dev1) { + g_free(con->uuid_dev1); + } + if (con->uuid_dev2) { + g_free(con->uuid_dev2); + } /* Set d2ds status 'pending' */ g_atomic_int_set(&service->pending, 0); @@ -717,7 +723,7 @@ static void __notify_found_devs(void *data) static gpointer _disc_mot_env_devs_func(gpointer data) { d2ds_req_cb_s *con = (d2ds_req_cb_s *)data; - d2ds_check_null_ret("con", con); + d2ds_check_null_ret_error("con", con, NULL); /* delete un/owned device lists before updating them */ _remove_mot_client(); @@ -1376,21 +1382,47 @@ static gpointer _cred_provisioning_func(gpointer data) OCStackResult ret = OC_STACK_OK; d2ds_req_cb_s *con = (d2ds_req_cb_s *)data; - if (!con->dev1 ) { + OicUuid_t *uuid = NULL; + OCProvisionDev_t *dev1 = NULL; + OCProvisionDev_t *dev2 = NULL; + + if (!con->uuid_dev1 ) { D2DS_LOGE("dev1 is NULL"); - return NULL; + goto PVPWS_ERROR; } - if (!con->dev2) { - D2DS_LOGE("dev1 is NULL"); - return NULL; + if (!con->uuid_dev2) { + D2DS_LOGE("dev2 is NULL"); + goto PVPWS_ERROR; } + uuid = _convert_uuid(con->uuid_dev1); + dev1 = _get_dev_by_uuid(g_client->g_mowned_list, uuid); + if (!dev1) { + D2DS_LOGE("We can't find in MOWNED dev list"); + goto PVPWS_ERROR; + } + g_free(uuid); + + uuid = _convert_uuid(con->uuid_dev2); + dev2 = _get_dev_by_uuid(g_client->g_mowned_list, uuid); + if (!dev2) { + D2DS_LOGE("We can't find in MOWNED dev list"); + goto PVPWS_ERROR; + } + g_free(uuid); + + /* To do ACL provisioning only one */ + dev1->next = NULL; + + /* To do ACL provisioning only one */ + dev2->next = NULL; + g_client->g_doneCB = false; D2DS_LOGI("Provisioning Selected Pairwise Devices.."); ret = OCProvisionCredentials((void*) g_client, SYMMETRIC_PAIR_WISE_KEY, OWNER_PSK_LENGTH_128, - con->dev1, con->dev2, _provision_cred_cb); + dev1, dev2, _provision_cred_cb); if (OC_STACK_OK != ret) { D2DS_LOGD( "OCProvisionPairwiseDevices API error: %d (%s)", ret, _error_to_string(ret)); goto PVPWS_ERROR; @@ -1411,6 +1443,8 @@ PVPWS_ERROR: /* Notify ACL result */ net_d2ds_emit_prov_cred_done(d2ds_dbus_get_object(), (int)ret); + if (uuid) + g_free(uuid); _request_cleanup(con); g_thread_exit(GINT_TO_POINTER (1)); @@ -1421,11 +1455,6 @@ PVPWS_ERROR: static int _provisioning_cred(d2ds_service *service, gchar *uuid_dev1, gchar *uuid_dev2) { - - OicUuid_t *uuid = NULL; - OCProvisionDev_t *dev1 = NULL; - OCProvisionDev_t *dev2 = NULL; - d2ds_req_cb_s *con = NULL; con = g_malloc0(sizeof(d2ds_req_cb_s)); if (!con) { @@ -1444,34 +1473,8 @@ static int _provisioning_cred(d2ds_service *service, return D2DS_ERROR_INVALID_PARAMETER; } - uuid = _convert_uuid(uuid_dev1); - dev1 = _get_dev_by_uuid(g_client->g_mowned_list, uuid); - if (!dev1) { - D2DS_LOGE("We can't find in MOWNED dev list"); - g_free(uuid); - _request_cleanup(con); - return D2DS_ERROR_NO_DATA; - } - g_free(uuid); - - uuid = _convert_uuid(uuid_dev2); - dev2 = _get_dev_by_uuid(g_client->g_mowned_list, uuid); - if (!dev2) { - D2DS_LOGE("We can't find in MOWNED dev list"); - g_free(uuid); - _request_cleanup(con); - return D2DS_ERROR_NO_DATA; - } - g_free(uuid); - - /* Copy subject device and related information */ - con->dev1 = PMCloneOCProvisionDev(dev1); - /* To do ACL provisioning only one */ - con->dev1->next = NULL; - - con->dev2 = PMCloneOCProvisionDev(dev2); - /* To do ACL provisioning only one */ - con->dev2->next = NULL; + con->uuid_dev1 = g_strdup(uuid_dev1); + con->uuid_dev2 = g_strdup(uuid_dev2); con->thread = g_thread_try_new("prov_cred", _cred_provisioning_func, con, NULL); if (!con->thread) {