diff --git a/src/core/net/srp_server.cpp b/src/core/net/srp_server.cpp index 6151fc1e1..94ae10d13 100644 --- a/src/core/net/srp_server.cpp +++ b/src/core/net/srp_server.cpp @@ -704,11 +704,10 @@ Error Server::ProcessHostDescriptionInstruction(Host & aHost, Dns::Ecdsa256KeyRecord key; VerifyOrExit(record.GetClass() == aZone.GetClass(), error = kErrorFailed); - VerifyOrExit(aHost.GetKey() == nullptr, error = kErrorFailed); - SuccessOrExit(error = aMessage.Read(aOffset, key)); VerifyOrExit(key.IsValid(), error = kErrorParse); + VerifyOrExit(aHost.GetKey() == nullptr || *aHost.GetKey() == key, error = kErrorSecurity); aHost.SetKey(key); aOffset += record.GetSize();