https://git.reactos.org/?p=reactos.git;a=commitdiff;h=521d330d048af5df80b2f…
commit 521d330d048af5df80b2ffdb268141f907de4844
Author: Jérôme Gardou <jerome.gardou(a)reactos.org>
AuthorDate: Tue Jun 8 18:04:35 2021 +0200
Commit: Jérôme Gardou <zefklop(a)users.noreply.github.com>
CommitDate: Wed Jun 9 11:23:39 2021 +0200
[CMD] Use GetFullPathName instead of copying buffers when resolving executable names
This properly strips spaces & dots at the end of the file.
Fixes the infinite loop with CreateProcess calling cmd over and over with e.g.
'cmd /c "some_script.bat "'
Uncovered by recent ShellExecuteEx tests
Dedicated to Katayama for the trigger & Hermès for the tests
---
base/shell/cmd/where.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/base/shell/cmd/where.c b/base/shell/cmd/where.c
index 0ba4c08c5ec..4030a877a73 100644
--- a/base/shell/cmd/where.c
+++ b/base/shell/cmd/where.c
@@ -106,7 +106,7 @@ SearchForExecutableSingle (LPCTSTR pFileName, LPTSTR pFullName, LPTSTR
pPathExt,
if (IsExistingFile (szPathBuffer))
{
TRACE ("Found: \'%s\'\n", debugstr_aw(szPathBuffer));
- _tcscpy (pFullName, szPathBuffer);
+ GetFullPathName(szPathBuffer, MAX_PATH, pFullName, NULL);
return TRUE;
}
@@ -130,7 +130,7 @@ SearchForExecutableSingle (LPCTSTR pFileName, LPTSTR pFullName, LPTSTR
pPathExt,
if (IsExistingFile (szPathBuffer))
{
TRACE ("Found: \'%s\'\n", debugstr_aw(szPathBuffer));
- _tcscpy (pFullName, szPathBuffer);
+ GetFullPathName(szPathBuffer, MAX_PATH, pFullName, NULL);
return TRUE;
}
}