From cb5e076a3e0a8daa7ee3576e1962c5388f2002ca Mon Sep 17 00:00:00 2001 From: Jonathan Hui Date: Fri, 25 Jan 2019 15:36:50 -0800 Subject: [PATCH] [cli] add length checks for "coaps set psk" (#3518) --- src/cli/cli_coap_secure.cpp | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) 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(