diff --git a/dlls/kernel32/process.c b/dlls/kernel32/process.c index 6e7b23e..63eda34 100644 --- a/dlls/kernel32/process.c +++ b/dlls/kernel32/process.c @@ -2429,6 +2429,33 @@ static BOOL create_process_impl( LPCWSTR app_name, LPWSTR cmd_line, LPSECURITY_A return FALSE; if (hFile == INVALID_HANDLE_VALUE) goto done; + /* CROSSOVER HACK: bug 13322 (winehq bug 39403) + * Insert --no-sandbox in command line of Steam's web helper process to + * work around problems hooking our ntdll exports. */ + { + static const WCHAR steamwebhelperexeW[] = {'s','t','e','a','m','w','e','b','h','e','l','p','e','r','.','e','x','e',0}; + static const WCHAR nosandboxW[] = {' ','-','-','n','o','-','s','a','n','d','b','o','x',0}; + + if (strstrW(name, steamwebhelperexeW)) + { + LPWSTR new_command_line; + + new_command_line = HeapAlloc(GetProcessHeap(), 0, + sizeof(WCHAR) * (strlenW(tidy_cmdline) + strlenW(nosandboxW) + 1)); + + if (!new_command_line) return FALSE; + + strcpyW(new_command_line, tidy_cmdline); + strcatW(new_command_line, nosandboxW); + + TRACE("CrossOver hack changing command line to %s\n", debugstr_w(new_command_line)); + + if (tidy_cmdline != cmd_line) HeapFree( GetProcessHeap(), 0, tidy_cmdline ); + tidy_cmdline = new_command_line; + } + } + /* end CROSSOVER HACK */ + /* Warn if unsupported features are used */ if (flags & (IDLE_PRIORITY_CLASS | HIGH_PRIORITY_CLASS | REALTIME_PRIORITY_CLASS |