[meshcop] fix network name overflow (#2096)

This commit is contained in:
Buke Po
2017-08-11 15:50:09 -07:00
committed by Jonathan Hui
parent 5c8a105f66
commit d6cc89685b
5 changed files with 11 additions and 2 deletions
+1
View File
@@ -188,6 +188,7 @@ void Dataset::Get(otOperationalDataset &aDataset) const
{
const NetworkNameTlv *tlv = static_cast<const NetworkNameTlv *>(cur);
memcpy(aDataset.mNetworkName.m8, tlv->GetNetworkName(), tlv->GetLength());
aDataset.mNetworkName.m8[tlv->GetLength()] = '\0';
aDataset.mIsNetworkNameSet = true;
break;
}
+1
View File
@@ -196,6 +196,7 @@ otError DatasetLocal::Get(otOperationalDataset &aDataset) const
{
const NetworkNameTlv *tlv = static_cast<const NetworkNameTlv *>(cur);
memcpy(aDataset.mNetworkName.m8, tlv->GetNetworkName(), tlv->GetLength());
aDataset.mNetworkName.m8[tlv->GetLength()] = '\0';
aDataset.mIsNetworkNameSet = true;
break;
}
+1 -1
View File
@@ -151,8 +151,8 @@ otError DatasetManager::ApplyConfiguration(void)
{
const NetworkNameTlv *name = static_cast<const NetworkNameTlv *>(cur);
otNetworkName networkName;
memset(networkName.m8, 0, sizeof(networkName));
memcpy(networkName.m8, name->GetNetworkName(), name->GetLength());
networkName.m8[name->GetLength()] = '\0';
netif.GetMac().SetNetworkName(networkName.m8);
break;
}
+7 -1
View File
@@ -435,7 +435,13 @@ void Joiner::HandleJoinerEntrust(Coap::Header &aHeader, Message &aMessage, const
netif.GetKeyManager().SetCurrentKeySequence(networkKeySeq.GetNetworkKeySequence());
netif.GetMle().SetMeshLocalPrefix(meshLocalPrefix.GetMeshLocalPrefix());
netif.GetMac().SetExtendedPanId(extendedPanId.GetExtendedPanId());
netif.GetMac().SetNetworkName(networkName.GetNetworkName());
{
otNetworkName name;
memcpy(name.m8, networkName.GetNetworkName(), networkName.GetLength());
name.m8[networkName.GetLength()] = '\0';
netif.GetMac().SetNetworkName(name.m8);
}
otLogInfoMeshCoP(GetInstance(), "join success!");
+1
View File
@@ -3098,6 +3098,7 @@ otError Mle::HandleDiscoveryResponse(const Message &aMessage, const Ip6::Message
aMessage.Read(offset, sizeof(networkName), &networkName);
VerifyOrExit(networkName.IsValid(), error = OT_ERROR_PARSE);
memcpy(&result.mNetworkName, networkName.GetNetworkName(), networkName.GetLength());
result.mNetworkName.m8[networkName.GetLength()] = '\0';
break;
case MeshCoP::Tlv::kSteeringData: