https://git.reactos.org/?p=reactos.git;a=commitdiff;h=fe6c7f05e26a3f9e3b191…
commit fe6c7f05e26a3f9e3b1915c849abc21799904ffc
Author: Pierre Schweitzer <pierre(a)reactos.org>
AuthorDate: Tue May 21 19:27:32 2019 +0200
Commit: Pierre Schweitzer <pierre(a)reactos.org>
CommitDate: Tue May 21 19:28:17 2019 +0200
[NTOSKRNL] Use the security descriptor for all the symlinks
---
ntoskrnl/ob/obname.c | 22 +++++++++++++---------
1 file changed, 13 insertions(+), 9 deletions(-)
diff --git a/ntoskrnl/ob/obname.c b/ntoskrnl/ob/obname.c
index 3a967872028..f9ccb914022 100644
--- a/ntoskrnl/ob/obname.c
+++ b/ntoskrnl/ob/obname.c
@@ -169,14 +169,13 @@ ObpCreateDosDevicesDirectory(VOID)
Status = NtCreateDirectoryObject(&Handle,
DIRECTORY_ALL_ACCESS,
&ObjectAttributes);
- RtlGetDaclSecurityDescriptor(&DosDevicesSD, &DaclPresent, &Dacl,
&DaclDefaulted);
- ExFreePoolWithTag(Dacl, 'lcaD');
- if (!NT_SUCCESS(Status)) return Status;
+ if (!NT_SUCCESS(Status))
+ goto done;
/* Create the system device map */
Status = ObpCreateDeviceMap(Handle);
if (!NT_SUCCESS(Status))
- return Status;
+ goto done;
/*********************************************\
|*** HACK until we support device mappings ***|
@@ -187,7 +186,7 @@ ObpCreateDosDevicesDirectory(VOID)
&LinkName,
OBJ_PERMANENT,
NULL,
- NULL);
+ &DosDevicesSD);
Status = NtCreateSymbolicLinkObject(&SymHandle,
SYMBOLIC_LINK_ALL_ACCESS,
&ObjectAttributes,
@@ -208,7 +207,7 @@ ObpCreateDosDevicesDirectory(VOID)
&LinkName,
OBJ_PERMANENT,
Handle,
- NULL);
+ &DosDevicesSD);
Status = NtCreateSymbolicLinkObject(&SymHandle,
SYMBOLIC_LINK_ALL_ACCESS,
&ObjectAttributes,
@@ -226,7 +225,7 @@ ObpCreateDosDevicesDirectory(VOID)
&LinkName,
OBJ_PERMANENT,
Handle,
- NULL);
+ &DosDevicesSD);
Status = NtCreateSymbolicLinkObject(&SymHandle,
SYMBOLIC_LINK_ALL_ACCESS,
&ObjectAttributes,
@@ -235,7 +234,8 @@ ObpCreateDosDevicesDirectory(VOID)
/* Close the directory handle */
NtClose(Handle);
- if (!NT_SUCCESS(Status)) return Status;
+ if (!NT_SUCCESS(Status))
+ goto done;
/*
* Initialize the \DosDevices symbolic link pointing to the global
@@ -248,13 +248,17 @@ ObpCreateDosDevicesDirectory(VOID)
&LinkName,
OBJ_PERMANENT,
NULL,
- NULL);
+ &DosDevicesSD);
Status = NtCreateSymbolicLinkObject(&SymHandle,
SYMBOLIC_LINK_ALL_ACCESS,
&ObjectAttributes,
&RootName);
if (NT_SUCCESS(Status)) NtClose(SymHandle);
+done:
+ RtlGetDaclSecurityDescriptor(&DosDevicesSD, &DaclPresent, &Dacl,
&DaclDefaulted);
+ ExFreePoolWithTag(Dacl, 'lcaD');
+
/* Return status */
return Status;
}