[Bug 9919] Microsoft Access Snapshot Viewer 10.0 install fails (GetPrivateProfileString16 must only return valid key names)

wine-bugs at winehq.org wine-bugs at winehq.org
Mon Nov 16 09:13:19 CST 2015


https://bugs.winehq.org/show_bug.cgi?id=9919

Anastasius Focht <focht at gmx.net> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |focht at gmx.net
           Hardware|Other                       |x86
            Summary|Microsoft Access Snapshot   |Microsoft Access Snapshot
                   |Viewer 10.0 install fails   |Viewer 10.0 install fails
                   |                            |(GetPrivateProfileString16
                   |                            |must only return valid key
                   |                            |names)
                 OS|other                       |Linux
           Severity|minor                       |normal

--- Comment #15 from Anastasius Focht <focht at gmx.net> ---
Hello folks,

confirming.

It's a valid Wine bug and can be easily fixed.

The analysis from comment #3 is wrong, it has nothing to do with the 16-bit
extraction tool.

There is an ini-style file for the bootstrap installer, named "setup.lst".
It has the following content:

--- snip ---
[Params]
    WndTitle = Snapshot Viewer
    WndMess = Starting  Snapshot Viewer Setup...
    TmpDirSize = 2000
    TmpDirName = ~msstfqf.t
    CmdLine = acmsetup /T snap90.stf /S %s %s
    CabinetFile = SNAP901.CAB
    DrvModeName = ACMSETUP
    DrvWinClass = Stuff-Shell
    Require31 = "This program requires Windows (R) 3.51 or higher."
[Files]
    license.txt = license.txt
    @acmsetup.exe = acmsetup.exe
    @mssetup.dll = mssetup.dll
    @msacccah.dll = msacccah.dll
    @acmsetup.hlp = acmsetup.hlp
    snap90.stf = snap90.stf
    snap90.inf = snap90.inf
    @snap_bb.dll = snap_bb.dll
    oleaut32.dll = 32autole.dll
le.dll
--- snip ---

It seems someone at Microsoft added the last line (= invalid key/name entry) by
mistake which triggers the bug in Wine.

'setup.exe' -> bootstrap installer, extracted from 'snpvw.exe'.

--- snip ---
$ WINEDEBUG=+tid,+seh,+relay,+profile wine ./setup.exe >>log.txt 2>&1
...
002a:Call KERNEL.128: GETPRIVATEPROFILESTRING(11ef001c "Files",00000000
(null),11e72d46 "",11ef:59e2,0259,11ef55ea
"Z:\\home\\focht\\DOWN~NTG\\IXP000.TMP\\setup.LST") ret=11e7:1c5f ds=11ef
002a:Call ntdll.RtlAllocateHeap(00110000,00000000,00000259) ret=7e98dfda
002a:Ret  ntdll.RtlAllocateHeap() retval=001634e0 ret=7e98dfda
002a:Call KERNEL32.GetPrivateProfileSectionA(003a47b4
"Files",001634e0,00000259,003a9d82
"Z:\\home\\focht\\DOWN~NTG\\IXP000.TMP\\setup.LST") ret=7e98e00f
002a:trace:profile:GetPrivateProfileSectionW (L"Files", 0x167bd8, 1202,
L"Z:\\home\\focht\\DOWN~NTG\\IXP000.TMP\\setup.LST")
002a:trace:profile:PROFILE_Open path:
L"Z:\\home\\focht\\DOWN~NTG\\IXP000.TMP\\setup.LST"
002a:trace:profile:PROFILE_Open MRU Filename:
L"Z:\\home\\focht\\DOWN~NTG\\IXP000.TMP\\setup.LST", new filename:
L"Z:\\home\\focht\\DOWN~NTG\\IXP000.TMP\\setup.LST"
002a:trace:profile:is_not_current 0d103940;13c29f6c
002a:trace:profile:PROFILE_Open
(L"Z:\\home\\focht\\DOWN~NTG\\IXP000.TMP\\setup.LST"): already opened (mru=0)
002a:trace:profile:PROFILE_GetSection L"Files",0x167bd8,1202
002a:Ret  KERNEL32.GetPrivateProfileSectionA() retval=000000e8 ret=7e98e00f
002a:Call ntdll.RtlFreeHeap(00110000,00000000,001634e0) ret=7e98e1c8
002a:Ret  ntdll.RtlFreeHeap() retval=00000001 ret=7e98e1c8
002a:Ret  KERNEL.128: GETPRIVATEPROFILESTRING() retval=0000007a ret=11e7:1c5f
ds=11ef 
...
002a:Call KERNEL.128: GETPRIVATEPROFILESTRING(11ef001c "Files",11ef59e2
"license.txt",11e72d46 "",11ef:520a,0080,11ef55ea
"Z:\\home\\focht\\DOWN~NTG\\IXP000.TMP\\setup.LST") ret=11e7:1d22 ds=11ef
002a:Call KERNEL32.GetPrivateProfileStringA(003a47b4 "Files",003aa17a
"license.txt",003a39f6 "",003a99a2,00000080,003a9d82
"Z:\\home\\focht\\DOWN~NTG\\IXP000.TMP\\setup.LST") ret=7e98e236
002a:trace:profile:GetPrivateProfileStringW
L"Files",L"license.txt",L"",0x1669e8,128,L"Z:\\home\\focht\\DOWN~NTG\\IXP000.TMP\\setup.LST"
002a:trace:profile:PROFILE_Open path:
L"Z:\\home\\focht\\DOWN~NTG\\IXP000.TMP\\setup.LST"
002a:trace:profile:PROFILE_Open MRU Filename:
L"Z:\\home\\focht\\DOWN~NTG\\IXP000.TMP\\setup.LST", new filename:
L"Z:\\home\\focht\\DOWN~NTG\\IXP000.TMP\\setup.LST"
002a:trace:profile:is_not_current 0d103940;13c2b452
002a:trace:profile:PROFILE_Open
(L"Z:\\home\\focht\\DOWN~NTG\\IXP000.TMP\\setup.LST"): already opened (mru=0)
002a:trace:profile:PROFILE_GetString (L"Files",L"license.txt",L""): returning
L"license.txt"
002a:trace:profile:GetPrivateProfileStringW returning L"license.txt", 11
002a:Ret  KERNEL32.GetPrivateProfileStringA() retval=0000000b ret=7e98e236
002a:Ret  KERNEL.128: GETPRIVATEPROFILESTRING() retval=0000000b ret=11e7:1d22
ds=11ef 
...
002a:Call KERNEL.128: GETPRIVATEPROFILESTRING(11ef001c "Files",11ef5a48
"oleaut32.dll",11e72d46 "",11ef:520a,0080,11ef55ea
"Z:\\home\\focht\\DOWN~NTG\\IXP000.TMP\\setup.LST") ret=11e7:1d22 ds=11ef
002a:Call KERNEL32.GetPrivateProfileStringA(003a47b4 "Files",003aa1e0
"oleaut32.dll",003a39f6 "",003a99a2,00000080,003a9d82
"Z:\\home\\focht\\DOWN~NTG\\IXP000.TMP\\setup.LST") ret=7e98e236
002a:trace:profile:GetPrivateProfileStringW
L"Files",L"oleaut32.dll",L"",0x1669e8,128,L"Z:\\home\\focht\\DOWN~NTG\\IXP000.TMP\\setup.LST"
002a:trace:profile:PROFILE_Open path:
L"Z:\\home\\focht\\DOWN~NTG\\IXP000.TMP\\setup.LST"
002a:trace:profile:PROFILE_Open MRU Filename:
L"Z:\\home\\focht\\DOWN~NTG\\IXP000.TMP\\setup.LST", new filename:
L"Z:\\home\\focht\\DOWN~NTG\\IXP000.TMP\\setup.LST"
002a:trace:profile:is_not_current 0d103940;13c35f74
002a:trace:profile:PROFILE_Open
(L"Z:\\home\\focht\\DOWN~NTG\\IXP000.TMP\\setup.LST"): already opened (mru=0)
002a:trace:profile:PROFILE_GetString (L"Files",L"oleaut32.dll",L""): returning
L"32autole.dll"
002a:trace:profile:GetPrivateProfileStringW returning L"32autole.dll", 12
002a:Ret  KERNEL32.GetPrivateProfileStringA() retval=0000000c ret=7e98e236
002a:Ret  KERNEL.128: GETPRIVATEPROFILESTRING() retval=0000000c ret=11e7:1d22
ds=11ef 
...
002a:Call KERNEL.128: GETPRIVATEPROFILESTRING(11ef001c "Files",11ef5a55
"le.dll",11e72d46 "",11ef:520a,0080,11ef55ea
"Z:\\home\\focht\\DOWN~NTG\\IXP000.TMP\\setup.LST") ret=11e7:1d22 ds=11ef
002a:Call KERNEL32.GetPrivateProfileStringA(003a47b4 "Files",003aa1ed
"le.dll",003a39f6 "",003a99a2,00000080,003a9d82
"Z:\\home\\focht\\DOWN~NTG\\IXP000.TMP\\setup.LST") ret=7e98e236
002a:trace:profile:GetPrivateProfileStringW
L"Files",L"le.dll",L"",0x1669e8,128,L"Z:\\home\\focht\\DOWN~NTG\\IXP000.TMP\\setup.LST"
002a:trace:profile:PROFILE_Open path:
L"Z:\\home\\focht\\DOWN~NTG\\IXP000.TMP\\setup.LST"
002a:trace:profile:PROFILE_Open MRU Filename:
L"Z:\\home\\focht\\DOWN~NTG\\IXP000.TMP\\setup.LST", new filename:
L"Z:\\home\\focht\\DOWN~NTG\\IXP000.TMP\\setup.LST"
002a:trace:profile:is_not_current 0d103940;13c372de
002a:trace:profile:PROFILE_Open
(L"Z:\\home\\focht\\DOWN~NTG\\IXP000.TMP\\setup.LST"): already opened (mru=0)
002a:trace:profile:PROFILE_GetString (L"Files",L"le.dll",L""): returning L""
002a:trace:profile:GetPrivateProfileStringW returning L"", 0
002a:Ret  KERNEL32.GetPrivateProfileStringA() retval=00000000 ret=7e98e236
002a:Ret  KERNEL.128: GETPRIVATEPROFILESTRING() retval=00000000 ret=11e7:1d22
ds=11ef
...
002a:Call USER.1: MESSAGEBOX(004c,11ef4dec "A Setup initialization file has
been corrupted.",11ef518c "Setup Initialization Error",0010) ret=11e7:023f
ds=11ef 
--- snip ---

As already said, the last entry from the 'Files' section, 'le.dll' is invalid
hence must not be returned from 'GetPrivateProfileString16( section, NULL,
...)' which ought to return all *valid* key names from the specified section
(string array).

The two implementations of 'GetPrivateProfileString': 16-bit
'GetPrivateProfileString16' and 32-bit 'GetPrivateProfileStringA/W' are
independent and the 16-bit implementation must be fixed.

Source:
https://source.winehq.org/git/wine.git/blob/33aa59abea2ec4dc0d2354a44ec9d0a5af43e48f:/dlls/krnl386.exe16/file.c#l538

$ sha1sum snpvw.exe 
41a431279bf730c6ea0191c91370840de38e5ebc  snpvw.exe

$ du -sh snpvw.exe 
1.8M    snpvw.exe

$ wine --version
wine-1.7.55-2-g62f05b2

Regards

-- 
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