update for HEAD-2003091401
[reactos.git] / ntoskrnl / ob / symlink.c
index 83cf74f..30c6365 100644 (file)
@@ -12,7 +12,8 @@
 /* INCLUDES *****************************************************************/
 
 #include <limits.h>
-#include <ddk/ntddk.h>
+#define NTOS_MODE_KERNEL
+#include <ntos.h>
 #include <internal/ob.h>
 
 #define NDEBUG
@@ -227,7 +228,7 @@ NtCreateSymbolicLinkObject(OUT PHANDLE SymbolicLinkHandle,
         ObjectAttributes,
         DeviceName);
 
-  Status = ObCreateObject(SymbolicLinkHandle,
+  Status = ObRosCreateObject(SymbolicLinkHandle,
                          DesiredAccess,
                          ObjectAttributes,
                          ObSymbolicLinkType,
@@ -322,18 +323,28 @@ NtQuerySymbolicLinkObject(IN HANDLE LinkHandle,
                                     NULL);
   if (!NT_SUCCESS(Status))
     {
-      return(Status);
+      return Status;
     }
 
-  RtlCopyUnicodeString(LinkTarget,
-                      SymlinkObject->Target.ObjectName);
   if (ReturnedLength != NULL)
     {
-      *ReturnedLength = SymlinkObject->Target.Length;
+      *ReturnedLength = (ULONG)SymlinkObject->TargetName.Length + sizeof(WCHAR);
+    }
+
+  if (LinkTarget->MaximumLength >= SymlinkObject->TargetName.Length + sizeof(WCHAR))
+    {
+      RtlCopyUnicodeString(LinkTarget,
+                          &SymlinkObject->TargetName);
+      Status = STATUS_SUCCESS;
     }
+  else
+    {
+      Status = STATUS_BUFFER_TOO_SMALL;
+    }
+
   ObDereferenceObject(SymlinkObject);
 
-  return(STATUS_SUCCESS);
+  return Status;
 }
 
 /* EOF */