diff --git a/src/cli/cli_coap_secure.cpp b/src/cli/cli_coap_secure.cpp index e3e8c440d..1f74de593 100644 --- a/src/cli/cli_coap_secure.cpp +++ b/src/cli/cli_coap_secure.cpp @@ -168,10 +168,16 @@ otError CoapSecure::Process(int argc, char *argv[]) { if (argc > 3) { - mPskLength = (uint8_t)strlen(argv[2]); - mPskIdLength = (uint8_t)strlen(argv[3]); + size_t length; + length = strlen(argv[2]); + VerifyOrExit(length <= sizeof(mPsk), error = OT_ERROR_INVALID_ARGS); + mPskLength = static_cast(length); memcpy(mPsk, argv[2], mPskLength); + + length = strlen(argv[3]); + VerifyOrExit(length <= sizeof(mPskId), error = OT_ERROR_INVALID_ARGS); + mPskIdLength = static_cast(length); memcpy(mPskId, argv[3], mPskIdLength); SuccessOrExit(