mirror of
https://github.com/Kitware/CMake.git
synced 2026-01-09 07:11:05 -06:00
cmSystemTools: Fix ParseArguments out-of-bounds read
When checking for a Windows-style leading path, do not read past the null terminator. Issue: #17854
This commit is contained in:
@@ -550,12 +550,13 @@ std::vector<std::string> cmSystemTools::ParseArguments(const char* command)
|
||||
|
||||
bool win_path = false;
|
||||
|
||||
if ((command[0] != '/' && command[1] == ':' && command[2] == '\\') ||
|
||||
(command[0] == '\"' && command[1] != '/' && command[2] == ':' &&
|
||||
command[3] == '\\') ||
|
||||
(command[0] == '\'' && command[1] != '/' && command[2] == ':' &&
|
||||
command[3] == '\\') ||
|
||||
(command[0] == '\\' && command[1] == '\\')) {
|
||||
if (command[0] && command[1] &&
|
||||
((command[0] != '/' && command[1] == ':' && command[2] == '\\') ||
|
||||
(command[0] == '\"' && command[1] != '/' && command[2] == ':' &&
|
||||
command[3] == '\\') ||
|
||||
(command[0] == '\'' && command[1] != '/' && command[2] == ':' &&
|
||||
command[3] == '\\') ||
|
||||
(command[0] == '\\' && command[1] == '\\'))) {
|
||||
win_path = true;
|
||||
}
|
||||
// Split the command into an argv array.
|
||||
|
||||
Reference in New Issue
Block a user