Fix not to release json_object on Event(Reply) 95/15795/2
authorKazumasa Mitsunari <knimitz@witz-inc.co.jp>
Thu, 26 Jul 2018 10:26:46 +0000 (19:26 +0900)
committerKazumasa Mitsunari <knimitz@witz-inc.co.jp>
Fri, 27 Jul 2018 01:41:25 +0000 (01:41 +0000)
libafbwsc releases json_object on behalf of application.
Then calling json_object in this library may cause
double free, so fix it.

Bug-AGL: SPEC-1471

Change-Id: I1bb3109c80891718f7bfd69e67688c1c880e95de
Signed-off-by: Kazumasa Mitsunari <knimitz@witz-inc.co.jp>
src/libhomescreen.cpp

index 66fd259..f0e61b0 100644 (file)
@@ -175,7 +175,7 @@ int LibHomeScreen::initialize_websocket()
 
        /* Initialize interface from websocket */
        minterface.on_hangup = _on_hangup_static;
-       minterface.on_call = _on_call_static; /* Is this necessary? */
+       minterface.on_call = _on_call_static;
        minterface.on_event = _on_event_static;
        muri += "ws://localhost:" + to_string(mport) + "/api?token=" + mtoken; /*To be modified*/
        sp_websock = afb_ws_client_connect_wsj1(mploop, muri.c_str(), &minterface, this);
@@ -280,6 +280,10 @@ int LibHomeScreen::onScreenReply(const char* reply_message)
  *
  * #### Return
  * Nothing
+ *
+ * #### Note
+ * Don't release json_object by json_object_put in handler_func.
+ * The resource is released by libafbwsc library.
  */
 void LibHomeScreen::set_event_handler(enum EventType et, handler_func f)
 {
@@ -486,8 +490,6 @@ void LibHomeScreen::on_event(void *closure, const char *event, struct afb_wsj1_m
                        i->second(json_data);
                }
        }
-
-       json_object_put(ev_contents);
 }
 
 /**
@@ -501,8 +503,6 @@ void LibHomeScreen::on_reply(void *closure, struct afb_wsj1_msg *msg)
        {
                struct json_object* reply = afb_wsj1_msg_object_j(msg);
                onReply(reply);
-
-               json_object_put(reply);
        }
 }