diff --git a/src/core/meshcop/meshcop_tlvs.cpp b/src/core/meshcop/meshcop_tlvs.cpp index a4a7abdec..f49729363 100644 --- a/src/core/meshcop/meshcop_tlvs.cpp +++ b/src/core/meshcop/meshcop_tlvs.cpp @@ -148,8 +148,7 @@ void SteeringDataTlv::CopyTo(SteeringData &aSteeringData) const bool SecurityPolicyTlv::IsValid(void) const { - return GetLength() >= sizeof(mRotationTime) && GetRotationTime() >= SecurityPolicy::kMinKeyRotationTime && - GetFlagsLength() >= kThread11FlagsLength; + return GetLength() >= sizeof(mRotationTime) && GetFlagsLength() >= kThread11FlagsLength; } SecurityPolicy SecurityPolicyTlv::GetSecurityPolicy(void) const diff --git a/src/core/thread/key_manager.cpp b/src/core/thread/key_manager.cpp index 21988029f..6757fb49e 100644 --- a/src/core/thread/key_manager.cpp +++ b/src/core/thread/key_manager.cpp @@ -37,6 +37,7 @@ #include "common/encoding.hpp" #include "common/instance.hpp" #include "common/locator_getters.hpp" +#include "common/logging.hpp" #include "common/timer.hpp" #include "crypto/hkdf_sha256.hpp" #include "crypto/storage.hpp" @@ -483,9 +484,16 @@ void KeyManager::SetKek(const Kek &aKek) void KeyManager::SetSecurityPolicy(const SecurityPolicy &aSecurityPolicy) { - OT_ASSERT(aSecurityPolicy.mRotationTime >= SecurityPolicy::kMinKeyRotationTime); + if (aSecurityPolicy.mRotationTime < SecurityPolicy::kMinKeyRotationTime) + { + otLogNoteMeshCoP("Key Rotation Time too small: %d", aSecurityPolicy.mRotationTime); + ExitNow(); + } IgnoreError(Get().Update(mSecurityPolicy, aSecurityPolicy, kEventSecurityPolicyChanged)); + +exit: + return; } void KeyManager::StartKeyRotationTimer(void)