[cpp cion] Fix some issue 06/265306/4
authorInkyun Kil <inkyun.kil@samsung.com>
Thu, 14 Oct 2021 10:04:25 +0000 (19:04 +0900)
committerInkyun Kil <inkyun.kil@samsung.com>
Thu, 14 Oct 2021 10:28:25 +0000 (10:28 +0000)
- Fix wrong memory copy
- Fix wrong use api
- Fix wrong compare

Change-Id: If8e69041aeed4a043a9f4590d1b141ca563c5bf6
Signed-off-by: Inkyun Kil <inkyun.kil@samsung.com>
idlc/gen_cion/cpp_cion_proxy_body_gen_cb.h
idlc/gen_cion/cpp_cion_stub_body_gen_cb.h

index 3de85d9a039c199013564317607164c4a318877d..131cfbc87e7a86701d44b731e7d8dba08582949b 100644 (file)
@@ -136,9 +136,9 @@ void $$::FilePayloadSend(std::string path)
     return;
   }
 
-  ret = cion_server_send_payload_async(cion_client_, peer_, pl, nullptr, nullptr);
+  ret = cion_client_send_payload_async(cion_client_, pl, nullptr, nullptr);
   if (ret != CION_ERROR_NONE) {
-    _E("Failed to cion_server_send_payload_async : %d", ret);
+    _E("Failed to cion_client_send_payload_async : %d", ret);
     cion_payload_destroy(pl);
     return;
   }
index 27fb87c1e35ebf05a4c3100977829b2fed0d007b..d521640c2bb1b88938f1179a2b24485bac26a6a9 100644 (file)
@@ -127,7 +127,7 @@ void ##::OnDisconnectedCB(const char *service_name,
     cion_peer_info_get_app_id(s->get()->GetPeer(), &service_app_id);
     cion_peer_info_get_app_id(s->get()->GetPeer(), &service_uuid);
     if (strcmp(peer_app_id, service_app_id) == 0 &&
-        strcmp(peer_uuid, service_uuid)) {
+        strcmp(peer_uuid, service_uuid) == 0) {
       stub->services_.erase(s);
       return;
     }
@@ -292,7 +292,7 @@ void $$::OnPayloadReceivedCB(const char *service_name,
     cion_peer_info_get_app_id(s->GetPeer(), &service_app_id);
     cion_peer_info_get_app_id(s->GetPeer(), &service_uuid);
     if (strcmp(peer_app_id, service_app_id) == 0 &&
-        strcmp(peer_uuid, service_uuid)) {
+        strcmp(peer_uuid, service_uuid) == 0) {
       b = s;
       break;
     }
@@ -364,12 +364,17 @@ void $$::OnDataReceivedCB(const char *service_name,
     cion_peer_info_get_app_id(s->GetPeer(), &service_app_id);
     cion_peer_info_get_app_id(s->GetPeer(), &service_uuid);
     if (strcmp(peer_app_id, service_app_id) == 0 &&
-        strcmp(peer_uuid, service_uuid)) {
+        strcmp(peer_uuid, service_uuid) == 0) {
       b = s;
       break;
     }
   }
 
+  if (b.get() == nullptr) {
+    _E("Failed to find service base(%s)", peer_app_id);
+    return;
+  }
+
   int ret = rpc_port_parcel_create_from_raw(&p, data, data_size);
   if (ret != 0) {
     _E("Failed to create parcel from port");
@@ -392,7 +397,8 @@ R"__cpp_cb(    default:
       return;
   }
 
-  ret = rpc_port_parcel_get_raw(result, (void **)return_data, return_data_size);
+  void *raw_data;
+  ret = rpc_port_parcel_get_raw(result, &raw_data, return_data_size);
   if (ret != RPC_PORT_ERROR_NONE) {
       _E("Failed to get raw. error(%d)", ret);
       rpc_port_parcel_destroy(p);
@@ -400,6 +406,16 @@ R"__cpp_cb(    default:
       return;
   }
 
+  *return_data = (unsigned char *)malloc(sizeof(unsigned char) * *return_data_size);
+  if (*return_data == NULL) {
+    *return_data_size = 0;
+    rpc_port_parcel_destroy(p);
+    rpc_port_parcel_destroy(result);
+    return;
+  }
+
+  memcpy(*return_data, raw_data, *return_data_size);
+
   rpc_port_parcel_destroy(p);
   rpc_port_parcel_destroy(result);
 }