mirror of
https://github.com/Kitware/CMake.git
synced 2026-05-02 12:19:54 -05: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;
|
bool win_path = false;
|
||||||
|
|
||||||
if ((command[0] != '/' && command[1] == ':' && command[2] == '\\') ||
|
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[0] == '\'' && command[1] != '/' && command[2] == ':' &&
|
command[3] == '\\') ||
|
||||||
command[3] == '\\') ||
|
(command[0] == '\'' && command[1] != '/' && command[2] == ':' &&
|
||||||
(command[0] == '\\' && command[1] == '\\')) {
|
command[3] == '\\') ||
|
||||||
|
(command[0] == '\\' && command[1] == '\\'))) {
|
||||||
win_path = true;
|
win_path = true;
|
||||||
}
|
}
|
||||||
// Split the command into an argv array.
|
// Split the command into an argv array.
|
||||||
|
|||||||
Reference in New Issue
Block a user