diff --git a/services/audiomanager/managersink/include/daudio_sink_manager.h b/services/audiomanager/managersink/include/daudio_sink_manager.h index 07a4e73469f6dd8dfe0f0e5cbee9dcd9aea46c3d..51e22c4f5e7357bdf5ee7bde303d048001c25b7d 100644 --- a/services/audiomanager/managersink/include/daudio_sink_manager.h +++ b/services/audiomanager/managersink/include/daudio_sink_manager.h @@ -79,6 +79,7 @@ private: private: static constexpr const char* DEVCLEAR_THREAD = "sinkClearTh"; + static constexpr uint32_t MAX_SOURCE_SERVICE_NUM = 256; std::mutex devMapMutex_; std::unordered_map> audioDevMap_; std::mutex remoteSvrMutex_; diff --git a/services/audiomanager/managersink/src/daudio_sink_manager.cpp b/services/audiomanager/managersink/src/daudio_sink_manager.cpp index 99d7aeead4f4ce6fe50322eb38ab9b680a30b715..90c2536f5e57ccb3f876f6d03002f4c854f23692 100644 --- a/services/audiomanager/managersink/src/daudio_sink_manager.cpp +++ b/services/audiomanager/managersink/src/daudio_sink_manager.cpp @@ -266,6 +266,10 @@ int32_t DAudioSinkManager::DAudioNotify(const std::string &devId, const std::str CHECK_NULL_RETURN(remoteSvrProxy, ERR_DH_AUDIO_NULLPTR); { std::lock_guard lck(remoteSvrMutex_); + if (sourceServiceMap_.size() > MAX_SOURCE_SERVICE_NUM) { + DHLOGE("Service map is full."); + return ERR_DH_AUDIO_FAILED; + } sourceServiceMap_[devId] = remoteSvrProxy; remoteSvrProxy->DAudioNotify(localNetworkId_, dhId, eventType, eventContent); } diff --git a/services/audiomanager/managersource/include/daudio_source_manager.h b/services/audiomanager/managersource/include/daudio_source_manager.h index c0cf00bfe68d0bf3933889c325cdef89701924bf..639a250beef5e84ddc26aa3c91b4db1265cd8844 100644 --- a/services/audiomanager/managersource/include/daudio_source_manager.h +++ b/services/audiomanager/managersource/include/daudio_source_manager.h @@ -79,6 +79,7 @@ private: static constexpr int32_t WATCHDOG_DELAY_TIME = 5000; static constexpr size_t SLEEP_TIME = 1000000; static constexpr size_t WAIT_HANDLER_IDLE_TIME_US = 10000; + static constexpr uint32_t MAX_SINK_SERVICE_NUM = 256; std::string localDevId_; std::mutex devMapMtx_; diff --git a/services/audiomanager/managersource/src/daudio_source_manager.cpp b/services/audiomanager/managersource/src/daudio_source_manager.cpp index f84878aced3918ff96091cb07eef5141b006f764..5c7c0d4ec60bfd85d32ca6f3d0ffa274fb221cae 100644 --- a/services/audiomanager/managersource/src/daudio_source_manager.cpp +++ b/services/audiomanager/managersource/src/daudio_source_manager.cpp @@ -340,6 +340,10 @@ int32_t DAudioSourceManager::DAudioNotify(const std::string &devId, const std::s CHECK_NULL_RETURN(remoteSvrProxy, ERR_DH_AUDIO_NULLPTR); { std::lock_guard lck(remoteSvrMutex_); + if (sinkServiceMap_.size() > MAX_SINK_SERVICE_NUM) { + DHLOGE("Service map is full."); + return ERR_DH_AUDIO_FAILED; + } sinkServiceMap_[devId] = remoteSvrProxy; remoteSvrProxy->DAudioNotify(localDevId_, dhId, eventType, eventContent); }