Author: hbelusca
Date: Thu May 26 23:17:59 2016
New Revision: 71421
URL: 
http://svn.reactos.org/svn/reactos?rev=71421&view=rev
Log:
[INCLUDES] probe.h: use ExFreePoolWithTag for releasing unicode strings capture, and fully
clear up said strings.
Modified:
    trunk/reactos/sdk/include/reactos/probe.h
Modified: trunk/reactos/sdk/include/reactos/probe.h
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/sdk/include/reactos/probe.…
==============================================================================
--- trunk/reactos/sdk/include/reactos/probe.h   [iso-8859-1] (original)
+++ trunk/reactos/sdk/include/reactos/probe.h   [iso-8859-1] Thu May 26 23:17:59 2016
@@ -53,9 +53,9 @@
 #define ProbeForReadGenericType(Ptr, Type, Default)                            \
     (((ULONG_PTR)(Ptr) + sizeof(Type) - 1 < (ULONG_PTR)(Ptr) ||                \
-        (ULONG_PTR)(Ptr) + sizeof(Type) - 1 >= (ULONG_PTR)MmUserProbeAddress) ?   \
-            ExRaiseAccessViolation(), Default :                     \
-            *(const volatile Type *)(Ptr))
+     (ULONG_PTR)(Ptr) + sizeof(Type) - 1 >= (ULONG_PTR)MmUserProbeAddress) ?   \
+         ExRaiseAccessViolation(), Default :                     \
+         *(const volatile Type *)(Ptr))
 #define ProbeForReadBoolean(Ptr) ProbeForReadGenericType(Ptr, BOOLEAN, FALSE)
 #define ProbeForReadUchar(Ptr) ProbeForReadGenericType(Ptr, UCHAR, 0)
@@ -144,7 +144,7 @@
                              IN const UNICODE_STRING *UnsafeSrc)
 {
     NTSTATUS Status = STATUS_SUCCESS;
-    WCHAR *Buffer = NULL;
+    PWCHAR Buffer = NULL;
     ASSERT(Dest != NULL);
     /* Probe the structure and buffer*/
@@ -162,9 +162,7 @@
             {
                 if (Dest->Length != 0)
                 {
-                    ProbeForRead(Dest->Buffer,
-                                 Dest->Length,
-                                 sizeof(WCHAR));
+                    ProbeForRead(Dest->Buffer, Dest->Length, sizeof(WCHAR));
                     /* Allocate space for the buffer */
                     Buffer = (PWCHAR)ExAllocatePoolWithTag(PagedPool,
@@ -186,14 +184,14 @@
                 }
                 else
                 {
-                    /* sanitize structure */
+                    /* Sanitize structure */
                     Dest->MaximumLength = 0;
                     Dest->Buffer = NULL;
                 }
             }
             else
             {
-                /* sanitize structure */
+                /* Sanitize structure */
                 Dest->Length = 0;
                 Dest->MaximumLength = 0;
             }
@@ -203,7 +201,7 @@
             /* Free allocated resources and zero the destination string */
             if (Buffer != NULL)
             {
-                ExFreePool(Buffer);
+                ExFreePoolWithTag(Buffer, 'RTSU');
             }
             Dest->Length = 0;
             Dest->MaximumLength = 0;
@@ -232,8 +230,12 @@
 {
     if(CurrentMode != KernelMode && CapturedString->Buffer != NULL)
     {
-        ExFreePool(CapturedString->Buffer);
-    }
+        ExFreePoolWithTag(CapturedString->Buffer, 'RTSU');
+    }
+
+    CapturedString->Length = 0;
+    CapturedString->MaximumLength = 0;
+    CapturedString->Buffer = NULL;
 }
 #endif /* INCLUDE_REACTOS_CAPTURE_H */