[KMTESTS:OB]
[reactos.git] / rostests / kmtests / ntos_fsrtl / FsRtlTunnel.c
index 1097807..1afe176 100644 (file)
@@ -33,9 +33,16 @@ PUNICODE_STRING CopyUS(PUNICODE_STRING a)
     ok(b != NULL, "US is NULL after allocated memory\n");
     b->Length = 0;
     b->MaximumLength =a->MaximumLength;
-    b->Buffer = (PWSTR)ExAllocatePoolWithTag(PagedPool, b->MaximumLength, 1633);
-    ok(b->Buffer != NULL, "US->Buffer is NULL after allocated memory\n");
-    RtlCopyUnicodeString(b, a);
+    if (b->MaximumLength)
+    {
+        b->Buffer = (PWSTR)ExAllocatePoolWithTag(PagedPool, b->MaximumLength, 1633);
+        ok(b->Buffer != NULL, "US->Buffer is NULL after allocated memory\n");
+        RtlCopyUnicodeString(b, a);
+    }
+    else
+    {
+        b->Buffer = NULL;
+    }
     return b;
 }
 
@@ -90,6 +97,13 @@ void TestFsRtlAddToTunnelCache(ULONGLONG DirectoryKey, PUNICODE_STRING s_name, P
     ok (b == 0, "long name after call FsRtlAddToTunnelCache != long name befo call FsRtlAddToTunnelCache\n\n");
     b = RtlCompareUnicodeString(s_name, bs_name, TRUE);
     ok (b == 0, "short name after call FsRtlAddToTunnelCache != short name befo call FsRtlAddToTunnelCache\n\n");
+
+    if (bs_name->Buffer) ExFreePool(bs_name->Buffer);
+    ExFreePool(bs_name);
+    if (bl_name->Buffer) ExFreePool(bl_name->Buffer);
+    ExFreePool(bl_name);
+    ExFreePool(Bufb);
+    ExFreePool(Buf);
 }
 
 BOOLEAN TestFsRtlFindInTunnelCache(ULONG DirectoryKey, PUNICODE_STRING name, PUNICODE_STRING s_name, PUNICODE_STRING l_name)
@@ -147,6 +161,7 @@ START_TEST(FsRtlTunnel)
     TestFsRtlAddToTunnelCache(12345, s_name, l_name, TRUE);
     TestFsRtlAddToTunnelCache(12347, s_name, l_name, TRUE);
     a = (PUNICODE_STRING)ExAllocatePool(PagedPool,sizeof(UNICODE_STRING));
+    RtlInitUnicodeString(a, NULL);
     TestFsRtlAddToTunnelCache(12346, a, l_name, FALSE);
 
     //Clear all
@@ -160,4 +175,12 @@ START_TEST(FsRtlTunnel)
 
     is = TestFsRtlFindInTunnelCache(12347, name, s_name, l_name);
     ok(is == FALSE, "FsRtlDeleteTunnelCache dosn't clear cash\n");
+
+    ExFreePool(a);
+    ExFreePool(name);
+    ExFreePool(l_name);
+    ExFreePool(s_name);
+
+    ExFreePool(Tb);
+    ExFreePool(T);
 }