diff --git a/reactos/subsys/system/usetup/cabinet.c b/reactos/subsys/system/usetup/cabinet.c index 173523df612..fc4080a8fe8 100755 --- a/reactos/subsys/system/usetup/cabinet.c +++ b/reactos/subsys/system/usetup/cabinet.c @@ -1618,6 +1618,7 @@ CabinetExtractFile(PWCHAR FileName) FILETIME FileTime; WCHAR DestName[MAX_PATH]; WCHAR TempName[MAX_PATH]; + PWCHAR s; NTSTATUS NtStatus; UNICODE_STRING UnicodeString; IO_STATUS_BLOCK IoStatusBlock; @@ -1653,11 +1654,17 @@ CabinetExtractFile(PWCHAR FileName) wcscpy(DestName, DestPath); wcscat(DestName, FileName); - + + while (NULL != (s = wcsstr(DestName, L"\\.\\"))) + { + memmove(s, s + 2, (wcslen(s + 2) + 1) *sizeof(WCHAR)); + } + /* Create destination file, fail if it already exists */ RtlInitUnicodeString(&UnicodeString, DestName); + InitializeObjectAttributes(&ObjectAttributes, &UnicodeString, OBJ_CASE_INSENSITIVE,