From 1f12329064232d19f31ee20939af952508fe7bf7 Mon Sep 17 00:00:00 2001 From: Bobie Date: Fri, 22 Nov 2024 11:57:34 +0800 Subject: [PATCH] add some check of map Signed-off-by: Bobie --- .../audiomanager/managersink/include/daudio_sink_manager.h | 1 + services/audiomanager/managersink/src/daudio_sink_manager.cpp | 4 ++++ .../managersource/include/daudio_source_manager.h | 1 + .../audiomanager/managersource/src/daudio_source_manager.cpp | 4 ++++ 4 files changed, 10 insertions(+) diff --git a/services/audiomanager/managersink/include/daudio_sink_manager.h b/services/audiomanager/managersink/include/daudio_sink_manager.h index 07a4e734..51e22c4f 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 99d7aeea..90c2536f 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 c0cf00bf..639a250b 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 f84878ac..5c7c0d4e 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); } -- Gitee