https://git.reactos.org/?p=reactos.git;a=commitdiff;h=fe6c7f05e26a3f9e3b1915...
commit fe6c7f05e26a3f9e3b1915c849abc21799904ffc Author: Pierre Schweitzer pierre@reactos.org AuthorDate: Tue May 21 19:27:32 2019 +0200 Commit: Pierre Schweitzer pierre@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; }