diff --git a/subsys/bluetooth/mesh/transport.c b/subsys/bluetooth/mesh/transport.c index b8fb8d35122..42b459e167a 100644 --- a/subsys/bluetooth/mesh/transport.c +++ b/subsys/bluetooth/mesh/transport.c @@ -1666,6 +1666,14 @@ int bt_mesh_trans_recv(struct net_buf_simple *buf, struct bt_mesh_net_rx *rx) err = trans_seg(buf, rx, &pdu_type, &seq_auth, &seg_count); } else { seg_count = 1; + + /* Avoid further processing of unsegmented messages that are not a + * local match nor a Friend match, with the exception of ctl messages. + */ + if (!rx->ctl && !rx->local_match && !rx->friend_match) { + return 0; + } + err = trans_unseg(buf, rx, &seq_auth); }