[Iotcon] Prevent posible crash. 25/154025/4
authorLukasz Bardeli <l.bardeli@samsung.com>
Thu, 5 Oct 2017 09:12:24 +0000 (11:12 +0200)
committerLukasz Bardeli <l.bardeli@samsung.com>
Thu, 5 Oct 2017 09:35:03 +0000 (09:35 +0000)
[Feature] If Timeout was returned then it is possible to call
RemoteResourceResponseCallback again.
In this case data is deleted, but not set to null.
Call data->fun causes crash.

[Verification] Code compiles without error. Auto tests 100% passrate.

Change-Id: I07a3d1e38c933506620184f811b571d60e4b59fd
Signed-off-by: Lukasz Bardeli <l.bardeli@samsung.com>
src/iotcon/iotcon_instance.cc

index 9b31a3ea22ef8e6929fb0901adb33f75f5555dbf..88cea7b450347c105e8cbac73255fdce9b08ea72 100644 (file)
@@ -53,7 +53,12 @@ void RemoteResourceResponseCallback(iotcon_remote_resource_h resource, iotcon_er
                                     void* user_data) {
   ScopeLogger();
 
-  std::unique_ptr<CallbackData> data{static_cast<CallbackData*>(user_data)};
+  auto deleter = [](CallbackData* data) {
+    delete data;
+    data = nullptr;
+  };
+  std::unique_ptr<CallbackData, decltype(deleter)> data{static_cast<CallbackData*>(user_data),
+                                                        deleter};
 
   if (data) {
     picojson::value value{picojson::object{}};