https://git.reactos.org/?p=reactos.git;a=commitdiff;h=48aab0fb20330d7cdcdbd9...
commit 48aab0fb20330d7cdcdbd9733e5c757a607a385b Author: Hermès Bélusca-Maïto hermes.belusca-maito@reactos.org AuthorDate: Sun Sep 3 20:05:11 2017 +0000 Commit: Hermès Bélusca-Maïto hermes.belusca-maito@reactos.org CommitDate: Sun Oct 28 00:58:46 2018 +0200
[SETUPLIB][USETUP] Use NT RTL String Safe functions instead of Win32-oriented ones (and remove usage of HRESULT too).
Based on: svn path=/branches/setup_improvements/; revision=75755 svn path=/branches/setup_improvements/; revision=75757 --- base/setup/lib/bootsup.c | 6 +++--- base/setup/lib/mui.c | 6 +++--- base/setup/lib/registry.c | 7 ++----- base/setup/lib/settings.c | 26 ++++++++++++++------------ base/setup/lib/setuplib.c | 34 ++++++++++++++++++++-------------- base/setup/lib/utils/arcname_tests.c | 2 -- base/setup/lib/utils/genlist.c | 14 ++++++-------- base/setup/lib/utils/regutil.c | 12 ++++++------ base/setup/usetup/usetup.c | 31 ++++++++++++++----------------- base/setup/usetup/usetup.h | 1 + 10 files changed, 69 insertions(+), 70 deletions(-)
diff --git a/base/setup/lib/bootsup.c b/base/setup/lib/bootsup.c index 0ef4e8241e..2f7b43fee3 100644 --- a/base/setup/lib/bootsup.c +++ b/base/setup/lib/bootsup.c @@ -883,9 +883,9 @@ InstallMbrBootCodeToDisk(
#if 0 WCHAR DestinationDevicePathBuffer[MAX_PATH]; - StringCchPrintfW(DestinationDevicePathBuffer, ARRAYSIZE(DestinationDevicePathBuffer), - L"\Device\Harddisk%d\Partition0", - DiskNumber); + RtlStringCchPrintfW(DestinationDevicePathBuffer, ARRAYSIZE(DestinationDevicePathBuffer), + L"\Device\Harddisk%d\Partition0", + DiskNumber); #endif
CombinePaths(SourceMbrPathBuffer, ARRAYSIZE(SourceMbrPathBuffer), 2, diff --git a/base/setup/lib/mui.c b/base/setup/lib/mui.c index 1e7eb9def8..27b85b46b9 100644 --- a/base/setup/lib/mui.c +++ b/base/setup/lib/mui.c @@ -298,10 +298,10 @@ AddKbLayoutsToRegistry( { if (uIndex > 19) break;
- swprintf(szValueName, L"%u", uIndex + 1); + RtlStringCchPrintfW(szValueName, ARRAYSIZE(szValueName), L"%u", uIndex + 1); RtlInitUnicodeString(&ValueName, szValueName);
- swprintf(szLangID, L"0000%s", MuiLayouts[uIndex].LangID); + RtlStringCchPrintfW(szLangID, ARRAYSIZE(szLangID), L"0000%s", MuiLayouts[uIndex].LangID);
if (_wcsicmp(szLangID, MuiLayouts[uIndex].LayoutID) == 0) { @@ -321,7 +321,7 @@ AddKbLayoutsToRegistry( } else { - swprintf(szLangID, L"d%03lu%s", uCount, MuiLayouts[uIndex].LangID); + RtlStringCchPrintfW(szLangID, ARRAYSIZE(szLangID), L"d%03lu%s", uCount, MuiLayouts[uIndex].LangID); Status = NtSetValueKey(KeyHandle, &ValueName, 0, diff --git a/base/setup/lib/registry.c b/base/setup/lib/registry.c index e36e6a7c76..54655f5108 100644 --- a/base/setup/lib/registry.c +++ b/base/setup/lib/registry.c @@ -34,9 +34,6 @@
#include "registry.h"
-// HACK! -#include <strsafe.h> - #define NDEBUG #include <debug.h>
@@ -1098,8 +1095,8 @@ RegCleanupRegistry(
CombinePaths(SrcPath, ARRAYSIZE(SrcPath), 3, InstallPath->Buffer, L"System32\config", RegistryHives[i].HiveName); - StringCchCopyW(DstPath, ARRAYSIZE(DstPath), SrcPath); - StringCchCatW(DstPath, ARRAYSIZE(DstPath), L".sav"); + RtlStringCchCopyW(DstPath, ARRAYSIZE(DstPath), SrcPath); + RtlStringCchCatW(DstPath, ARRAYSIZE(DstPath), L".sav");
DPRINT1("Copy hive: %S ==> %S\n", SrcPath, DstPath); Status = SetupCopyFile(SrcPath, DstPath, FALSE); diff --git a/base/setup/lib/settings.c b/base/setup/lib/settings.c index 4e27d0300f..060c671b41 100644 --- a/base/setup/lib/settings.c +++ b/base/setup/lib/settings.c @@ -422,7 +422,7 @@ DefaultProcessEntry( }
wcscpy((PWCHAR)*UserData, KeyName); - wcscpy(DisplayText, KeyValue); + RtlStringCbCopyW(DisplayText, DisplayTextSize, KeyValue);
*Current = (CompareKey ? !_wcsicmp(KeyName, CompareKey) : FALSE);
@@ -483,7 +483,7 @@ CreateComputerTypeList( }
DPRINT("Computer key: %S\n", KeyName); - wcscpy(ComputerKey, KeyName); + RtlStringCchCopyW(ComputerKey, ARRAYSIZE(ComputerKey), KeyName); INF_FreeData(KeyName); } while (SetupFindNextLine(&Context, &Context));
@@ -548,7 +548,7 @@ GetDisplayIdentifier( BusInstance = 0; while (TRUE) { - swprintf(Buffer, L"%lu", BusInstance); + RtlStringCchPrintfW(Buffer, ARRAYSIZE(Buffer), L"%lu", BusInstance); RtlInitUnicodeString(&KeyName, Buffer); InitializeObjectAttributes(&ObjectAttributes, &KeyName, @@ -584,7 +584,7 @@ GetDisplayIdentifier( while (TRUE) { /* Open the pointer controller instance key */ - swprintf(Buffer, L"%lu", ControllerInstance); + RtlStringCchPrintfW(Buffer, ARRAYSIZE(Buffer), L"%lu", ControllerInstance); RtlInitUnicodeString(&KeyName, Buffer); InitializeObjectAttributes(&ObjectAttributes, &KeyName, @@ -719,7 +719,7 @@ CreateDisplayDriverList( }
DPRINT("Display key: %S\n", KeyName); - wcscpy(DisplayKey, KeyName); + RtlStringCchCopyW(DisplayKey, ARRAYSIZE(DisplayKey), KeyName); INF_FreeData(KeyName); } while (SetupFindNextLine(&Context, &Context));
@@ -764,8 +764,8 @@ ProcessComputerFiles( return FALSE; }
- wcscpy(SectionName, L"Files."); - wcscat(SectionName, (const wchar_t*)GetListEntryUserData(Entry)); + RtlStringCchPrintfW(SectionName, ARRAYSIZE(SectionName), + L"Files.%s", (PCWSTR)GetListEntryUserData(Entry)); *AdditionalSectionName = SectionName;
return TRUE; @@ -813,7 +813,9 @@ ProcessDisplayRegistry( ASSERT(wcslen(ServiceName) < 10); DPRINT1("Service name: '%S'\n", ServiceName);
- swprintf(RegPath, L"System\CurrentControlSet\Services\%s", ServiceName); + RtlStringCchPrintfW(RegPath, ARRAYSIZE(RegPath), + L"System\CurrentControlSet\Services\%s", + ServiceName); RtlInitUnicodeString(&KeyName, RegPath); InitializeObjectAttributes(&ObjectAttributes, &KeyName, @@ -850,9 +852,9 @@ ProcessDisplayRegistry( return FALSE; }
- swprintf(RegPath, - L"System\CurrentControlSet\Hardware Profiles\Current\System\CurrentControlSet\Services\%s\Device0", - ServiceName); + RtlStringCchPrintfW(RegPath, ARRAYSIZE(RegPath), + L"System\CurrentControlSet\Hardware Profiles\Current\System\CurrentControlSet\Services\%s\Device0", + ServiceName); DPRINT1("RegPath: '%S'\n", RegPath); RtlInitUnicodeString(&KeyName, RegPath); InitializeObjectAttributes(&ObjectAttributes, @@ -1110,7 +1112,7 @@ ProcessLangEntry( }
wcscpy((PWCHAR)*UserData, KeyName); - wcscpy(DisplayText, KeyValue); + RtlStringCbCopyW(DisplayText, DisplayTextSize, KeyValue);
*Current = FALSE;
diff --git a/base/setup/lib/setuplib.c b/base/setup/lib/setuplib.c index c5a8a6f981..38d5b58f1f 100644 --- a/base/setup/lib/setuplib.c +++ b/base/setup/lib/setuplib.c @@ -16,9 +16,6 @@
#include "setuplib.h"
-// HACK! -#include <strsafe.h> - #define NDEBUG #include <debug.h>
@@ -147,7 +144,11 @@ CheckUnattendedSetup( DPRINT("INF_GetData() failed for key 'InstallationDirectory'\n"); goto Quit; } - wcscpy(pSetupData->InstallationDirectory, Value); + + RtlStringCchCopyW(pSetupData->InstallationDirectory, + ARRAYSIZE(pSetupData->InstallationDirectory), + Value); + INF_FreeData(Value); }
@@ -189,7 +190,9 @@ CheckUnattendedSetup( if (INF_GetData(&Context, NULL, &Value)) { LONG Id = wcstol(Value, NULL, 16); - swprintf(pSetupData->LocaleID, L"%08lx", Id); + RtlStringCchPrintfW(pSetupData->LocaleID, + ARRAYSIZE(pSetupData->LocaleID), + L"%08lx", Id); INF_FreeData(Value); } } @@ -233,8 +236,8 @@ InstallSetupInfFile( if (IniSection) { /* Key "skipmissingfiles" */ - // StringCchPrintfW(PathBuffer, ARRAYSIZE(PathBuffer), - // L""%s"", L"WinNt5.2"); + // RtlStringCchPrintfW(PathBuffer, ARRAYSIZE(PathBuffer), + // L""%s"", L"WinNt5.2"); // IniCacheInsertKey(IniSection, NULL, INSERT_LAST, // L"Version", PathBuffer); } @@ -242,20 +245,20 @@ InstallSetupInfFile( IniSection = IniCacheAppendSection(IniCache, L"Data"); if (IniSection) { - StringCchPrintfW(PathBuffer, ARRAYSIZE(PathBuffer), - L""%s"", IsUnattendedSetup ? L"yes" : L"no"); + RtlStringCchPrintfW(PathBuffer, ARRAYSIZE(PathBuffer), + L""%s"", IsUnattendedSetup ? L"yes" : L"no"); IniCacheInsertKey(IniSection, NULL, INSERT_LAST, L"UnattendedInstall", PathBuffer);
// "floppylessbootpath" (yes/no)
- StringCchPrintfW(PathBuffer, ARRAYSIZE(PathBuffer), - L""%s"", L"winnt"); + RtlStringCchPrintfW(PathBuffer, ARRAYSIZE(PathBuffer), + L""%s"", L"winnt"); IniCacheInsertKey(IniSection, NULL, INSERT_LAST, L"ProductType", PathBuffer);
- StringCchPrintfW(PathBuffer, ARRAYSIZE(PathBuffer), - L""%s\"", pSetupData->SourceRootPath.Buffer); + RtlStringCchPrintfW(PathBuffer, ARRAYSIZE(PathBuffer), + L""%s\"", pSetupData->SourceRootPath.Buffer); IniCacheInsertKey(IniSection, NULL, INSERT_LAST, L"SourcePath", PathBuffer);
@@ -561,7 +564,10 @@ LoadSetupInf( if (!INF_GetData(&Context, NULL, &Value)) return ERROR_CORRUPT_TXTSETUPSIF;
- wcscpy(pSetupData->InstallationDirectory, Value); + RtlStringCchCopyW(pSetupData->InstallationDirectory, + ARRAYSIZE(pSetupData->InstallationDirectory), + Value); + INF_FreeData(Value); }
diff --git a/base/setup/lib/utils/arcname_tests.c b/base/setup/lib/utils/arcname_tests.c index deba131552..4f86546a8b 100644 --- a/base/setup/lib/utils/arcname_tests.c +++ b/base/setup/lib/utils/arcname_tests.c @@ -20,8 +20,6 @@
#include <ntstatus.h>
-#include <strsafe.h> - #include "arcname.h"
#define OBJ_NAME_PATH_SEPARATOR ((WCHAR)L'\') diff --git a/base/setup/lib/utils/genlist.c b/base/setup/lib/utils/genlist.c index 919b5243cc..209da60058 100644 --- a/base/setup/lib/utils/genlist.c +++ b/base/setup/lib/utils/genlist.c @@ -21,9 +21,7 @@ CreateGenericList(VOID) { PGENERIC_LIST List;
- List = (PGENERIC_LIST)RtlAllocateHeap(ProcessHeap, - 0, - sizeof(GENERIC_LIST)); + List = RtlAllocateHeap(ProcessHeap, 0, sizeof(GENERIC_LIST)); if (List == NULL) return NULL;
@@ -70,15 +68,15 @@ AppendGenericListEntry( IN BOOLEAN Current) { PGENERIC_LIST_ENTRY Entry; + SIZE_T TextSize;
- Entry = (PGENERIC_LIST_ENTRY)RtlAllocateHeap(ProcessHeap, - 0, - sizeof(GENERIC_LIST_ENTRY) + - (wcslen(Text) + 1) * sizeof(WCHAR)); + TextSize = (wcslen(Text) + 1) * sizeof(WCHAR); + Entry = RtlAllocateHeap(ProcessHeap, 0, + sizeof(GENERIC_LIST_ENTRY) + TextSize); if (Entry == NULL) return FALSE;
- wcscpy(Entry->Text, Text); + RtlStringCbCopyW(Entry->Text, TextSize, Text); Entry->List = List; Entry->UserData = UserData;
diff --git a/base/setup/lib/utils/regutil.c b/base/setup/lib/utils/regutil.c index 2ede224164..54bc7c260d 100644 --- a/base/setup/lib/utils/regutil.c +++ b/base/setup/lib/utils/regutil.c @@ -13,9 +13,6 @@
#include "regutil.h"
-// HACK! -#include <strsafe.h> - #define NDEBUG #include <debug.h>
@@ -180,7 +177,8 @@ CreateRegistryFile(
// i = 1; /* Try first by just appending the '.old' extension */ - StringCchPrintfW(PathBuffer2, ARRAYSIZE(PathBuffer2), L"%s.%s", PathBuffer, Extension); + RtlStringCchPrintfW(PathBuffer2, ARRAYSIZE(PathBuffer2), + L"%s.%s", PathBuffer, Extension); #if 0 while (DoesFileExist(NULL, PathBuffer2)) { @@ -188,7 +186,8 @@ CreateRegistryFile( if (i <= 0xFFFF) { /* Append '_N.old' extension */ - StringCchPrintfW(PathBuffer2, ARRAYSIZE(PathBuffer2), L"%s_%lu.%s", PathBuffer, i, Extension); + RtlStringCchPrintfW(PathBuffer2, ARRAYSIZE(PathBuffer2), + L"%s_%lu.%s", PathBuffer, i, Extension); ++i; } else @@ -197,7 +196,8 @@ CreateRegistryFile( * Too many old files exist, we will rename the file * using the name of the oldest one. */ - StringCchPrintfW(PathBuffer2, ARRAYSIZE(PathBuffer2), L"%s.%s", PathBuffer, Extension); + RtlStringCchPrintfW(PathBuffer2, ARRAYSIZE(PathBuffer2), + L"%s.%s", PathBuffer, Extension); break; } } diff --git a/base/setup/usetup/usetup.c b/base/setup/usetup/usetup.c index 9106d0dcab..b9ba8eea2f 100644 --- a/base/setup/usetup/usetup.c +++ b/base/setup/usetup/usetup.c @@ -36,9 +36,6 @@ #define NDEBUG #include <debug.h>
-// HACK! -#include <strsafe.h> -
/* GLOBALS & LOCALS *********************************************************/
@@ -1679,7 +1676,7 @@ SelectPartitionPage(PINPUT_RECORD Ir) return SELECT_PARTITION_PAGE; }
- StringCchPrintfW(PathBuffer, ARRAYSIZE(PathBuffer), + RtlStringCchPrintfW(PathBuffer, ARRAYSIZE(PathBuffer), L"\Device\Harddisk%lu\Partition%lu\", PartitionList->CurrentDisk->DiskNumber, PartitionList->CurrentPartition->PartitionNumber); @@ -3007,7 +3004,7 @@ FormatPartitionPage(PINPUT_RECORD Ir) }
/* Set PartitionRootPath */ - StringCchPrintfW(PathBuffer, ARRAYSIZE(PathBuffer), + RtlStringCchPrintfW(PathBuffer, ARRAYSIZE(PathBuffer), L"\Device\Harddisk%lu\Partition%lu", DiskEntry->DiskNumber, PartEntry->PartitionNumber); @@ -3080,7 +3077,7 @@ CheckFileSystemPage(PINPUT_RECORD Ir) }
/* Set PartitionRootPath */ - StringCchPrintfW(PathBuffer, ARRAYSIZE(PathBuffer), + RtlStringCchPrintfW(PathBuffer, ARRAYSIZE(PathBuffer), L"\Device\Harddisk%lu\Partition%lu", DiskEntry->DiskNumber, PartEntry->PartitionNumber); @@ -3171,7 +3168,7 @@ BuildInstallPaths(PWSTR InstallDir,
/* Create 'USetupData.DestinationRootPath' string */ RtlFreeUnicodeString(&USetupData.DestinationRootPath); - StringCchPrintfW(PathBuffer, ARRAYSIZE(PathBuffer), + RtlStringCchPrintfW(PathBuffer, ARRAYSIZE(PathBuffer), L"\Device\Harddisk%lu\Partition%lu\", DiskEntry->DiskNumber, PartEntry->PartitionNumber); @@ -3188,7 +3185,7 @@ BuildInstallPaths(PWSTR InstallDir, /** Equivalent of 'NTOS_INSTALLATION::SystemArcPath' **/ /* Create 'USetupData.DestinationArcPath' */ RtlFreeUnicodeString(&USetupData.DestinationArcPath); - StringCchPrintfW(PathBuffer, ARRAYSIZE(PathBuffer), + RtlStringCchPrintfW(PathBuffer, ARRAYSIZE(PathBuffer), L"multi(0)disk(0)rdisk(%lu)partition(%lu)\", DiskEntry->BiosDiskNumber, PartEntry->PartitionNumber); @@ -3598,8 +3595,8 @@ AddSectionToCopyQueue(HINF InfFile, /* Installation path */ DPRINT("InstallationPath: '%S'\n", DirKeyValue);
- StringCchCopyW(CompleteOrigDirName, ARRAYSIZE(CompleteOrigDirName), - USetupData.SourceRootDir.Buffer); + RtlStringCchCopyW(CompleteOrigDirName, ARRAYSIZE(CompleteOrigDirName), + USetupData.SourceRootDir.Buffer);
DPRINT("InstallationPath(2): '%S'\n", CompleteOrigDirName); } @@ -3608,8 +3605,8 @@ AddSectionToCopyQueue(HINF InfFile, /* Absolute path */ DPRINT("AbsolutePath: '%S'\n", DirKeyValue);
- StringCchCopyW(CompleteOrigDirName, ARRAYSIZE(CompleteOrigDirName), - DirKeyValue); + RtlStringCchCopyW(CompleteOrigDirName, ARRAYSIZE(CompleteOrigDirName), + DirKeyValue);
DPRINT("AbsolutePath(2): '%S'\n", CompleteOrigDirName); } @@ -3684,7 +3681,7 @@ PrepareCopyPageInfFile(HINF InfFile, */
/* Get destination path */ - StringCchCopyW(PathBuffer, ARRAYSIZE(PathBuffer), USetupData.DestinationPath.Buffer); + RtlStringCchCopyW(PathBuffer, ARRAYSIZE(PathBuffer), USetupData.DestinationPath.Buffer);
DPRINT("FullPath(1): '%S'\n", PathBuffer);
@@ -3726,8 +3723,8 @@ PrepareCopyPageInfFile(HINF InfFile, /* Installation path */ DPRINT("InstallationPath: '%S'\n", DirKeyValue);
- StringCchCopyW(PathBuffer, ARRAYSIZE(PathBuffer), - USetupData.DestinationPath.Buffer); + RtlStringCchCopyW(PathBuffer, ARRAYSIZE(PathBuffer), + USetupData.DestinationPath.Buffer);
DPRINT("InstallationPath(2): '%S'\n", PathBuffer); } @@ -4321,7 +4318,7 @@ BootLoaderPage(PINPUT_RECORD Ir) CONSOLE_SetStatusText(MUIGetString(STRING_PLEASEWAIT));
RtlFreeUnicodeString(&USetupData.SystemRootPath); - StringCchPrintfW(PathBuffer, ARRAYSIZE(PathBuffer), + RtlStringCchPrintfW(PathBuffer, ARRAYSIZE(PathBuffer), L"\Device\Harddisk%lu\Partition%lu\", PartitionList->SystemPartition->DiskEntry->DiskNumber, PartitionList->SystemPartition->PartitionNumber); @@ -4620,7 +4617,7 @@ BootLoaderHarddiskMbrPage(PINPUT_RECORD Ir) }
/* Step 2: Write the MBR */ - StringCchPrintfW(DestinationDevicePathBuffer, ARRAYSIZE(DestinationDevicePathBuffer), + RtlStringCchPrintfW(DestinationDevicePathBuffer, ARRAYSIZE(DestinationDevicePathBuffer), L"\Device\Harddisk%d\Partition0", PartitionList->SystemPartition->DiskEntry->DiskNumber); Status = InstallMbrBootCodeToDisk(&USetupData.SystemRootPath, diff --git a/base/setup/usetup/usetup.h b/base/setup/usetup/usetup.h index 2bbb879c54..61971f1432 100644 --- a/base/setup/usetup/usetup.h +++ b/base/setup/usetup/usetup.h @@ -52,6 +52,7 @@
#include <ntstrsafe.h>
+ /* Setup library headers */ #include <reactos/rosioctl.h> #include <../lib/setuplib.h>