[Bug 26507] Muvee Reveal 8.0.1.1421 installer fails to extract its CABINET payload from embedded PE resource

wine-bugs at winehq.org wine-bugs at winehq.org
Sat Dec 7 12:11:43 CST 2013


http://bugs.winehq.org/show_bug.cgi?id=26507

Anastasius Focht <focht at gmx.net> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                URL|http://www.filecluster.com/ |http://cdn.muvee.com/downlo
                   |downloads/muvee-Reveal.html |ads/muveeReveal_8.0.1.14210
                   |                            |_2299.exe
            Summary|Muvee Reveal finds a        |Muvee Reveal 8.0.1.1421
                   |problem and doesn't install |installer fails to extract
                   |                            |its CABINET payload from
                   |                            |embedded PE resource

--- Comment #12 from Anastasius Focht <focht at gmx.net> 2013-12-07 12:11:43 CST ---
Hello folks,

still present.

The problem seems to be that Wine's builtin cabinet can't deal with CABINET
resource embedded in PE file.

Relevant part of trace log:

--- snip ---
...
0024:Call KERNEL32.LoadLibraryW(0048f78c L"Cabinet.dll") ret=0042be9a
0024:Ret  KERNEL32.LoadLibraryW() retval=7e240000 ret=0042be9a
0024:Call KERNEL32.GetProcAddress(7e240000,0048f780 "FDICreate") ret=0042beae
0024:Ret  KERNEL32.GetProcAddress() retval=7e244b40 ret=0042beae
0024:Call KERNEL32.GetProcAddress(7e240000,0048f778 "FDICopy") ret=0042bec2
0024:Ret  KERNEL32.GetProcAddress() retval=7e244b70 ret=0042bec2
0024:Call KERNEL32.GetProcAddress(7e240000,0048f768 "FDIIsCabinet")
ret=0042bed6
0024:Ret  KERNEL32.GetProcAddress() retval=7e244b58 ret=0042bed6
0024:Call KERNEL32.GetProcAddress(7e240000,0048f75c "FDIDestroy") ret=0042beea
0024:Ret  KERNEL32.GetProcAddress() retval=7e244b88 ret=0042beea
0024:Call
cabinet.FDICreate(00429e80,0042a870,0042ba30,0042b240,0042a890,0042b260,0042b2b0,00000001,0033e044)
ret=0042bf54
0024:trace:cabinet:FDICreate (pfnalloc == ^0x429e80, pfnfree == ^0x42a870,
pfnopen == ^0x42ba30, pfnread == ^0x42b240, pfnwrite == ^0x42a890, pfnclose ==
^0x42b260, pfnseek == ^0x42b2b0, cpuType == 1, perf == ^0x33e044)
0024:Call ntdll.RtlAllocateHeap(06936000,00000000,00000024) ret=00463e35
0024:Ret  ntdll.RtlAllocateHeap() retval=06940f60 ret=00463e35
0024:Ret  cabinet.FDICreate() retval=06940f60 ret=0042bf54 
...
0024:Call KERNEL32.FindResourceW(00400000,0693e0f8 L"#6699",0693e5b0 L"#10")
ret=0042a01e
0024:Ret  KERNEL32.FindResourceW() retval=004b4fd8 ret=0042a01e
0024:Call KERNEL32.LoadResource(00400000,004b4fd8) ret=0042a028
0024:Ret  KERNEL32.LoadResource() retval=004ea12c ret=0042a028
0024:Call KERNEL32.LockResource(004ea12c) ret=0042a02f
0024:Ret  KERNEL32.LockResource() retval=004ea12c ret=0042a02f
0024:Call KERNEL32.SizeofResource(00400000,004b4fd8) ret=0042a03d
0024:Ret  KERNEL32.SizeofResource() retval=0633b15d ret=0042a03d 
...
0024:Call KERNEL32.WideCharToMultiByte(0000fde9,00000000,069425a8
L"*CABINET\\",ffffffff,06943178,00000258,00000000,00000000) ret=00428fbb
0024:Ret  KERNEL32.WideCharToMultiByte() retval=0000000a ret=00428fbb
0024:Call KERNEL32.WideCharToMultiByte(0000fde9,00000000,06942a60
L"*RESOURCE",ffffffff,06942f18,00000258,00000000,00000000) ret=00428fbb
0024:Ret  KERNEL32.WideCharToMultiByte() retval=0000000a ret=00428fbb
0024:Call
cabinet.FDICopy(06940f60,06942f18,06943178,00000000,0042b2d0,00000000,0033cf58)
ret=0042b761
0024:trace:cabinet:FDICopy (hfdi == ^0x6940f60, pszCabinet == "*RESOURCE",
pszCabPath == "*CABINET\\", flags == 0, pfnfdin == ^0x42b2d0, pfnfdid ==
^(nil), pvUser == ^0x33cf58)
0024:Call ntdll.RtlAllocateHeap(06936000,00000000,00016f60) ret=00463e35
0024:Ret  ntdll.RtlAllocateHeap() retval=06949ba8 ret=00463e35
0024:trace:cabinet:FDICopy full cab path/file name: "*CABINET\\*RESOURCE"
0024:Call ntdll.RtlAllocateHeap(06936000,00000000,000004b0) ret=00463e35
0024:Ret  ntdll.RtlAllocateHeap() retval=069433d8 ret=00463e35
0024:Call KERNEL32.MultiByteToWideChar(0000fde9,00000000,0033bb84
"*CABINET\\*RESOURCE",ffffffff,069433d8,00000258) ret=0042b37f
0024:Ret  KERNEL32.MultiByteToWideChar() retval=00000013 ret=0042b37f
...
0024:trace:cabinet:FDI_read_entries (fdi == ^0x6940f60, hf == 110366608, pfdici
== ^0x33bcb0)
0024:Call KERNEL32.GetLastError() ret=00468d49
0024:Ret  KERNEL32.GetLastError() retval=00000002 ret=00468d49
0024:warn:cabinet:FDICopy FDI_read_entries failed: 2
...
0024:Ret  cabinet.FDICopy() retval=00000000 ret=0042b761 
...
0024:Call cabinet.FDIDestroy(06940f60) ret=00429e4e
0024:trace:cabinet:FDIDestroy (hfdi == ^0x6940f60)
...
0024:Ret  cabinet.FDIDestroy() retval=00000001 ret=00429e4e 
...
--- snip ---

I extracted the PE resource using LordPE and it's indeed a .cab file:

--- snip --
$ file res#6699.cab 
res#6699.cab: Microsoft Cabinet archive data, 104051037 bytes, 37 files
--- snip --

'winetricks cabinet' works around.
Though this override will later lead to a crash because Wine's msi doesn't seem
to like native cabinet.

Mapping/access of the PE resource/file is handled by the application provided
callback.
There is most likely something wrong with placement/order of notifications sent
within FDICopy().

$ sha1sum muveeReveal_8.0.1.14210_2299.exe 
93db0d86103c8ed4e3c3ecff367468f2b120e8dc  muveeReveal_8.0.1.14210_2299.exe

$ du -sh muveeReveal_8.0.1.14210_2299.exe 
101M    muveeReveal_8.0.1.14210_2299.exe

$ wine --version
wine-1.7.8-128-g37460b6

Regards

-- 
Configure bugmail: http://bugs.winehq.org/userprefs.cgi?tab=email
Do not reply to this email, post in Bugzilla using the
above URL to reply.
------- You are receiving this mail because: -------
You are watching all bug changes.



More information about the wine-bugs mailing list