Author: hbelusca
Date: Sun Oct 7 14:16:13 2012
New Revision: 57514
URL:
http://svn.reactos.org/svn/reactos?rev=57514&view=rev
Log:
[NTOSKRNL]
In NtQuerySystemEnvironmentValue :
- Use a fixed-length buffer size for holding a temporary variable.
- Correct the pool TAG.
Modified:
trunk/reactos/ntoskrnl/ex/sysinfo.c
Modified: trunk/reactos/ntoskrnl/ex/sysinfo.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/ex/sysinfo.c?rev=…
==============================================================================
--- trunk/reactos/ntoskrnl/ex/sysinfo.c [iso-8859-1] (original)
+++ trunk/reactos/ntoskrnl/ex/sysinfo.c [iso-8859-1] Sun Oct 7 14:16:13 2012
@@ -13,6 +13,9 @@
#include <ntoskrnl.h>
#define NDEBUG
#include <debug.h>
+
+/* The maximum size of an environment value (in bytes) */
+#define MAX_ENVVAL_SIZE 1024
FAST_MUTEX ExpEnvironmentLock;
ERESOURCE ExpFirmwareTableResource;
@@ -246,10 +249,7 @@
/* Copy the name to kernel space if necessary */
Status = ProbeAndCaptureUnicodeString(&WName, PreviousMode, VariableName);
- if (!NT_SUCCESS(Status))
- {
- return Status;
- }
+ if (!NT_SUCCESS(Status)) return Status;
/* Convert the name to ANSI and release the captured UNICODE string */
Status = RtlUnicodeStringToAnsiString(&AName, &WName, TRUE);
@@ -257,7 +257,7 @@
if (!NT_SUCCESS(Status)) return Status;
/* Allocate a buffer for the ANSI environment variable */
- AnsiValueBuffer = ExAllocatePoolWithTag(NonPagedPool, ValueBufferLength,
'pmeT');
+ AnsiValueBuffer = ExAllocatePoolWithTag(NonPagedPool, MAX_ENVVAL_SIZE,
'rvnE');
if (AnsiValueBuffer == NULL)
{
RtlFreeAnsiString(&AName);
@@ -266,7 +266,7 @@
/* Get the environment variable and free the ANSI name */
Result = HalGetEnvironmentVariable(AName.Buffer,
- (USHORT)ValueBufferLength,
+ MAX_ENVVAL_SIZE,
AnsiValueBuffer);
RtlFreeAnsiString(&AName);
@@ -286,9 +286,7 @@
Status = RtlAnsiStringToUnicodeString(&WValue, &AValue, FALSE);
if (ReturnLength != NULL)
- {
*ReturnLength = WValue.Length;
- }
}
_SEH2_EXCEPT(ExSystemExceptionFilter())
{
@@ -302,7 +300,7 @@
}
/* Free the allocated ANSI value buffer */
- ExFreePoolWithTag(AnsiValueBuffer, 'pmeT');
+ ExFreePoolWithTag(AnsiValueBuffer, 'rvnE');
return Status;
}