bug 1346 : patch from w3seek : Support SE_FILE_OBJECT in GetNamedSecurityInfo

svn path=/trunk/; revision=21670
This commit is contained in:
Magnus Olsen 2006-04-20 04:36:18 +00:00
parent f913f2a8f4
commit 836aa765da

View file

@ -437,6 +437,7 @@ AccpOpenNamedObject(LPWSTR pObjectName,
BOOL Write)
{
LPWSTR lpPath;
NTSTATUS Status;
ACCESS_MASK DesiredAccess = (ACCESS_MASK)0;
DWORD Ret = ERROR_SUCCESS;
@ -496,6 +497,45 @@ AccpOpenNamedObject(LPWSTR pObjectName,
/* open a handle to the path depending on the object type */
switch (ObjectType)
{
case SE_FILE_OBJECT:
{
IO_STATUS_BLOCK IoStatusBlock;
OBJECT_ATTRIBUTES ObjectAttributes;
UNICODE_STRING FileName;
if (!RtlDosPathNameToNtPathName_U(pObjectName,
&FileName,
NULL,
NULL))
{
Ret = ERROR_INVALID_NAME;
goto Cleanup;
}
InitializeObjectAttributes(&ObjectAttributes,
&FileName,
OBJ_CASE_INSENSITIVE,
NULL,
NULL);
Status = NtOpenFile(Handle,
DesiredAccess,
&ObjectAttributes,
&IoStatusBlock,
FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE,
FILE_SYNCHRONOUS_IO_NONALERT);
RtlFreeHeap(RtlGetProcessHeap(),
0,
FileName.Buffer);
if (!NT_SUCCESS(Status))
{
Ret = RtlNtStatusToDosError(Status);
}
break;
}
case SE_REGISTRY_KEY:
{
static const struct
@ -679,6 +719,9 @@ AccpCloseObjectHandle(SE_OBJECT_TYPE ObjectType,
break;
case SE_FILE_OBJECT:
NtClose(Handle);
break;
case SE_KERNEL_OBJECT:
case SE_WINDOW_OBJECT:
CloseHandle(Handle);