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 8539a20516a3fa188772737c1312f25014097ec3..4cb1b11e6a72d8244b2a824a490b2fa6d0835696 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 0b88ce21e5dbb295c6d3571f1c82fa2513e33532..051a92b03251e8599cbecc98da5714e3c1b1f4c0 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 8adc9a866eb318c0b1abec898f09c58f2c193bb3..c06655ff71d439c8111597a82f9cfcb6ba32c9e3 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); }