Author: greatlrd
Date: Wed Apr 26 08:49:11 2006
New Revision: 21742
URL:
http://svn.reactos.ru/svn/reactos?rev=21742&view=rev
Log:
[AUDIT] after looking through code no signs of reverse engineering were found.
BUG 1436 patch from w3seek : SMSS: make \SystemRoot\System32 the current directory for
started subsystems
Modified:
trunk/reactos/base/system/smss/smapicomp.c (props changed)
trunk/reactos/base/system/smss/smapiexec.c (contents, props changed)
trunk/reactos/base/system/smss/smss.c (props changed)
Propchange: trunk/reactos/base/system/smss/smapicomp.c
------------------------------------------------------------------------------
--- svn:needs-lock (original)
+++ svn:needs-lock (removed)
@@ -1,1 +1,0 @@
-*
Modified: trunk/reactos/base/system/smss/smapiexec.c
URL:
http://svn.reactos.ru/svn/reactos/trunk/reactos/base/system/smss/smapiexec.…
==============================================================================
--- trunk/reactos/base/system/smss/smapiexec.c (original)
+++ trunk/reactos/base/system/smss/smapiexec.c Wed Apr 26 08:49:11 2006
@@ -27,6 +27,8 @@
#define NDEBUG
#include <debug.h>
+
+static const WCHAR szSystemDirectory[] = L"\\System32";
/**********************************************************************
* SmCreateUserProcess/5
@@ -55,6 +57,7 @@
{
UNICODE_STRING ImagePathString = {0};
UNICODE_STRING CommandLineString = {0};
+ UNICODE_STRING SystemDirectory = {0};
PRTL_USER_PROCESS_PARAMETERS ProcessParameters = NULL;
RTL_USER_PROCESS_INFORMATION ProcessInfo = {0};
PRTL_USER_PROCESS_INFORMATION pProcessInfo = & ProcessInfo;
@@ -70,16 +73,55 @@
RtlInitUnicodeString (& ImagePathString, ImagePath);
RtlInitUnicodeString (& CommandLineString, CommandLine);
- RtlCreateProcessParameters(& ProcessParameters,
- & ImagePathString,
- NULL,
- NULL,
- & CommandLineString,
- SmSystemEnvironment,
- NULL,
- NULL,
- NULL,
- NULL);
+ SystemDirectory.MaximumLength = (wcslen(SharedUserData->NtSystemRoot) *
sizeof(WCHAR)) + sizeof(szSystemDirectory);
+ SystemDirectory.Buffer = RtlAllocateHeap(RtlGetProcessHeap(),
+ 0,
+ SystemDirectory.MaximumLength);
+ if (SystemDirectory.Buffer == NULL)
+ {
+ Status = STATUS_NO_MEMORY;
+ DPRINT1("SM: %s: Allocating system directory string failed
(Status=0x%08lx)\n",
+ __FUNCTION__, Status);
+ return Status;
+ }
+
+ Status = RtlAppendUnicodeToString(& SystemDirectory,
+ SharedUserData->NtSystemRoot);
+ if (!NT_SUCCESS(Status))
+ {
+ goto FailProcParams;
+ }
+
+ Status = RtlAppendUnicodeToString(& SystemDirectory,
+ szSystemDirectory);
+ if (!NT_SUCCESS(Status))
+ {
+ goto FailProcParams;
+ }
+
+
+ Status = RtlCreateProcessParameters(& ProcessParameters,
+ & ImagePathString,
+ NULL,
+ & SystemDirectory,
+ & CommandLineString,
+ SmSystemEnvironment,
+ NULL,
+ NULL,
+ NULL,
+ NULL);
+
+ RtlFreeHeap(RtlGetProcessHeap(),
+ 0,
+ SystemDirectory.Buffer);
+
+ if (!NT_SUCCESS(Status))
+ {
+FailProcParams:
+ DPRINT1("SM: %s: Creating process parameters failed (Status=0x%08lx)\n",
+ __FUNCTION__, Status);
+ return Status;
+ }
Status = RtlCreateUserProcess (& ImagePathString,
OBJ_CASE_INSENSITIVE,
Propchange: trunk/reactos/base/system/smss/smapiexec.c
------------------------------------------------------------------------------
--- svn:needs-lock (original)
+++ svn:needs-lock (removed)
@@ -1,1 +1,0 @@
-*
Propchange: trunk/reactos/base/system/smss/smss.c
------------------------------------------------------------------------------
--- svn:needs-lock (original)
+++ svn:needs-lock (removed)
@@ -1,1 +1,0 @@
-*