[PATCH] shell32: Increase {cmd,parameter} buffer size to 2048.

Haoyang Chen chenhaoyang at uniontech.com
Thu May 27 04:49:01 CDT 2021


Avoid crashes caused by very long URLs.

Signed-off-by: Haoyang Chen <chenhaoyang at uniontech.com>
---
 dlls/shell32/shlexec.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/dlls/shell32/shlexec.c b/dlls/shell32/shlexec.c
index ce0b8f6d2be..e0b38a854d5 100644
--- a/dlls/shell32/shlexec.c
+++ b/dlls/shell32/shlexec.c
@@ -448,7 +448,7 @@ static BOOL SHELL_TryAppPathW( LPCWSTR szName, LPWSTR lpResult, WCHAR **env)
 	'\\','C','u','r','r','e','n','t','V','e','r','s','i','o','n','\\','A','p','p',' ','P','a','t','h','s','\\',0};
     static const WCHAR wPath[] = {'P','a','t','h',0};
     HKEY hkApp = 0;
-    WCHAR buffer[1024];
+    WCHAR buffer[2048];
     LONG len;
     LONG res;
     BOOL found = FALSE;
@@ -991,7 +991,7 @@ static UINT_PTR execute_from_key(LPCWSTR key, LPCWSTR lpFile, WCHAR *env, LPCWST
 {
     static const WCHAR wCommand[] = {'c','o','m','m','a','n','d',0};
     static const WCHAR wDdeexec[] = {'d','d','e','e','x','e','c',0};
-    WCHAR cmd[256], param[1024], ddeexec[256];
+    WCHAR cmd[256], param[2048], ddeexec[256];
     LONG cmdlen = sizeof(cmd), ddeexeclen = sizeof(ddeexec);
     UINT_PTR retval = SE_ERR_NOASSOC;
     DWORD resultLen;
@@ -1588,7 +1588,7 @@ static BOOL SHELL_execute( LPSHELLEXECUTEINFOW sei, SHELL_ExecuteW32 execfunc )
         SEE_MASK_CONNECTNETDRV | SEE_MASK_FLAG_DDEWAIT |
         SEE_MASK_UNICODE       | SEE_MASK_ASYNCOK      | SEE_MASK_HMONITOR;
 
-    WCHAR parametersBuffer[1024], dirBuffer[MAX_PATH], wcmdBuffer[1024];
+    WCHAR parametersBuffer[2048], dirBuffer[MAX_PATH], wcmdBuffer[2048];
     WCHAR *wszApplicationName, *wszParameters, *wszDir, *wcmd = NULL;
     DWORD dwApplicationNameLen = MAX_PATH+2;
     DWORD parametersLen = ARRAY_SIZE(parametersBuffer);
-- 
2.20.1






More information about the wine-devel mailing list