From 331af18836829de68c1e8ac191dfea2b1d8029b9 Mon Sep 17 00:00:00 2001 From: Rafal Walczyna Date: Fri, 28 Jun 2019 08:37:13 +0200 Subject: [PATCH] [MediaController] Fix for custom command without data If custom command was sent without additional data then command was not parsed at all. [Verification] Tested manually Change-Id: Id35a5852a7fa61aff48fc181926e77ee01f65ff8 Signed-off-by: Rafal Walczyna --- src/mediacontroller/mediacontroller_client.cc | 24 +++++++++++------------- src/mediacontroller/mediacontroller_server.cc | 19 +++++++++---------- 2 files changed, 20 insertions(+), 23 deletions(-) diff --git a/src/mediacontroller/mediacontroller_client.cc b/src/mediacontroller/mediacontroller_client.cc index 6c2df8e..4b12af4 100644 --- a/src/mediacontroller/mediacontroller_client.cc +++ b/src/mediacontroller/mediacontroller_client.cc @@ -584,24 +584,22 @@ void MediaControllerClient::OnCommandReply(const char* server_name, const char* SCOPE_EXIT { free(data_str); }; + picojson::value data; ret = bundle_get_str(bundle, "data", &data_str); - if (MEDIA_CONTROLLER_ERROR_NONE != ret) { + if (BUNDLE_ERROR_NONE != ret || nullptr == data_str) { LoggerE("bundle_get_str(data) failed, error: %d", ret); - ReportError(out_o); - client->command_reply_callback_(&out); - return; + } else { + std::string err; + picojson::parse(data, data_str, data_str + strlen(data_str), &err); + if (!err.empty()) { + LoggerE("Failed to parse bundle data: %s", err.c_str()); + ReportError(out_o); + client->command_reply_callback_(&out); + return; + } } - picojson::value data; - std::string err; - picojson::parse(data, data_str, data_str + strlen(data_str), &err); - if (!err.empty()) { - LoggerE("Failed to parse bundle data: %s", err.c_str()); - ReportError(out_o); - client->command_reply_callback_(&out); - return; - } reply_o["data"] = data; reply_o["name"] = picojson::value(server_name); diff --git a/src/mediacontroller/mediacontroller_server.cc b/src/mediacontroller/mediacontroller_server.cc index 89fd7d6..a32d75b 100644 --- a/src/mediacontroller/mediacontroller_server.cc +++ b/src/mediacontroller/mediacontroller_server.cc @@ -306,19 +306,18 @@ void MediaControllerServer::OnCommandReceived(const char* client_name, const cha SCOPE_EXIT { free(data_str); }; + picojson::value data; ret = bundle_get_str(bundle, "data", &data_str); - if (MEDIA_CONTROLLER_ERROR_NONE != ret) { + if (BUNDLE_ERROR_NONE != ret || nullptr == data_str) { LoggerE("bundle_get_str(data) failed, error: %d", ret); - return; - } - - picojson::value data; - std::string err; - picojson::parse(data, data_str, data_str + strlen(data_str), &err); - if (!err.empty()) { - LoggerE("Failed to parse bundle data: %s", err.c_str()); - return; + } else { + std::string err; + picojson::parse(data, data_str, data_str + strlen(data_str), &err); + if (!err.empty()) { + LoggerE("Failed to parse bundle data: %s", err.c_str()); + return; + } } picojson::value request = picojson::value(picojson::object()); -- 2.7.4