From 7d050890f01f32ebb394140cf3206ad5a5548d79 Mon Sep 17 00:00:00 2001 From: Isak Westin Date: Thu, 29 Sep 2022 13:03:42 +0200 Subject: mesh: Ignore SNB with invalid IV Index values If we are in IV update in progress state, and receive a Secure Network beacon with an IV index equal to last known IV index + 1, and IV update flag set to 1, it should be ignored. See MshPRFv1.0.1 section 3.10.5. --- mesh/net.c | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'mesh') diff --git a/mesh/net.c b/mesh/net.c index dc3d1fd80..c225fdb9a 100644 --- a/mesh/net.c +++ b/mesh/net.c @@ -2671,6 +2671,10 @@ static bool update_iv_ivu_state(struct mesh_net *net, uint32_t iv_index, if (iv_index == net->iv_index) return false; + /* Ignore beacon with invalid IV index value */ + if (net->iv_update && iv_index == net->iv_index + 1) + return false; + if (!net->iv_update) { l_debug("iv_upd_state = IV_UPD_UPDATING"); net->iv_upd_state = IV_UPD_UPDATING; -- cgit v1.2.1