From 9b42c91c345689c97ce85b3f182f927de82bec83 Mon Sep 17 00:00:00 2001 From: wu-jinpeng981212 Date: Thu, 12 Oct 2023 17:47:50 +0800 Subject: [PATCH] =?UTF-8?q?cJSON=E9=97=AE=E9=A2=98=E6=95=B4=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: wu-jinpeng981212 --- .../v1_0/src/audio_adapter_interface_impl.cpp | 8 ++++++- .../managersink/src/daudio_sink_dev.cpp | 10 ++++++-- .../managersource/src/daudio_source_dev.cpp | 24 ++++++++++++++++--- 3 files changed, 36 insertions(+), 6 deletions(-) diff --git a/hdf_service/distributed_audio/hdi_service/audio/v1_0/src/audio_adapter_interface_impl.cpp b/hdf_service/distributed_audio/hdi_service/audio/v1_0/src/audio_adapter_interface_impl.cpp index 8539a205..4cb1b11e 100644 --- a/hdf_service/distributed_audio/hdi_service/audio/v1_0/src/audio_adapter_interface_impl.cpp +++ b/hdf_service/distributed_audio/hdi_service/audio/v1_0/src/audio_adapter_interface_impl.cpp @@ -854,7 +854,13 @@ int32_t AudioAdapterInterfaceImpl::GetVolFromEvent(const std::string &content, c cJSON_Delete(jParam); return ERR_DH_AUDIO_HDF_FAIL; } - vol = std::stoi(std::string(cJSON_GetObjectItem(jParam, key.c_str())->valuestring)); + cJSON *dhIdItem = cJSON_GetObjectItem(jParam, key.c_str()); + if (dhIdItem == NULL || !cJSON_IsString(dhIdItem)) { + DHLOGE("Not found the keys of dhId."); + cJSON_Delete(jParam); + return ERR_DH_AUDIO_FAILED; + } + vol = std::stoi(std::string(dhIdItem->valuestring)); cJSON_Delete(jParam); return DH_SUCCESS; } diff --git a/services/audiomanager/managersink/src/daudio_sink_dev.cpp b/services/audiomanager/managersink/src/daudio_sink_dev.cpp index 0b88ce21..051a92b0 100644 --- a/services/audiomanager/managersink/src/daudio_sink_dev.cpp +++ b/services/audiomanager/managersink/src/daudio_sink_dev.cpp @@ -15,7 +15,7 @@ #include "daudio_sink_dev.h" -#include + #include #include "cJSON.h" @@ -202,7 +202,13 @@ int32_t DAudioSinkDev::ParseDhidFromEvent(std::string args) cJSON_Delete(jParam); return -1; } - int32_t dhId = std::stoi(std::string(cJSON_GetObjectItem(jParam, KEY_DH_ID)->valuestring)); + cJSON *dhIdItem = cJSON_GetObjectItem(jParam, KEY_DH_ID); + if (dhIdItem == NULL || !cJSON_IsString(dhIdItem)) { + DHLOGE("Not found the keys of dhId."); + cJSON_Delete(jParam); + return ERR_DH_AUDIO_FAILED; + } + int32_t dhId = std::stoi(std::string(dhIdItem->valuestring)); cJSON_Delete(jParam); DHLOGI("Parsed dhId is: %d.", dhId); return dhId; diff --git a/services/audiomanager/managersource/src/daudio_source_dev.cpp b/services/audiomanager/managersource/src/daudio_source_dev.cpp index 8adc9a86..c06655ff 100644 --- a/services/audiomanager/managersource/src/daudio_source_dev.cpp +++ b/services/audiomanager/managersource/src/daudio_source_dev.cpp @@ -829,7 +829,13 @@ int32_t DAudioSourceDev::ParseDhidFromEvent(std::string args) cJSON_Delete(jParam); return -1; } - int32_t dhId = std::stoi(std::string(cJSON_GetObjectItem(jParam, KEY_DH_ID)->valuestring)); + cJSON *dhIdItem = cJSON_GetObjectItem(jParam, KEY_DH_ID); + if (dhIdItem == NULL || !cJSON_IsString(dhIdItem)) { + DHLOGE("Not found the keys of dhId."); + cJSON_Delete(jParam); + return ERR_DH_AUDIO_FAILED; + } + int32_t dhId = std::stoi(std::string(dhIdItem->valuestring)); cJSON_Delete(jParam); DHLOGI("Parsed dhId is: %d.", dhId); return dhId; @@ -1119,7 +1125,13 @@ int32_t DAudioSourceDev::TaskChangeVolume(const std::string &args) cJSON_Delete(jParam); return ERR_DH_AUDIO_FAILED; } - int32_t dhId = std::stoi(std::string(cJSON_GetObjectItem(jParam, KEY_DH_ID)->valuestring)); + cJSON *dhIdItem = cJSON_GetObjectItem(jParam, KEY_DH_ID); + if (dhIdItem == NULL || !cJSON_IsString(dhIdItem)) { + DHLOGE("Not found the keys of dhId."); + cJSON_Delete(jParam); + return ERR_DH_AUDIO_FAILED; + } + int32_t dhId = std::stoi(std::string(dhIdItem->valuestring)); cJSON_Delete(jParam); return NotifyHDF(AudioEventType::VOLUME_CHANGE, args, dhId); } @@ -1149,7 +1161,13 @@ int32_t DAudioSourceDev::TaskChangeRenderState(const std::string &args) cJSON_Delete(jParam); return ERR_DH_AUDIO_FAILED; } - int32_t dhId = std::stoi(std::string(cJSON_GetObjectItem(jParam, KEY_DH_ID)->valuestring)); + cJSON *dhIdItem = cJSON_GetObjectItem(jParam, KEY_DH_ID); + if (dhIdItem == NULL || !cJSON_IsString(dhIdItem)) { + DHLOGE("Not found the keys of dhId."); + cJSON_Delete(jParam); + return ERR_DH_AUDIO_FAILED; + } + int32_t dhId = std::stoi(std::string(dhIdItem->valuestring)); cJSON_Delete(jParam); return NotifyHDF(AudioEventType::AUDIO_RENDER_STATE_CHANGE, args, dhId); } -- Gitee