Author: hbelusca Date: Wed May 31 00:01:31 2017 New Revision: 74708
URL: http://svn.reactos.org/svn/reactos?rev=74708&view=rev Log: [NTOS]: Minor fixes: - Correctly specify the buffer size for RtlInitEmptyUnicodeString calls; - Prefer using RtlAppendUnicodeStringToString instead of RtlAppendStringToString: both actually do the very same job on counted strings, but the former doesn't need the explicit PSTRING casts, and NULL-terminate the string buffer if possible (aka. if the available remaining length permits it, otherwise it doesn't add any NULL terminator, falling back to the default behaviour of RtlAppendStringToString). - Remove a deprecated commented-out variable.
Modified: trunk/reactos/ntoskrnl/config/cmsysini.c
Modified: trunk/reactos/ntoskrnl/config/cmsysini.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/config/cmsysini.c?... ============================================================================== --- trunk/reactos/ntoskrnl/config/cmsysini.c [iso-8859-1] (original) +++ trunk/reactos/ntoskrnl/config/cmsysini.c [iso-8859-1] Wed May 31 00:01:31 2017 @@ -1179,7 +1179,7 @@
NTSTATUS NTAPI -CmpGetRegistryPath(IN PWCHAR ConfigPath) +CmpGetRegistryPath(OUT PWCHAR ConfigPath) { OBJECT_ATTRIBUTES ObjectAttributes; NTSTATUS Status; @@ -1257,7 +1257,6 @@ UNICODE_STRING TempName, FileName, RegName; ULONG i, ErrorResponse, WorkerCount, Length; USHORT FileStart; - //ULONG RegStart; ULONG PrimaryDisposition, SecondaryDisposition, ClusterSize; PCMHIVE CmHive; HANDLE PrimaryHandle = NULL, LogHandle = NULL; @@ -1273,36 +1272,35 @@ CmpMachineHiveList[i].ThreadStarted = TRUE;
/* Build the file name and registry name strings */ - RtlInitEmptyUnicodeString(&FileName, FileBuffer, MAX_PATH); - RtlInitEmptyUnicodeString(&RegName, RegBuffer, MAX_PATH); + RtlInitEmptyUnicodeString(&FileName, FileBuffer, sizeof(FileBuffer)); + RtlInitEmptyUnicodeString(&RegName, RegBuffer, sizeof(RegBuffer));
/* Now build the system root path */ CmpGetRegistryPath(ConfigPath); RtlInitUnicodeString(&TempName, ConfigPath); - RtlAppendStringToString((PSTRING)&FileName, (PSTRING)&TempName); + RtlAppendUnicodeStringToString(&FileName, &TempName); FileStart = FileName.Length;
/* And build the registry root path */ RtlInitUnicodeString(&TempName, L"\REGISTRY\"); - RtlAppendStringToString((PSTRING)&RegName, (PSTRING)&TempName); - //RegStart = RegName.Length; + RtlAppendUnicodeStringToString(&RegName, &TempName);
/* Build the base name */ RtlInitUnicodeString(&TempName, CmpMachineHiveList[i].BaseName); - RtlAppendStringToString((PSTRING)&RegName, (PSTRING)&TempName); + RtlAppendUnicodeStringToString(&RegName, &TempName);
/* Check if this is a child of the root */ - if (RegName.Buffer[RegName.Length / sizeof(WCHAR) - 1] == '\') + if (RegName.Buffer[RegName.Length / sizeof(WCHAR) - 1] == OBJ_NAME_PATH_SEPARATOR) { /* Then setup the whole name */ RtlInitUnicodeString(&TempName, CmpMachineHiveList[i].Name); - RtlAppendStringToString((PSTRING)&RegName, (PSTRING)&TempName); + RtlAppendUnicodeStringToString(&RegName, &TempName); }
/* Now add the rest of the file name */ RtlInitUnicodeString(&TempName, CmpMachineHiveList[i].Name); FileName.Length = FileStart; - RtlAppendStringToString((PSTRING)&FileName, (PSTRING)&TempName); + RtlAppendUnicodeStringToString(&FileName, &TempName); if (!CmpMachineHiveList[i].CmHive) { /* We need to allocate a new hive structure */ @@ -1426,17 +1424,17 @@ CmpNoWrite = FALSE;
/* Build the file name and registry name strings */ - RtlInitEmptyUnicodeString(&FileName, FileBuffer, MAX_PATH); - RtlInitEmptyUnicodeString(&RegName, RegBuffer, MAX_PATH); + RtlInitEmptyUnicodeString(&FileName, FileBuffer, sizeof(FileBuffer)); + RtlInitEmptyUnicodeString(&RegName, RegBuffer, sizeof(RegBuffer));
/* Now build the system root path */ CmpGetRegistryPath(ConfigPath); RtlInitUnicodeString(&TempName, ConfigPath); - RtlAppendStringToString((PSTRING)&FileName, (PSTRING)&TempName); + RtlAppendUnicodeStringToString(&FileName, &TempName);
/* And build the registry root path */ RtlInitUnicodeString(&TempName, L"\REGISTRY\"); - RtlAppendStringToString((PSTRING)&RegName, (PSTRING)&TempName); + RtlAppendUnicodeStringToString(&RegName, &TempName); RegStart = RegName.Length;
/* Setup the event to synchronize workers */ @@ -1504,14 +1502,14 @@ /* Build the base name */ RegName.Length = RegStart; RtlInitUnicodeString(&TempName, CmpMachineHiveList[i].BaseName); - RtlAppendStringToString((PSTRING)&RegName, (PSTRING)&TempName); + RtlAppendUnicodeStringToString(&RegName, &TempName);
/* Check if this is a child of the root */ - if (RegName.Buffer[RegName.Length / sizeof(WCHAR) - 1] == '\') + if (RegName.Buffer[RegName.Length / sizeof(WCHAR) - 1] == OBJ_NAME_PATH_SEPARATOR) { /* Then setup the whole name */ RtlInitUnicodeString(&TempName, CmpMachineHiveList[i].Name); - RtlAppendStringToString((PSTRING)&RegName, (PSTRING)&TempName); + RtlAppendUnicodeStringToString(&RegName, &TempName); }
/* Now link the hive to its master */