https://git.reactos.org/?p=reactos.git;a=commitdiff;h=766d04d937896699a5a0f…
commit 766d04d937896699a5a0ff6a6e4a7797195856d0
Author: Katayama Hirofumi MZ <katayama.hirofumi.mz(a)gmail.com>
AuthorDate: Fri Aug 2 04:03:25 2024 +0900
Commit: GitHub <noreply(a)github.com>
CommitDate: Fri Aug 2 04:03:25 2024 +0900
[SHELL32] shlexec: Do not expand without SEE_MASK_DOENVSUBST (#7206)
JIRA issue: N/A
Don't expand the application name
unless SEE_MASK_DOENVSUBST
is not specified.
---
dll/win32/shell32/shlexec.cpp | 20 +-------------------
1 file changed, 1 insertion(+), 19 deletions(-)
diff --git a/dll/win32/shell32/shlexec.cpp b/dll/win32/shell32/shlexec.cpp
index c5c121eaf18..6134aaf311b 100644
--- a/dll/win32/shell32/shlexec.cpp
+++ b/dll/win32/shell32/shlexec.cpp
@@ -2068,7 +2068,7 @@ static BOOL SHELL_execute(LPSHELLEXECUTEINFOW sei, SHELL_ExecuteW32
execfunc)
TRACE("-- idlist=%p (%s)\n", sei_tmp.lpIDList,
debugstr_w(wszApplicationName));
}
- if (sei_tmp.fMask & SEE_MASK_DOENVSUBST)
+ if ((sei_tmp.fMask & SEE_MASK_DOENVSUBST) &&
!StrIsNullOrEmpty(sei_tmp.lpFile))
{
WCHAR *tmp = expand_environment(sei_tmp.lpFile);
if (tmp)
@@ -2076,13 +2076,6 @@ static BOOL SHELL_execute(LPSHELLEXECUTEINFOW sei, SHELL_ExecuteW32
execfunc)
wszApplicationName.Attach(tmp);
sei_tmp.lpFile = wszApplicationName;
}
-
- tmp = expand_environment(sei_tmp.lpDirectory);
- if (tmp)
- {
- wszDirAlloc.Attach(tmp);
- sei_tmp.lpDirectory = wszDir = wszDirAlloc;
- }
}
if ((sei_tmp.fMask & SEE_MASK_INVOKEIDLIST) == SEE_MASK_INVOKEIDLIST)
@@ -2095,7 +2088,6 @@ static BOOL SHELL_execute(LPSHELLEXECUTEINFOW sei, SHELL_ExecuteW32
execfunc)
}
}
-
if (ERROR_SUCCESS == ShellExecute_FromContextMenuHandlers(&sei_tmp))
{
sei->hInstApp = (HINSTANCE) 33;
@@ -2156,16 +2148,6 @@ static BOOL SHELL_execute(LPSHELLEXECUTEINFOW sei, SHELL_ExecuteW32
execfunc)
wszApplicationName.Attach(buf.Detach());
sei_tmp.lpFile = wszApplicationName;
}
- else /* or expand environment strings (not both!) */
- {
- LPWSTR tmp = expand_environment(sei_tmp.lpFile);
- if (tmp)
- {
- wszApplicationName.Attach(tmp);
- /* appKnownSingular unmodified */
- sei_tmp.lpFile = wszApplicationName;
- }
- }
/* Else, try to execute the filename */
TRACE("execute: %s,%s,%s\n", debugstr_w(wszApplicationName),
debugstr_w(wszParameters), debugstr_w(wszDir));