From 3551e7c7d7296b72c5bea2257e5f7eb808f19bf8 Mon Sep 17 00:00:00 2001 From: Bryan Biedenkapp Date: Tue, 15 Apr 2025 11:25:17 -0400 Subject: [PATCH] don't allow source or destination ID's to become 0 at startup; ensure destination ID is range checked at startup; --- src/bridge/HostBridge.cpp | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/src/bridge/HostBridge.cpp b/src/bridge/HostBridge.cpp index ef3cb03a..e540310a 100644 --- a/src/bridge/HostBridge.cpp +++ b/src/bridge/HostBridge.cpp @@ -1122,6 +1122,38 @@ bool HostBridge::createNetwork() m_dstId = (uint32_t)networkConf["destinationId"].as(1U); m_slot = (uint8_t)networkConf["slot"].as(1U); + // make sure our source ID is sane + if (m_srcId == 0U) { + ::LogError(LOG_HOST, "Bridge source ID cannot be set to 0."); + return false; + } + + // make sure our destination ID is sane + if (m_dstId == 0U) { + ::LogError(LOG_HOST, "Bridge destination ID cannot be set to 0."); + return false; + } + + // make sure we're range checked + switch (m_txMode) { + case TX_MODE_DMR: + { + if (m_dstId > 16777215) { + ::LogError(LOG_HOST, "Bridge destination ID cannot be greater than 16777215."); + return false; + } + } + break; + case TX_MODE_P25: + { + if (m_dstId > 65535) { + ::LogError(LOG_HOST, "Bridge destination ID cannot be greater than 65535."); + return false; + } + } + break; + } + if (!m_udpMetadata && m_resetCallForSourceIdChange) m_resetCallForSourceIdChange = false; // only applies to UDP audio with metadata if (!m_overrideSrcIdFromUDP && m_resetCallForSourceIdChange)