From 109269286ac3a3567a498083ea0a8423b33e3283 Mon Sep 17 00:00:00 2001 From: nomdetom Date: Fri, 20 Mar 2026 01:20:46 +0000 Subject: [PATCH 1/2] fix(routing): prevent licensed users from rebroadcasting packets from unlicensed or unknown users --- src/modules/RoutingModule.cpp | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/modules/RoutingModule.cpp b/src/modules/RoutingModule.cpp index d87cf3a44e6..ab4195a8fa8 100644 --- a/src/modules/RoutingModule.cpp +++ b/src/modules/RoutingModule.cpp @@ -20,9 +20,8 @@ bool RoutingModule::handleReceivedProtobuf(const meshtastic_MeshPacket &mp, mesh if ((nodeDB->getMeshNode(mp.from) == NULL || !nodeDB->getMeshNode(mp.from)->has_user) && (nodeDB->getMeshNode(mp.to) == NULL || !nodeDB->getMeshNode(mp.to)->has_user)) return false; - } else if (owner.is_licensed && nodeDB->getLicenseStatus(mp.from) == UserLicenseStatus::NotLicensed) { - // Don't let licensed users to rebroadcast packets from unlicensed users - // If we know they are in-fact unlicensed + } else if (owner.is_licensed && nodeDB->getLicenseStatus(mp.from) != UserLicenseStatus::Licensed) { + // Don't let licensed users to rebroadcast packets from unknown or unlicensed users LOG_DEBUG("Packet from unlicensed user, ignoring packet"); return false; } From f15d498bf6f7607595f51b704d1e5b4a98c2f619 Mon Sep 17 00:00:00 2001 From: nomdetom Date: Fri, 20 Mar 2026 01:34:42 +0000 Subject: [PATCH 2/2] fix(routing): prevent licensed users from rebroadcasting packets to or from unlicensed users --- src/modules/RoutingModule.cpp | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/modules/RoutingModule.cpp b/src/modules/RoutingModule.cpp index ab4195a8fa8..85e7f8c064a 100644 --- a/src/modules/RoutingModule.cpp +++ b/src/modules/RoutingModule.cpp @@ -20,9 +20,11 @@ bool RoutingModule::handleReceivedProtobuf(const meshtastic_MeshPacket &mp, mesh if ((nodeDB->getMeshNode(mp.from) == NULL || !nodeDB->getMeshNode(mp.from)->has_user) && (nodeDB->getMeshNode(mp.to) == NULL || !nodeDB->getMeshNode(mp.to)->has_user)) return false; - } else if (owner.is_licensed && nodeDB->getLicenseStatus(mp.from) != UserLicenseStatus::Licensed) { - // Don't let licensed users to rebroadcast packets from unknown or unlicensed users - LOG_DEBUG("Packet from unlicensed user, ignoring packet"); + } else if (owner.is_licensed && ((nodeDB->getLicenseStatus(mp.from) == UserLicenseStatus::NotLicensed) || + (nodeDB->getLicenseStatus(mp.to) == UserLicenseStatus::NotLicensed))) { + // Don't let licensed users to rebroadcast packets to or from unlicensed users + // If we know they are in-fact unlicensed + LOG_DEBUG("Packet to or from unlicensed user, ignoring packet"); return false; }