Module: wine Branch: stable Commit: 99c683af96bc5a098b1c1478d33b6971db4ed6e5 URL: https://source.winehq.org/git/wine.git/?a=commit;h=99c683af96bc5a098b1c1478d...
Author: Piotr Caban piotr@codeweavers.com Date: Wed Jan 29 13:42:19 2020 +0100
msvcrt: Add support for quoted paths in _wsearchenv_s.
Signed-off-by: Piotr Caban piotr@codeweavers.com Signed-off-by: Alexandre Julliard julliard@winehq.org (cherry picked from commit f05549b7f71740362ae5ef6dc8d5e846f8c41f0b) Signed-off-by: Michael Stefaniuc mstefani@winehq.org
---
dlls/msvcrt/dir.c | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-)
diff --git a/dlls/msvcrt/dir.c b/dlls/msvcrt/dir.c index 83aff8bcb5..5bd8fb1b15 100644 --- a/dlls/msvcrt/dir.c +++ b/dlls/msvcrt/dir.c @@ -1833,12 +1833,27 @@ int CDECL MSVCRT__wsearchenv_s(const MSVCRT_wchar_t* file, const MSVCRT_wchar_t* for(; *penv; penv = (*end ? end + 1 : end)) { end = penv; - while(*end && *end != ';') end++; /* Find end of next path */ - path_len = end - penv; + path_len = 0; + while(*end && *end != ';' && path_len < MAX_PATH) + { + if (*end == '"') + { + end++; + while(*end && *end != '"' && path_len < MAX_PATH) + { + path[path_len++] = *end; + end++; + } + if (*end == '"') end++; + continue; + } + + path[path_len++] = *end; + end++; + } if (!path_len || path_len >= MAX_PATH) continue;
- memcpy(path, penv, path_len * sizeof(MSVCRT_wchar_t)); if (path[path_len - 1] != '/' && path[path_len - 1] != '\') path[path_len++] = '\'; if (path_len + fname_len >= MAX_PATH)