mirror of
https://github.com/reactos/reactos.git
synced 2024-11-18 21:13:52 +00:00
[LDR] Check forwarded imports against the manifest before trying to load them
CORE-15729
This commit is contained in:
parent
d9c4d28e59
commit
27cc4c6a08
1 changed files with 34 additions and 3 deletions
|
@ -1133,13 +1133,44 @@ FailurePath:
|
|||
/* Make sure the conversion was OK */
|
||||
if (NT_SUCCESS(Status))
|
||||
{
|
||||
/* Load the forwarder, free the temp string */
|
||||
Status = LdrpLoadDll(FALSE,
|
||||
WCHAR StringBuffer[MAX_PATH];
|
||||
UNICODE_STRING StaticString, *RedirectedImportName;
|
||||
BOOLEAN Redirected = FALSE;
|
||||
|
||||
RtlInitEmptyUnicodeString(&StaticString, StringBuffer, sizeof(StringBuffer));
|
||||
|
||||
/* Check if the SxS Assemblies specify another file */
|
||||
Status = RtlDosApplyFileIsolationRedirection_Ustr(TRUE,
|
||||
&TempUString,
|
||||
&LdrApiDefaultExtension,
|
||||
&StaticString,
|
||||
NULL,
|
||||
&RedirectedImportName,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL);
|
||||
if (NT_SUCCESS(Status))
|
||||
{
|
||||
if (ShowSnaps)
|
||||
{
|
||||
DPRINT1("LDR: %Z got redirected to %wZ\n", &ForwarderName, RedirectedImportName);
|
||||
}
|
||||
/* Let Ldrp know */
|
||||
Redirected = TRUE;
|
||||
}
|
||||
else
|
||||
{
|
||||
RedirectedImportName = &TempUString;
|
||||
}
|
||||
|
||||
/* Load the forwarder */
|
||||
Status = LdrpLoadDll(Redirected,
|
||||
NULL,
|
||||
NULL,
|
||||
&TempUString,
|
||||
RedirectedImportName,
|
||||
&ForwarderHandle,
|
||||
FALSE);
|
||||
|
||||
RtlFreeUnicodeString(&TempUString);
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue