Author: fireball
Date: Thu May 29 11:00:20 2008
New Revision: 33758
URL:
http://svn.reactos.org/svn/reactos?rev=33758&view=rev
Log:
Stefan Ginsberg <stefan__100__(a)hotmail.com>
- Remove usage of unexported RtlDuplicateUnicodeString in green.sys driver (this is
basically the same fix which Herve applied to blue.sys).
Modified:
trunk/rosapps/drivers/green/green.c
trunk/rosapps/drivers/green/green.h
trunk/rosapps/drivers/green/pnp.c
Modified: trunk/rosapps/drivers/green/green.c
URL:
http://svn.reactos.org/svn/reactos/trunk/rosapps/drivers/green/green.c?rev=…
==============================================================================
--- trunk/rosapps/drivers/green/green.c [iso-8859-1] (original)
+++ trunk/rosapps/drivers/green/green.c [iso-8859-1] Thu May 29 11:00:20 2008
@@ -41,13 +41,13 @@
}
RtlZeroMemory(DriverExtension, sizeof(GREEN_DRIVER_EXTENSION));
- Status = RtlDuplicateUnicodeString(
+ Status = GreenDuplicateUnicodeString(
0,
RegistryPath,
&DriverExtension->RegistryPath);
if (!NT_SUCCESS(Status))
{
- DPRINT("RtlDuplicateUnicodeString() failed with status 0x%08lx\n", Status);
+ DPRINT("GreenDuplicateUnicodeString() failed with status 0x%08lx\n",
Status);
return Status;
}
@@ -66,3 +66,48 @@
return STATUS_SUCCESS;
}
+
+NTSTATUS
+GreenDuplicateUnicodeString(
+ IN ULONG Flags,
+ IN PCUNICODE_STRING SourceString,
+ OUT PUNICODE_STRING DestinationString)
+{
+ if (SourceString == NULL || DestinationString == NULL
+ || SourceString->Length > SourceString->MaximumLength
+ || (SourceString->Length == 0 && SourceString->MaximumLength > 0
&& SourceString->Buffer == NULL)
+ || Flags == RTL_DUPLICATE_UNICODE_STRING_ALLOCATE_NULL_STRING || Flags >= 4)
+ {
+ return STATUS_INVALID_PARAMETER;
+ }
+
+
+ if ((SourceString->Length == 0)
+ && (Flags != (RTL_DUPLICATE_UNICODE_STRING_NULL_TERMINATE |
+ RTL_DUPLICATE_UNICODE_STRING_ALLOCATE_NULL_STRING)))
+ {
+ DestinationString->Length = 0;
+ DestinationString->MaximumLength = 0;
+ DestinationString->Buffer = NULL;
+ }
+ else
+ {
+ USHORT DestMaxLength = SourceString->Length;
+
+ if (Flags & RTL_DUPLICATE_UNICODE_STRING_NULL_TERMINATE)
+ DestMaxLength += sizeof(UNICODE_NULL);
+
+ DestinationString->Buffer = ExAllocatePool(PagedPool, DestMaxLength);
+ if (DestinationString->Buffer == NULL)
+ return STATUS_NO_MEMORY;
+
+ RtlCopyMemory(DestinationString->Buffer, SourceString->Buffer,
SourceString->Length);
+ DestinationString->Length = SourceString->Length;
+ DestinationString->MaximumLength = DestMaxLength;
+
+ if (Flags & RTL_DUPLICATE_UNICODE_STRING_NULL_TERMINATE)
+ DestinationString->Buffer[DestinationString->Length / sizeof(WCHAR)] =
0;
+ }
+
+ return STATUS_SUCCESS;
+}
Modified: trunk/rosapps/drivers/green/green.h
URL:
http://svn.reactos.org/svn/reactos/trunk/rosapps/drivers/green/green.h?rev=…
==============================================================================
--- trunk/rosapps/drivers/green/green.h [iso-8859-1] (original)
+++ trunk/rosapps/drivers/green/green.h [iso-8859-1] Thu May 29 11:00:20 2008
@@ -9,15 +9,8 @@
#include <wincon.h>
#include <drivers/blue/ntddblue.h>
-NTSYSAPI
-NTSTATUS
-NTAPI
-RtlDuplicateUnicodeString(
- IN ULONG Flags,
- IN PCUNICODE_STRING SourceString,
- OUT PUNICODE_STRING DestinationString
-);
#define RTL_DUPLICATE_UNICODE_STRING_NULL_TERMINATE 1
+#define RTL_DUPLICATE_UNICODE_STRING_ALLOCATE_NULL_STRING 2
#define INFINITE -1
#define KEYBOARD_BUFFER_SIZE 100
@@ -190,3 +183,11 @@
ScreenDeviceControl(
IN PDEVICE_OBJECT DeviceObject,
IN PIRP Irp);
+
+/************************************ green.c */
+
+NTSTATUS
+GreenDuplicateUnicodeString(
+ IN ULONG Flags,
+ IN PCUNICODE_STRING SourceString,
+ OUT PUNICODE_STRING DestinationString);
Modified: trunk/rosapps/drivers/green/pnp.c
URL:
http://svn.reactos.org/svn/reactos/trunk/rosapps/drivers/green/pnp.c?rev=33…
==============================================================================
--- trunk/rosapps/drivers/green/pnp.c [iso-8859-1] (original)
+++ trunk/rosapps/drivers/green/pnp.c [iso-8859-1] Thu May 29 11:00:20 2008
@@ -343,7 +343,7 @@
{
UNICODE_STRING SourceU, String;
RtlInitUnicodeString(&SourceU, Source);
- Status = RtlDuplicateUnicodeString(
+ Status = GreenDuplicateUnicodeString(
RTL_DUPLICATE_UNICODE_STRING_NULL_TERMINATE,
&SourceU,
&String);
@@ -377,7 +377,7 @@
if (SourceU.Length)
{
UNICODE_STRING String;
- Status = RtlDuplicateUnicodeString(
+ Status = GreenDuplicateUnicodeString(
RTL_DUPLICATE_UNICODE_STRING_NULL_TERMINATE,
&SourceU,
&String);
@@ -560,3 +560,4 @@
return Status;
}
+