mirror of
https://github.com/reactos/reactos.git
synced 2024-08-05 11:00:55 +00:00
bug 1346 : patch from w3seek : Support SE_FILE_OBJECT in GetNamedSecurityInfo
svn path=/trunk/; revision=21670
This commit is contained in:
parent
f913f2a8f4
commit
836aa765da
|
@ -437,6 +437,7 @@ AccpOpenNamedObject(LPWSTR pObjectName,
|
||||||
BOOL Write)
|
BOOL Write)
|
||||||
{
|
{
|
||||||
LPWSTR lpPath;
|
LPWSTR lpPath;
|
||||||
|
NTSTATUS Status;
|
||||||
ACCESS_MASK DesiredAccess = (ACCESS_MASK)0;
|
ACCESS_MASK DesiredAccess = (ACCESS_MASK)0;
|
||||||
DWORD Ret = ERROR_SUCCESS;
|
DWORD Ret = ERROR_SUCCESS;
|
||||||
|
|
||||||
|
@ -496,6 +497,45 @@ AccpOpenNamedObject(LPWSTR pObjectName,
|
||||||
/* open a handle to the path depending on the object type */
|
/* open a handle to the path depending on the object type */
|
||||||
switch (ObjectType)
|
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:
|
case SE_REGISTRY_KEY:
|
||||||
{
|
{
|
||||||
static const struct
|
static const struct
|
||||||
|
@ -679,6 +719,9 @@ AccpCloseObjectHandle(SE_OBJECT_TYPE ObjectType,
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case SE_FILE_OBJECT:
|
case SE_FILE_OBJECT:
|
||||||
|
NtClose(Handle);
|
||||||
|
break;
|
||||||
|
|
||||||
case SE_KERNEL_OBJECT:
|
case SE_KERNEL_OBJECT:
|
||||||
case SE_WINDOW_OBJECT:
|
case SE_WINDOW_OBJECT:
|
||||||
CloseHandle(Handle);
|
CloseHandle(Handle);
|
||||||
|
|
Loading…
Reference in a new issue