From: Hwankyu Jhun Date: Fri, 16 Nov 2018 10:20:07 +0000 (+0900) Subject: Fix invalid access X-Git-Tag: submit/tizen/20181119.114804~1 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=8c16b13fedd85126e495e56dc45d4ea8c37a78e6;p=platform%2Fcore%2Fapi%2Fapp-control.git Fix invalid access The reply callback can be invoked before the result callback is invoked. Change-Id: Iac1112d7acc7d8086785a4c4b7d3f625aeffa0b3 Signed-off-by: Hwankyu Jhun --- diff --git a/src/app_control.c b/src/app_control.c index c645d92..5a3c4e6 100644 --- a/src/app_control.c +++ b/src/app_control.c @@ -209,13 +209,18 @@ static void app_control_request_reply_broker(bundle *appsvc_bundle, int appsvc_r user_data = request_context->user_data; reply_cb = request_context->reply_cb; - if (reply_cb != NULL) + if (reply_cb != NULL) { reply_cb(request, reply, result, user_data); - else + request_context->reply_cb = NULL; + } else { app_control_error(APP_CONTROL_ERROR_INVALID_PARAMETER, __FUNCTION__, "invalid callback "); + } app_control_destroy(reply); + if (request_context->result_cb) + return; + if (request_context->app_control != NULL) app_control_destroy(request_context->app_control); @@ -791,15 +796,14 @@ static void app_control_request_result_broker(int request_code, int result, request_context->result_cb = NULL; } - if (result > 0) { - __handle_app_started_result(app_control, - request_context->reply_cb ? request_context : NULL); - } - if (result < 0 || !request_context->reply_cb) { app_control_destroy(request_context->app_control); free(request_context); + return; } + + __handle_app_started_result(app_control, + request_context->reply_cb ? request_context : NULL); } static int __launch_request_verify_operation(struct launch_request_s *req)