https://git.reactos.org/?p=reactos.git;a=commitdiff;h=b0a1cb52becb67f4839deba5b82f02c3f543adee

commit b0a1cb52becb67f4839deba5b82f02c3f543adee
Author:     Katayama Hirofumi MZ <[email protected]>
AuthorDate: Tue Aug 28 19:45:03 2018 +0900
Commit:     Hermès BÉLUSCA - MAÏTO <[email protected]>
CommitDate: Tue Aug 28 12:45:03 2018 +0200

    [TCPSVCS] Remove hardcoded C drive letter (#800)
    
    CORE-13228, CORE-13235
    
    For USETUP, add a comment about why the code uses it when adding a 
boot-sector boot entry to NTLDR. CORE-13226
---
 base/services/tcpsvcs/log.c     | 12 +++++++++---
 base/services/tcpsvcs/tcpsvcs.h |  1 +
 base/setup/usetup/bootsup.c     |  2 ++
 3 files changed, 12 insertions(+), 3 deletions(-)

diff --git a/base/services/tcpsvcs/log.c b/base/services/tcpsvcs/log.c
index 3b2d467d71..ef25909b0b 100644
--- a/base/services/tcpsvcs/log.c
+++ b/base/services/tcpsvcs/log.c
@@ -12,7 +12,7 @@
 #define DEBUG
 
 static LPWSTR lpEventSource = L"tcpsvcs";
-static LPCWSTR lpLogFileName = L"C:\\tcpsvcs_log.log";
+static WCHAR szLogFileName[MAX_PATH];
 static HANDLE hLogFile = NULL;
 
 static OVERLAPPED olWrite;
@@ -47,7 +47,7 @@ LogToEventLog(LPCWSTR lpMsg,
 static BOOL
 OpenLogFile()
 {
-    hLogFile = CreateFileW(lpLogFileName,
+    hLogFile = CreateFileW(szLogFileName,
                            GENERIC_WRITE,
                            FILE_SHARE_READ,
                            NULL,
@@ -212,13 +212,19 @@ InitLogging()
 #ifdef DEBUG
     BOOL bRet = FALSE;
 
+    if (!GetEnvironmentVariableW(L"SystemDrive", szLogFileName, 
ARRAYSIZE(szLogFileName)))
+    {
+        StringCchCopyW(szLogFileName, ARRAYSIZE(szLogFileName), L"C:");
+    }
+    StringCchCatW(szLogFileName, ARRAYSIZE(szLogFileName), 
L"\\tcpsvcs_log.log");
+
     ZeroMemory(&olWrite, sizeof(OVERLAPPED));
     olWrite.Offset = 0xFFFFFFFF;
     olWrite.OffsetHigh = 0xFFFFFFFF;
     olWrite.hEvent = CreateEvent(NULL, TRUE, FALSE, NULL);
     if (olWrite.hEvent)
     {
-        DeleteFileW(lpLogFileName);
+        DeleteFileW(szLogFileName);
 
         if (OpenLogFile())
         {
diff --git a/base/services/tcpsvcs/tcpsvcs.h b/base/services/tcpsvcs/tcpsvcs.h
index b024e7c251..9c5b16b5ce 100644
--- a/base/services/tcpsvcs/tcpsvcs.h
+++ b/base/services/tcpsvcs/tcpsvcs.h
@@ -9,6 +9,7 @@
 #define _INC_WINDOWS
 #include <winsock2.h>
 #include <tchar.h>
+#include <strsafe.h>
 
 #define LOG_FILE 1
 #define LOG_EVENTLOG 2
diff --git a/base/setup/usetup/bootsup.c b/base/setup/usetup/bootsup.c
index 309e096d39..37cd680029 100644
--- a/base/setup/usetup/bootsup.c
+++ b/base/setup/usetup/bootsup.c
@@ -2378,6 +2378,8 @@ InstallFatBootcodeToPartition(
         /* Update 'boot.ini' */
         CombinePaths(DstPath, ARRAYSIZE(DstPath), 2, SystemRootPath->Buffer, 
L"boot.ini");
 
+        /* Windows' NTLDR loads an external bootsector file when the specified 
drive
+           letter is C:, otherwise it will interpret it as a boot DOS path 
specifier. */
         DPRINT1("Update 'boot.ini': %S\n", DstPath);
         Status = UpdateBootIni(DstPath,
                                L"C:\\bootsect.ros",

Reply via email to