mirror of
https://github.com/g4klx/MMDVMHost
synced 2025-12-21 23:45:49 +08:00
Simple source id validation for P25.
This commit is contained in:
12
P25Data.cpp
12
P25Data.cpp
@@ -100,19 +100,23 @@ bool CP25Data::decodeLDU1(const unsigned char* data)
|
|||||||
if (!ret)
|
if (!ret)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
switch (m_lcf) {
|
// Simple validation of the source id
|
||||||
|
unsigned int srcId = (rs[6U] << 16) + (rs[7U] << 8) + rs[8U];
|
||||||
|
if (srcId < 1000000U)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
switch (rs[0U]) {
|
||||||
case P25_LCF_GROUP:
|
case P25_LCF_GROUP:
|
||||||
m_emergency = (rs[2U] & 0x80U) == 0x80U;
|
m_emergency = (rs[2U] & 0x80U) == 0x80U;
|
||||||
m_dstId = (rs[4U] << 8) + rs[5U];
|
m_dstId = (rs[4U] << 8) + rs[5U];
|
||||||
m_srcId = (rs[6U] << 16) + (rs[7U] << 8) + rs[8U];
|
m_srcId = srcId;
|
||||||
break;
|
break;
|
||||||
case P25_LCF_PRIVATE:
|
case P25_LCF_PRIVATE:
|
||||||
m_emergency = false;
|
m_emergency = false;
|
||||||
m_dstId = (rs[3U] << 16) + (rs[4U] << 8) + rs[5U];
|
m_dstId = (rs[3U] << 16) + (rs[4U] << 8) + rs[5U];
|
||||||
m_srcId = (rs[6U] << 16) + (rs[7U] << 8) + rs[8U];
|
m_srcId = srcId;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
LogMessage("P25, unknown LCF value in LDU1 - $%02X", m_lcf);
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user