[RTL] Import Wine commit f87767b by Piotr Caban: Handle ACTCTX_FLAG_ASSEMBLY_DIRECTORY_VALID flag when opening manifest in RtlCreateActivationContext.

svn path=/trunk/; revision=65511
This commit is contained in:
Amine Khaldi 2014-11-28 19:20:39 +00:00
parent 198dcf7d19
commit 3be4abc045

View file

@ -4645,7 +4645,30 @@ RtlCreateActivationContext(IN ULONG Flags,
if (pActCtx->lpSource && !((pActCtx->dwFlags & ACTCTX_FLAG_RESOURCE_NAME_VALID) &&
(pActCtx->dwFlags & ACTCTX_FLAG_HMODULE_VALID)))
{
if (!RtlDosPathNameToNtPathName_U(pActCtx->lpSource, &nameW, NULL, NULL))
WCHAR *source = NULL;
BOOLEAN ret;
if (pActCtx->dwFlags & ACTCTX_FLAG_ASSEMBLY_DIRECTORY_VALID &&
RtlDetermineDosPathNameType_U(pActCtx->lpSource) == RtlPathTypeRelative)
{
DWORD dir_len, source_len;
dir_len = strlenW(pActCtx->lpAssemblyDirectory);
source_len = strlenW(pActCtx->lpSource);
if (!(source = RtlAllocateHeap( RtlGetProcessHeap(), 0, (dir_len+source_len+2)*sizeof(WCHAR))))
{
status = STATUS_NO_MEMORY;
goto error;
}
memcpy(source, pActCtx->lpAssemblyDirectory, dir_len*sizeof(WCHAR));
source[dir_len] = '\\';
memcpy(source+dir_len+1, pActCtx->lpSource, (source_len+1)*sizeof(WCHAR));
}
ret = RtlDosPathNameToNtPathName_U(source ? source : pActCtx->lpSource, &nameW, NULL, NULL);
if (source) RtlFreeHeap( RtlGetProcessHeap(), 0, source );
if (!ret)
{
status = STATUS_NO_SUCH_FILE;
goto error;