From c9313c9b836cd6a532ea56727dee8d611aec950c Mon Sep 17 00:00:00 2001 From: Eric Kohl Date: Wed, 3 Sep 2003 15:12:16 +0000 Subject: [PATCH] Fixed bugs in NtQuerySymbolicLinkObject(): - fixed returned length and status svn path=/trunk/; revision=5966 --- reactos/ntoskrnl/ob/symlink.c | 22 ++++++++++++++++------ 1 file changed, 16 insertions(+), 6 deletions(-) diff --git a/reactos/ntoskrnl/ob/symlink.c b/reactos/ntoskrnl/ob/symlink.c index 8ca18e74a3a..5dd49f21566 100644 --- a/reactos/ntoskrnl/ob/symlink.c +++ b/reactos/ntoskrnl/ob/symlink.c @@ -1,4 +1,4 @@ -/* $Id: symlink.c,v 1.2 2003/06/07 12:23:14 chorns Exp $ +/* $Id: symlink.c,v 1.3 2003/09/03 15:12:16 ekohl Exp $ * * COPYRIGHT: See COPYING in the top level directory * PROJECT: ReactOS kernel @@ -323,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 */