diff --git a/examples/platforms/nrf528xx/src/diag.c b/examples/platforms/nrf528xx/src/diag.c index e620ce8ab..f4bed6ce9 100644 --- a/examples/platforms/nrf528xx/src/diag.c +++ b/examples/platforms/nrf528xx/src/diag.c @@ -396,7 +396,7 @@ const struct PlatformDiagCommand sCommands[] = { otError otPlatDiagProcess(otInstance *aInstance, int argc, char *argv[], char *aOutput, size_t aOutputMaxLen) { - otError error = OT_ERROR_NOT_IMPLEMENTED; + otError error = OT_ERROR_INVALID_COMMAND; size_t i; for (i = 0; i < otARRAY_LENGTH(sCommands); i++) diff --git a/include/openthread/error.h b/include/openthread/error.h index e1019a2a4..594c7b030 100644 --- a/include/openthread/error.h +++ b/include/openthread/error.h @@ -88,7 +88,7 @@ typedef enum otError OT_ERROR_BUSY = 5, /** - * Failed to parse message or arguments. + * Failed to parse message. */ OT_ERROR_PARSE = 6, @@ -223,6 +223,11 @@ typedef enum otError */ OT_ERROR_LINK_MARGIN_LOW = 34, + /** + * Input (CLI) command is invalid. + */ + OT_ERROR_INVALID_COMMAND = 35, + /** * The number of defined errors. */ diff --git a/include/openthread/platform/diag.h b/include/openthread/platform/diag.h index 2cd413ca6..6ecd8b34a 100644 --- a/include/openthread/platform/diag.h +++ b/include/openthread/platform/diag.h @@ -67,7 +67,7 @@ extern "C" { * * @retval OT_ERROR_INVALID_ARGS The command is supported but invalid arguments provided. * @retval OT_ERROR_NONE The command is successfully process. - * @retval OT_ERROR_NOT_IMPLEMENTED The command is not supported. + * @retval OT_ERROR_INVALID_COMMAND The command is not valid or not supported. * */ otError otPlatDiagProcess(otInstance *aInstance, int argc, char *argv[], char *aOutput, size_t aOutputMaxLen); diff --git a/src/cli/cli.cpp b/src/cli/cli.cpp index 44ea2f0a4..2e1b582a4 100644 --- a/src/cli/cli.cpp +++ b/src/cli/cli.cpp @@ -361,14 +361,14 @@ otError Interpreter::ParseLong(char *aString, long &aLong) { char *endptr; aLong = strtol(aString, &endptr, 0); - return (*endptr == '\0') ? OT_ERROR_NONE : OT_ERROR_PARSE; + return (*endptr == '\0') ? OT_ERROR_NONE : OT_ERROR_INVALID_ARGS; } otError Interpreter::ParseUnsignedLong(char *aString, unsigned long &aUnsignedLong) { char *endptr; aUnsignedLong = strtoul(aString, &endptr, 0); - return (*endptr == '\0') ? OT_ERROR_NONE : OT_ERROR_PARSE; + return (*endptr == '\0') ? OT_ERROR_NONE : OT_ERROR_INVALID_ARGS; } otError Interpreter::ParsePingInterval(const char *aString, uint32_t &aInterval) @@ -400,14 +400,14 @@ otError Interpreter::ParsePingInterval(const char *aString, uint32_t &aInterval) else if (*aString == '.') { // Accept only one dot character. - VerifyOrExit(factor == msFactor, error = OT_ERROR_PARSE); + VerifyOrExit(factor == msFactor, error = OT_ERROR_INVALID_ARGS); // Start analyzing hundreds of milliseconds. factor /= 10; } else { - ExitNow(error = OT_ERROR_PARSE); + ExitNow(error = OT_ERROR_INVALID_ARGS); } aString++; @@ -999,7 +999,7 @@ void Interpreter::ProcessDelayTimerMin(int argc, char *argv[]) } else { - error = OT_ERROR_INVALID_ARGS; + ExitNow(error = OT_ERROR_INVALID_ARGS); } exit: @@ -1078,7 +1078,7 @@ void Interpreter::ProcessDns(int argc, char *argv[]) } else { - ExitNow(error = OT_ERROR_INVALID_ARGS); + ExitNow(error = OT_ERROR_INVALID_COMMAND); } exit: @@ -1174,7 +1174,7 @@ void Interpreter::ProcessExtAddress(int argc, char *argv[]) { otExtAddress extAddress; - VerifyOrExit(Hex2Bin(argv[0], extAddress.m8, sizeof(otExtAddress)) >= 0, error = OT_ERROR_PARSE); + VerifyOrExit(Hex2Bin(argv[0], extAddress.m8, sizeof(otExtAddress)) >= 0, error = OT_ERROR_INVALID_ARGS); error = otLinkSetExtendedAddress(mInstance, &extAddress); } @@ -1222,7 +1222,7 @@ void Interpreter::ProcessExtPanId(int argc, char *argv[]) { otExtendedPanId extPanId; - VerifyOrExit(Hex2Bin(argv[0], extPanId.m8, sizeof(extPanId)) >= 0, error = OT_ERROR_PARSE); + VerifyOrExit(Hex2Bin(argv[0], extPanId.m8, sizeof(extPanId)) >= 0, error = OT_ERROR_INVALID_ARGS); error = otThreadSetExtendedPanId(mInstance, &extPanId); } @@ -1343,7 +1343,7 @@ void Interpreter::ProcessIpAddr(int argc, char *argv[]) } else { - ExitNow(error = OT_ERROR_INVALID_ARGS); + ExitNow(error = OT_ERROR_INVALID_COMMAND); } } @@ -1442,7 +1442,7 @@ void Interpreter::ProcessIpMulticastAddr(int argc, char *argv[]) } else { - ExitNow(error = OT_ERROR_INVALID_ARGS); + ExitNow(error = OT_ERROR_INVALID_COMMAND); } } @@ -1570,7 +1570,7 @@ void Interpreter::ProcessPskc(int argc, char *argv[]) { otPskc pskc; - VerifyOrExit(Hex2Bin(argv[0], pskc.m8, sizeof(pskc)) == OT_PSKC_MAX_SIZE, error = OT_ERROR_PARSE); + VerifyOrExit(Hex2Bin(argv[0], pskc.m8, sizeof(pskc)) == OT_PSKC_MAX_SIZE, error = OT_ERROR_INVALID_ARGS); SuccessOrExit(error = otThreadSetPskc(mInstance, &pskc)); } @@ -1598,7 +1598,7 @@ void Interpreter::ProcessMasterKey(int argc, char *argv[]) { otMasterKey key; - VerifyOrExit(Hex2Bin(argv[0], key.m8, sizeof(key.m8)) == OT_MASTER_KEY_SIZE, error = OT_ERROR_PARSE); + VerifyOrExit(Hex2Bin(argv[0], key.m8, sizeof(key.m8)) == OT_MASTER_KEY_SIZE, error = OT_ERROR_INVALID_ARGS); SuccessOrExit(error = otThreadSetMasterKey(mInstance, &key)); } @@ -1662,7 +1662,7 @@ void Interpreter::ProcessMode(int argc, char *argv[]) break; default: - ExitNow(error = OT_ERROR_PARSE); + ExitNow(error = OT_ERROR_INVALID_ARGS); } } @@ -1797,7 +1797,7 @@ void Interpreter::ProcessService(int argc, char *argv[]) } else { - ExitNow(error = OT_ERROR_INVALID_ARGS); + ExitNow(error = OT_ERROR_INVALID_COMMAND); } exit: @@ -2264,14 +2264,12 @@ otError Interpreter::ProcessPrefixAdd(int argc, char *argv[]) otError error = OT_ERROR_NONE; otBorderRouterConfig config; int argcur = 0; + char * prefixLengthStr; VerifyOrExit(argc > 0, error = OT_ERROR_INVALID_ARGS); memset(&config, 0, sizeof(otBorderRouterConfig)); - char *prefixLengthStr; - char *endptr; - if ((prefixLengthStr = strchr(argv[argcur], '/')) == NULL) { ExitNow(); @@ -2281,11 +2279,11 @@ otError Interpreter::ProcessPrefixAdd(int argc, char *argv[]) SuccessOrExit(error = otIp6AddressFromString(argv[argcur], &config.mPrefix.mPrefix)); - config.mPrefix.mLength = static_cast(strtol(prefixLengthStr, &endptr, 0)); - - if (*endptr != '\0') { - ExitNow(error = OT_ERROR_PARSE); + unsigned long length; + + SuccessOrExit(error = ParseUnsignedLong(prefixLengthStr, length)); + config.mPrefix.mLength = static_cast(length); } argcur++; @@ -2339,7 +2337,7 @@ otError Interpreter::ProcessPrefixAdd(int argc, char *argv[]) break; default: - ExitNow(error = OT_ERROR_PARSE); + ExitNow(error = OT_ERROR_INVALID_ARGS); } } } @@ -2358,14 +2356,12 @@ otError Interpreter::ProcessPrefixRemove(int argc, char *argv[]) otError error = OT_ERROR_NONE; struct otIp6Prefix prefix; int argcur = 0; + char * prefixLengthStr; VerifyOrExit(argc > 0, error = OT_ERROR_INVALID_ARGS); memset(&prefix, 0, sizeof(otIp6Prefix)); - char *prefixLengthStr; - char *endptr; - if ((prefixLengthStr = strchr(argv[argcur], '/')) == NULL) { ExitNow(); @@ -2375,11 +2371,11 @@ otError Interpreter::ProcessPrefixRemove(int argc, char *argv[]) SuccessOrExit(error = otIp6AddressFromString(argv[argcur], &prefix.mPrefix)); - prefix.mLength = static_cast(strtol(prefixLengthStr, &endptr, 0)); - - if (*endptr != '\0') { - ExitNow(error = OT_ERROR_PARSE); + unsigned long length; + + SuccessOrExit(error = ParseUnsignedLong(prefixLengthStr, length)); + prefix.mLength = static_cast(length); } error = otBorderRouterRemoveOnMeshPrefix(mInstance, &prefix); @@ -2472,7 +2468,7 @@ void Interpreter::ProcessPrefix(int argc, char *argv[]) } else { - ExitNow(error = OT_ERROR_INVALID_ARGS); + ExitNow(error = OT_ERROR_INVALID_COMMAND); } exit: @@ -2532,12 +2528,10 @@ otError Interpreter::ProcessRouteAdd(int argc, char *argv[]) otError error = OT_ERROR_NONE; otExternalRouteConfig config; int argcur = 0; + char * prefixLengthStr; memset(&config, 0, sizeof(otExternalRouteConfig)); - char *prefixLengthStr; - char *endptr; - VerifyOrExit(argc > 0, error = OT_ERROR_INVALID_ARGS); if ((prefixLengthStr = strchr(argv[argcur], '/')) == NULL) @@ -2549,11 +2543,11 @@ otError Interpreter::ProcessRouteAdd(int argc, char *argv[]) SuccessOrExit(error = otIp6AddressFromString(argv[argcur], &config.mPrefix.mPrefix)); - config.mPrefix.mLength = static_cast(strtol(prefixLengthStr, &endptr, 0)); - - if (*endptr != '\0') { - ExitNow(error = OT_ERROR_PARSE); + unsigned long length; + + SuccessOrExit(error = ParseUnsignedLong(prefixLengthStr, length)); + config.mPrefix.mLength = static_cast(length); } argcur++; @@ -2578,7 +2572,7 @@ otError Interpreter::ProcessRouteAdd(int argc, char *argv[]) } else { - ExitNow(error = OT_ERROR_PARSE); + ExitNow(error = OT_ERROR_INVALID_ARGS); } } @@ -2593,10 +2587,9 @@ otError Interpreter::ProcessRouteRemove(int argc, char *argv[]) otError error = OT_ERROR_NONE; struct otIp6Prefix prefix; int argcur = 0; + char * prefixLengthStr; memset(&prefix, 0, sizeof(struct otIp6Prefix)); - char *prefixLengthStr; - char *endptr; VerifyOrExit(argc > 0, error = OT_ERROR_INVALID_ARGS); @@ -2609,11 +2602,11 @@ otError Interpreter::ProcessRouteRemove(int argc, char *argv[]) SuccessOrExit(error = otIp6AddressFromString(argv[argcur], &prefix.mPrefix)); - prefix.mLength = static_cast(strtol(prefixLengthStr, &endptr, 0)); - - if (*endptr != '\0') { - ExitNow(error = OT_ERROR_PARSE); + unsigned long length; + + SuccessOrExit(error = ParseUnsignedLong(prefixLengthStr, length)); + prefix.mLength = static_cast(length); } error = otBorderRouterRemoveRoute(mInstance, &prefix); @@ -2676,7 +2669,7 @@ void Interpreter::ProcessRoute(int argc, char *argv[]) } else { - ExitNow(error = OT_ERROR_INVALID_ARGS); + ExitNow(error = OT_ERROR_INVALID_COMMAND); } exit: @@ -3030,7 +3023,7 @@ void Interpreter::ProcessSntp(int argc, char *argv[]) } else { - ExitNow(error = OT_ERROR_INVALID_ARGS); + ExitNow(error = OT_ERROR_INVALID_COMMAND); } exit: @@ -3156,7 +3149,7 @@ void Interpreter::ProcessThread(int argc, char *argv[]) } else { - ExitNow(error = OT_ERROR_INVALID_ARGS); + ExitNow(error = OT_ERROR_INVALID_COMMAND); } exit: @@ -3274,7 +3267,7 @@ void Interpreter::ProcessMacFilter(int argc, char *argv[]) } else { - error = OT_ERROR_INVALID_ARGS; + error = OT_ERROR_INVALID_COMMAND; } } @@ -3400,7 +3393,7 @@ otError Interpreter::ProcessMacFilterAddress(int argc, char *argv[]) { VerifyOrExit(argc >= 2, error = OT_ERROR_INVALID_ARGS); VerifyOrExit(Hex2Bin(argv[1], extAddr.m8, OT_EXT_ADDRESS_SIZE) == OT_EXT_ADDRESS_SIZE, - error = OT_ERROR_PARSE); + error = OT_ERROR_INVALID_ARGS); error = otLinkFilterAddAddress(mInstance, &extAddr); @@ -3419,7 +3412,7 @@ otError Interpreter::ProcessMacFilterAddress(int argc, char *argv[]) { VerifyOrExit(argc == 2, error = OT_ERROR_INVALID_ARGS); VerifyOrExit(Hex2Bin(argv[1], extAddr.m8, OT_EXT_ADDRESS_SIZE) == OT_EXT_ADDRESS_SIZE, - error = OT_ERROR_PARSE); + error = OT_ERROR_INVALID_ARGS); SuccessOrExit(error = otLinkFilterRemoveAddress(mInstance, &extAddr)); } else if (strcmp(argv[0], "clear") == 0) @@ -3429,7 +3422,7 @@ otError Interpreter::ProcessMacFilterAddress(int argc, char *argv[]) } else { - error = OT_ERROR_INVALID_ARGS; + error = OT_ERROR_INVALID_COMMAND; } } @@ -3481,7 +3474,7 @@ otError Interpreter::ProcessMacFilterRss(int argc, char *argv[]) VerifyOrExit(argc == 3, error = OT_ERROR_INVALID_ARGS); SuccessOrExit(error = ParseLong(argv[2], value)); linkquality = static_cast(value); - VerifyOrExit(linkquality <= 3, error = OT_ERROR_PARSE); + VerifyOrExit(linkquality <= 3, error = OT_ERROR_INVALID_ARGS); rss = otLinkConvertLinkQualityToRss(mInstance, linkquality); if (strcmp(argv[1], "*") == 0) @@ -3491,7 +3484,7 @@ otError Interpreter::ProcessMacFilterRss(int argc, char *argv[]) else { VerifyOrExit(Hex2Bin(argv[1], extAddr.m8, OT_EXT_ADDRESS_SIZE) == OT_EXT_ADDRESS_SIZE, - error = OT_ERROR_PARSE); + error = OT_ERROR_INVALID_ARGS); SuccessOrExit(error = otLinkFilterAddRssIn(mInstance, &extAddr, rss)); } @@ -3509,7 +3502,7 @@ otError Interpreter::ProcessMacFilterRss(int argc, char *argv[]) else { VerifyOrExit(Hex2Bin(argv[1], extAddr.m8, OT_EXT_ADDRESS_SIZE) == OT_EXT_ADDRESS_SIZE, - error = OT_ERROR_PARSE); + error = OT_ERROR_INVALID_ARGS); SuccessOrExit(error = otLinkFilterAddRssIn(mInstance, &extAddr, rss)); } @@ -3525,7 +3518,7 @@ otError Interpreter::ProcessMacFilterRss(int argc, char *argv[]) else { VerifyOrExit(Hex2Bin(argv[1], extAddr.m8, OT_EXT_ADDRESS_SIZE) == OT_EXT_ADDRESS_SIZE, - error = OT_ERROR_PARSE); + error = OT_ERROR_INVALID_ARGS); SuccessOrExit(error = otLinkFilterRemoveRssIn(mInstance, &extAddr)); } @@ -3536,7 +3529,7 @@ otError Interpreter::ProcessMacFilterRss(int argc, char *argv[]) } else { - error = OT_ERROR_INVALID_ARGS; + error = OT_ERROR_INVALID_COMMAND; } } @@ -3558,7 +3551,7 @@ void Interpreter::ProcessMac(int argc, char *argv[]) } else { - error = OT_ERROR_INVALID_ARGS; + error = OT_ERROR_INVALID_COMMAND; } exit: @@ -3676,7 +3669,7 @@ void Interpreter::ProcessLine(char *aBuf, uint16_t aBufLength, Server &aServer) if (i == mUserCommandsLength) { - AppendResult(OT_ERROR_PARSE); + AppendResult(OT_ERROR_INVALID_COMMAND); } } @@ -3719,7 +3712,7 @@ void Interpreter::ProcessNetworkDiagnostic(int argc, char *argv[]) } else { - ExitNow(error = OT_ERROR_INVALID_ARGS); + ExitNow(error = OT_ERROR_INVALID_COMMAND); } exit: diff --git a/src/cli/cli.hpp b/src/cli/cli.hpp index 37ebf4a0f..5abc81df0 100644 --- a/src/cli/cli.hpp +++ b/src/cli/cli.hpp @@ -126,8 +126,8 @@ public: * @param[in] aString A pointer to the ASCII string. * @param[out] aLong A reference to where the parsed long is placed. * - * @retval OT_ERROR_NONE Successfully parsed the ASCII string. - * @retval OT_ERROR_PARSE Could not parse the ASCII string. + * @retval OT_ERROR_NONE Successfully parsed the ASCII string. + * @retval OT_ERROR_INVALID_ARGS @p aString is not a valid long integer. * */ static otError ParseLong(char *aString, long &aLong); @@ -138,8 +138,8 @@ public: * @param[in] aString A pointer to the ASCII string. * @param[out] aUnsignedLong A reference to where the parsed unsigned long is placed. * - * @retval OT_ERROR_NONE Successfully parsed the ASCII string. - * @retval OT_ERROR_PARSE Could not parse the ASCII string. + * @retval OT_ERROR_NONE Successfully parsed the ASCII string. + * @retval OT_ERROR_INVALID_ARGS @p aString is not a valid unsigned long integer. * */ static otError ParseUnsignedLong(char *aString, unsigned long &aUnsignedLong); @@ -153,8 +153,8 @@ public: * @param[in] aAllowTruncate TRUE if @p aBinLength may be less than what is required * to convert @p aHex to binary representation, FALSE otherwise. * + * @returns The number of bytes in the binary representation, or -1 if @p aHex is not a valid hex string * - * @returns The number of bytes in the binary representation. */ static int Hex2Bin(const char *aHex, uint8_t *aBin, uint16_t aBinLength, bool aAllowTruncate = false); diff --git a/src/cli/cli_coap.cpp b/src/cli/cli_coap.cpp index 106d7a677..05cf88d7a 100644 --- a/src/cli/cli_coap.cpp +++ b/src/cli/cli_coap.cpp @@ -512,7 +512,7 @@ exit: otError Coap::Process(int argc, char *argv[]) { - otError error = OT_ERROR_PARSE; + otError error = OT_ERROR_INVALID_COMMAND; if (argc < 1) { diff --git a/src/cli/cli_coap_secure.cpp b/src/cli/cli_coap_secure.cpp index 3c14f7be3..795e71d61 100644 --- a/src/cli/cli_coap_secure.cpp +++ b/src/cli/cli_coap_secure.cpp @@ -220,7 +220,7 @@ otError CoapSecure::ProcessRequest(int argc, char *argv[]) } else { - ExitNow(error = OT_ERROR_PARSE); + ExitNow(error = OT_ERROR_INVALID_ARGS); } // Destination IPv6 address @@ -389,7 +389,7 @@ otError CoapSecure::ProcessX509(int argc, char *argv[]) otError CoapSecure::Process(int argc, char *argv[]) { - otError error = OT_ERROR_PARSE; + otError error = OT_ERROR_INVALID_COMMAND; if (argc < 1) { diff --git a/src/cli/cli_commissioner.cpp b/src/cli/cli_commissioner.cpp index 82e4895fd..7c69e04c9 100644 --- a/src/cli/cli_commissioner.cpp +++ b/src/cli/cli_commissioner.cpp @@ -126,7 +126,8 @@ otError Commissioner::ProcessJoiner(int argc, char *argv[]) } else { - VerifyOrExit(Interpreter::Hex2Bin(argv[2], addr.m8, sizeof(addr)) == sizeof(addr), error = OT_ERROR_PARSE); + VerifyOrExit(Interpreter::Hex2Bin(argv[2], addr.m8, sizeof(addr)) == sizeof(addr), + error = OT_ERROR_INVALID_ARGS); addrPtr = &addr; } @@ -191,7 +192,7 @@ otError Commissioner::ProcessMgmtGet(int argc, char *argv[]) VerifyOrExit(static_cast(value) <= (sizeof(tlvs) - static_cast(length)), error = OT_ERROR_NO_BUFS); VerifyOrExit(Interpreter::Hex2Bin(argv[index], tlvs + length, static_cast(value)) >= 0, - error = OT_ERROR_PARSE); + error = OT_ERROR_INVALID_ARGS); length += value; } else @@ -244,7 +245,7 @@ otError Commissioner::ProcessMgmtSet(int argc, char *argv[]) VerifyOrExit(static_cast(length) <= OT_STEERING_DATA_MAX_LENGTH, error = OT_ERROR_NO_BUFS); VerifyOrExit(Interpreter::Hex2Bin(argv[index], dataset.mSteeringData.m8, static_cast(length)) >= 0, - error = OT_ERROR_PARSE); + error = OT_ERROR_INVALID_ARGS); dataset.mSteeringData.mLength = static_cast(length); length = 0; } @@ -261,7 +262,7 @@ otError Commissioner::ProcessMgmtSet(int argc, char *argv[]) length = static_cast((strlen(argv[index]) + 1) / 2); VerifyOrExit(static_cast(length) <= sizeof(tlvs), error = OT_ERROR_NO_BUFS); VerifyOrExit(Interpreter::Hex2Bin(argv[index], tlvs, static_cast(length)) >= 0, - error = OT_ERROR_PARSE); + error = OT_ERROR_INVALID_ARGS); } else { @@ -387,7 +388,7 @@ otError Commissioner::ProcessStop(int argc, char *argv[]) otError Commissioner::Process(int argc, char *argv[]) { - otError error = OT_ERROR_INVALID_ARGS; + otError error = OT_ERROR_INVALID_COMMAND; if (argc < 1) { diff --git a/src/cli/cli_dataset.cpp b/src/cli/cli_dataset.cpp index 36bf1348d..40fa94758 100644 --- a/src/cli/cli_dataset.cpp +++ b/src/cli/cli_dataset.cpp @@ -184,7 +184,7 @@ otError Dataset::Print(otOperationalDataset &aDataset) otError Dataset::Process(int argc, char *argv[]) { - otError error = OT_ERROR_PARSE; + otError error = OT_ERROR_INVALID_COMMAND; if (argc == 0) { @@ -370,7 +370,7 @@ otError Dataset::ProcessExtPanId(int argc, char *argv[]) uint8_t extPanId[OT_EXT_PAN_ID_SIZE]; VerifyOrExit(argc > 0, error = OT_ERROR_INVALID_ARGS); - VerifyOrExit(Interpreter::Hex2Bin(argv[0], extPanId, sizeof(extPanId)) >= 0, error = OT_ERROR_PARSE); + VerifyOrExit(Interpreter::Hex2Bin(argv[0], extPanId, sizeof(extPanId)) >= 0, error = OT_ERROR_INVALID_ARGS); memcpy(sDataset.mExtendedPanId.m8, extPanId, sizeof(sDataset.mExtendedPanId)); sDataset.mComponents.mIsExtendedPanIdPresent = true; @@ -385,7 +385,8 @@ otError Dataset::ProcessMasterKey(int argc, char *argv[]) uint8_t key[OT_MASTER_KEY_SIZE]; VerifyOrExit(argc > 0, error = OT_ERROR_INVALID_ARGS); - VerifyOrExit((Interpreter::Hex2Bin(argv[0], key, sizeof(key))) == OT_MASTER_KEY_SIZE, error = OT_ERROR_PARSE); + VerifyOrExit((Interpreter::Hex2Bin(argv[0], key, sizeof(key))) == OT_MASTER_KEY_SIZE, + error = OT_ERROR_INVALID_ARGS); memcpy(sDataset.mMasterKey.m8, key, sizeof(sDataset.mMasterKey)); sDataset.mComponents.mIsMasterKeyPresent = true; @@ -415,7 +416,7 @@ otError Dataset::ProcessNetworkName(int argc, char *argv[]) size_t length; VerifyOrExit(argc > 0, error = OT_ERROR_INVALID_ARGS); - VerifyOrExit((length = strlen(argv[0])) <= OT_NETWORK_NAME_MAX_SIZE, error = OT_ERROR_PARSE); + VerifyOrExit((length = strlen(argv[0])) <= OT_NETWORK_NAME_MAX_SIZE, error = OT_ERROR_INVALID_ARGS); memset(&sDataset.mNetworkName, 0, sizeof(sDataset.mNetworkName)); memcpy(sDataset.mNetworkName.m8, argv[0], length); @@ -488,7 +489,7 @@ otError Dataset::ProcessMgmtSetCommand(int argc, char *argv[]) dataset.mComponents.mIsMasterKeyPresent = true; VerifyOrExit((length = Interpreter::Hex2Bin(argv[index], dataset.mMasterKey.m8, sizeof(dataset.mMasterKey.m8))) == OT_MASTER_KEY_SIZE, - error = OT_ERROR_PARSE); + error = OT_ERROR_INVALID_ARGS); length = 0; } else if (strcmp(argv[index], "networkname") == 0) @@ -496,7 +497,7 @@ otError Dataset::ProcessMgmtSetCommand(int argc, char *argv[]) VerifyOrExit(++index < argc, error = OT_ERROR_INVALID_ARGS); dataset.mComponents.mIsNetworkNamePresent = true; VerifyOrExit((length = static_cast(strlen(argv[index]))) <= OT_NETWORK_NAME_MAX_SIZE, - error = OT_ERROR_PARSE); + error = OT_ERROR_INVALID_ARGS); memset(&dataset.mNetworkName, 0, sizeof(sDataset.mNetworkName)); memcpy(dataset.mNetworkName.m8, argv[index], static_cast(length)); length = 0; @@ -507,7 +508,7 @@ otError Dataset::ProcessMgmtSetCommand(int argc, char *argv[]) dataset.mComponents.mIsExtendedPanIdPresent = true; VerifyOrExit( Interpreter::Hex2Bin(argv[index], dataset.mExtendedPanId.m8, sizeof(dataset.mExtendedPanId.m8)) >= 0, - error = OT_ERROR_PARSE); + error = OT_ERROR_INVALID_ARGS); } else if (strcmp(argv[index], "localprefix") == 0) { @@ -550,7 +551,7 @@ otError Dataset::ProcessMgmtSetCommand(int argc, char *argv[]) length = static_cast((strlen(argv[index]) + 1) / 2); VerifyOrExit(static_cast(length) <= sizeof(tlvs), error = OT_ERROR_NO_BUFS); VerifyOrExit(Interpreter::Hex2Bin(argv[index], tlvs, static_cast(length)) >= 0, - error = OT_ERROR_PARSE); + error = OT_ERROR_INVALID_ARGS); } else { @@ -638,7 +639,7 @@ otError Dataset::ProcessMgmtGetCommand(int argc, char *argv[]) VerifyOrExit(static_cast(value) <= (sizeof(tlvs) - static_cast(length)), error = OT_ERROR_NO_BUFS); VerifyOrExit(Interpreter::Hex2Bin(argv[index], tlvs + length, static_cast(value)) >= 0, - error = OT_ERROR_PARSE); + error = OT_ERROR_INVALID_ARGS); length += value; } else if (strcmp(argv[index], "address") == 0) @@ -683,7 +684,7 @@ otError Dataset::ProcessPskc(int argc, char *argv[]) length = static_cast((strlen(argv[0]) + 1) / 2); VerifyOrExit(length <= OT_PSKC_MAX_SIZE, error = OT_ERROR_NO_BUFS); VerifyOrExit(Interpreter::Hex2Bin(argv[0], sDataset.mPskc.m8 + OT_PSKC_MAX_SIZE - length, length) == length, - error = OT_ERROR_PARSE); + error = OT_ERROR_INVALID_ARGS); sDataset.mComponents.mIsPskcPresent = true; @@ -729,7 +730,7 @@ otError Dataset::ProcessSecurityPolicy(int argc, char *argv[]) break; default: - ExitNow(error = OT_ERROR_PARSE); + ExitNow(error = OT_ERROR_INVALID_ARGS); } } } diff --git a/src/cli/cli_joiner.cpp b/src/cli/cli_joiner.cpp index 971555154..47a3ea1be 100644 --- a/src/cli/cli_joiner.cpp +++ b/src/cli/cli_joiner.cpp @@ -107,7 +107,7 @@ otError Joiner::ProcessStop(int argc, char *argv[]) otError Joiner::Process(int argc, char *argv[]) { - otError error = OT_ERROR_INVALID_ARGS; + otError error = OT_ERROR_INVALID_COMMAND; if (argc < 1) { diff --git a/src/cli/cli_udp.cpp b/src/cli/cli_udp.cpp index ef28f66d4..4b4cc9f3c 100644 --- a/src/cli/cli_udp.cpp +++ b/src/cli/cli_udp.cpp @@ -260,7 +260,7 @@ exit: otError UdpExample::Process(int argc, char *argv[]) { - otError error = OT_ERROR_PARSE; + otError error = OT_ERROR_INVALID_COMMAND; if (argc < 1) { diff --git a/src/core/common/logging.cpp b/src/core/common/logging.cpp index 9f1b551b6..cef2eec03 100644 --- a/src/core/common/logging.cpp +++ b/src/core/common/logging.cpp @@ -192,6 +192,7 @@ static const char *const sThreadErrorStrings[OT_NUM_ERRORS] = { "NonLowpanDataFrame", // OT_ERROR_NOT_LOWPAN_DATA_FRAME = 32 "ReservedError33", // otError 33 is reserved "LinkMarginLow", // OT_ERROR_LINK_MARGIN_LOW = 34 + "InvalidCommand", // OT_ERROR_INVALID_COMMAND = 35 }; const char *otThreadErrorToString(otError aError) diff --git a/src/core/diags/factory_diags.cpp b/src/core/diags/factory_diags.cpp index b73e67abf..f4f57c1ea 100644 --- a/src/core/diags/factory_diags.cpp +++ b/src/core/diags/factory_diags.cpp @@ -54,7 +54,7 @@ otError otPlatDiagProcess(otInstance *aInstance, int argc, char *argv[], char *a OT_UNUSED_VARIABLE(aOutput); OT_UNUSED_VARIABLE(aOutputMaxLen); - return OT_ERROR_NOT_IMPLEMENTED; + return OT_ERROR_INVALID_COMMAND; } namespace ot { @@ -574,7 +574,7 @@ otError Diags::ProcessCmd(int aArgCount, char *aArgVector[], char *aOutput, size exit: // Add more platform specific diagnostics features here. - if (error == OT_ERROR_NOT_IMPLEMENTED && aArgCount > 1) + if (error == OT_ERROR_INVALID_COMMAND && aArgCount > 1) { snprintf(aOutput, aOutputMaxLen, "diag feature '%s' is not supported\r\n", aArgVector[0]); } diff --git a/tests/fuzz/fuzzer_platform.cpp b/tests/fuzz/fuzzer_platform.cpp index b61f2004d..53fd2692d 100644 --- a/tests/fuzz/fuzzer_platform.cpp +++ b/tests/fuzz/fuzzer_platform.cpp @@ -520,7 +520,7 @@ otError otPlatDiagProcess(otInstance *aInstance, int argc, char *argv[], char *a OT_UNUSED_VARIABLE(aOutput); OT_UNUSED_VARIABLE(aOutputMaxLen); - return OT_ERROR_INVALID_ARGS; + return OT_ERROR_INVALID_COMMAND; } void otPlatDiagModeSet(bool aMode)