From 706b393a7b678a44e0ac11a72c9554ade7b7214d Mon Sep 17 00:00:00 2001 From: Sergey Polyakov Date: Thu, 1 Nov 2018 02:41:13 +0200 Subject: [PATCH] [mac] make sure network name is always updated (#3246) --- src/core/mac/mac.cpp | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/core/mac/mac.cpp b/src/core/mac/mac.cpp index 4ff0a0e7b..1e789c4a7 100644 --- a/src/core/mac/mac.cpp +++ b/src/core/mac/mac.cpp @@ -126,6 +126,7 @@ Mac::Mac(Instance &aInstance) mExtAddress.GenerateRandom(); mCcaSuccessRateTracker.Reset(); memset(&mCounters, 0, sizeof(otMacCounters)); + memset(&mNetworkName, 0, sizeof(otNetworkName)); otPlatRadioEnable(&GetInstance()); @@ -511,15 +512,15 @@ otError Mac::SetNetworkName(const char *aNetworkName) otError Mac::SetNetworkName(const char *aBuffer, uint8_t aLength) { - otError error = OT_ERROR_NONE; - uint8_t len = static_cast(strnlen(aBuffer, aLength)); + otError error = OT_ERROR_NONE; + uint8_t newLen = static_cast(strnlen(aBuffer, aLength)); - VerifyOrExit(len <= OT_NETWORK_NAME_MAX_SIZE, error = OT_ERROR_INVALID_ARGS); - VerifyOrExit(memcmp(mNetworkName.m8, aBuffer, len) != 0, + VerifyOrExit(newLen <= OT_NETWORK_NAME_MAX_SIZE, error = OT_ERROR_INVALID_ARGS); + VerifyOrExit(newLen != strlen(mNetworkName.m8) || memcmp(mNetworkName.m8, aBuffer, newLen) != 0, GetNotifier().SignalIfFirst(OT_CHANGED_THREAD_NETWORK_NAME)); - memcpy(mNetworkName.m8, aBuffer, len); - mNetworkName.m8[len] = 0; + memcpy(mNetworkName.m8, aBuffer, newLen); + mNetworkName.m8[newLen] = 0; GetNotifier().Signal(OT_CHANGED_THREAD_NETWORK_NAME); exit: