diff --git a/src/cli/cli.cpp b/src/cli/cli.cpp index b10a1853b..478ac5c49 100644 --- a/src/cli/cli.cpp +++ b/src/cli/cli.cpp @@ -887,6 +887,7 @@ void Interpreter::ProcessDiscover(int argc, char *argv[]) if (argc > 0) { SuccessOrExit(error = ParseLong(argv[0], value)); + VerifyOrExit(value <= static_cast(sizeof(scanChannels) * CHAR_BIT), error = OT_ERROR_INVALID_ARGS); scanChannels = 1 << value; } @@ -2729,6 +2730,7 @@ void Interpreter::ProcessScan(int argc, char *argv[]) else { SuccessOrExit(error = ParseLong(argv[0], value)); + VerifyOrExit(value < static_cast(sizeof(scanChannels) * CHAR_BIT), error = OT_ERROR_INVALID_ARGS); scanChannels = 1 << value; } }