diff --git a/src/cli/cli.cpp b/src/cli/cli.cpp index aa9539fba..712c82716 100644 --- a/src/cli/cli.cpp +++ b/src/cli/cli.cpp @@ -1961,6 +1961,7 @@ void Interpreter::ProcessRouterSelectionJitter(int argc, char *argv[]) else { SuccessOrExit(error = ParseLong(argv[0], value)); + VerifyOrExit(0 < value && value < 256, error = kThreadError_InvalidArgs); otSetRouterSelectionJitter(mInstance, static_cast(value)); } diff --git a/src/core/thread/mle.cpp b/src/core/thread/mle.cpp index 112bd4b43..3d347b050 100644 --- a/src/core/thread/mle.cpp +++ b/src/core/thread/mle.cpp @@ -863,9 +863,16 @@ uint8_t Mle::GetRouterSelectionJitter(void) const return mRouterSelectionJitter; } -void Mle::SetRouterSelectionJitter(uint8_t aRouterJitter) +ThreadError Mle::SetRouterSelectionJitter(uint8_t aRouterJitter) { + ThreadError error = kThreadError_None; + + VerifyOrExit(aRouterJitter > 0, error = kThreadError_InvalidArgs); + mRouterSelectionJitter = aRouterJitter; + +exit: + return error; } void Mle::GenerateNonce(const Mac::ExtAddress &aMacAddr, uint32_t aFrameCounter, uint8_t aSecurityLevel, diff --git a/src/core/thread/mle.hpp b/src/core/thread/mle.hpp index c2a80bb05..5401df193 100644 --- a/src/core/thread/mle.hpp +++ b/src/core/thread/mle.hpp @@ -720,7 +720,7 @@ public: * @returns The ROUTER_SELECTION_JITTER value. * */ - void SetRouterSelectionJitter(uint8_t aRouterJitter); + ThreadError SetRouterSelectionJitter(uint8_t aRouterJitter); /** * This method returns the Child ID portion of an RLOC16.