[Bug 46958] ConceptDraw Office 4 refuses to install, claiming that C: drive has 0 bytes of free space (invalid module handle passed to ' FreeLibrary()', causing code dll unmapped as data dll)

wine-bugs at winehq.org wine-bugs at winehq.org
Fri Apr 5 02:17:29 CDT 2019


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

Anastasius Focht <focht at gmx.net> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                URL|                            |https://web.archive.org/web
                   |                            |/20190405064532/https://dow
                   |                            |nloads.conceptdraw.com/down
                   |                            |load/ForUsers/CDOFF/4.4.0/C
                   |                            |onceptDrawOffice4Install.ex
                   |                            |e
           Keywords|                            |download
             Status|UNCONFIRMED                 |RESOLVED
         Resolution|---                         |DUPLICATE
            Summary|ConceptDraw Office 4        |ConceptDraw Office 4
                   |refuses to install,         |refuses to install,
                   |claiming that C: drive has  |claiming that C: drive has
                   |0 bytes of free space       |0 bytes of free space
                   |                            |(invalid module handle
                   |                            |passed to 'FreeLibrary()',
                   |                            |causing code dll unmapped
                   |                            |as data dll)
                 CC|                            |focht at gmx.net
          Component|-unknown                    |kernel32

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

confirming, dupe of bug 46019

--- snip ---
$ WINEDEBUG=+seh,+relay wine ./ConceptDrawOffice4Install.exe >>log.txt 2>&1
...
002a:Call KERNEL32.GetModuleHandleA(00409f50
"C:\\users\\focht\\Temp\\nsi9438.tmp\\System.dll") ret=00401f82
002a:Ret  KERNEL32.GetModuleHandleA() retval=00d80000 ret=00401f82
002a:Call KERNEL32.GetProcAddress(00d80000,00409b50 "Call") ret=00401fa2
002a:Ret  KERNEL32.GetProcAddress() retval=00d8198f ret=00401fa2 
...
002a:Call KERNEL32.lstrcpyA(00179588,00185d5c
"kernel32::GetCurrentProcess(v)i.R0") ret=00d81584
002a:Ret  KERNEL32.lstrcpyA() retval=00179588 ret=00d81584 
002a:Call KERNEL32.GetProcAddress(7b420000,00179d98 "GetCurrentProcess")
ret=00d82310
002a:Ret  KERNEL32.GetProcAddress() retval=7b477188 ret=00d82310 
...
002a:Call KERNEL32.FreeLibrary(00d8198f) ret=0040200d
002a:Ret  KERNEL32.FreeLibrary() retval=00000001 ret=0040200d 
...
002a:Call KERNEL32.GetModuleHandleA(00409f50
"C:\\users\\focht\\Temp\\nsi9438.tmp\\System.dll") ret=00401f82
...
002a:Ret  KERNEL32.GetModuleHandleA() retval=00d80000 ret=00401f82
002a:Call KERNEL32.GetProcAddress(00d80000,00409b50 "Call") ret=00401fa2
002a:trace:seh:raise_exception code=c0000005 flags=0 addr=0x7bc6312c
ip=7bc6312c tid=002a
002a:trace:seh:raise_exception  info[0]=00000000
002a:trace:seh:raise_exception  info[1]=00d80000
002a:trace:seh:raise_exception  eax=00d80000 ebx=7bd0d000 ecx=8852ef2b
edx=0033f50c esi=0033f650 edi=0033f748
002a:trace:seh:raise_exception  ebp=0033f5d8 esp=0033f4f0 cs=0023 ds=002b
es=002b fs=0063 gs=006b flags=00010246
002a:trace:seh:call_stack_handlers calling handler at 0x7bcb6560 code=c0000005
flags=0
002a:trace:seh:__regs_RtlUnwind code=c0000005 flags=2
002a:trace:seh:__regs_RtlUnwind eax=00000000 ebx=7bcb63ef ecx=0033f498
edx=0033f498 esi=0033f50c edi=7bcb63ef
002a:trace:seh:__regs_RtlUnwind ebp=0033ef98 esp=0033ef68 eip=7bcb63d8 cs=0023
ds=002b fs=0063 gs=006b flags=00000216
002a:trace:seh:__regs_RtlUnwind calling handler at 0x7bc922e7 code=c0000005
flags=2
002a:trace:seh:__regs_RtlUnwind handler at 0x7bc922e7 returned 1
002a:Ret  KERNEL32.GetProcAddress() retval=00000000 ret=00401fa2 
...
<much later>
002a:Call winex11.drv.SetWindowText(000300a4,00165620 L"The selected drive does
not have enough free space for installation.\nClick Back until you return to
Type of installation location window, then select Custom type, or make more
space on the selected drive and try again.") ret=7e841def 
--- snip ---

Disassembly of NSIS caller:

--- snip ---
...
00401FE5 FF75 08       PUSH DWORD PTR SS:[ARG.1] ; Arg2 = ASCII "Call"
00401FE8 6A F7         PUSH -9
00401FEA E8 8C2D0000   CALL 00404D7B
00401FEF 395D E8       CMP DWORD PTR SS:[LOCAL.6],EBX
00401FF2 0F85 93080000 JNE 0040288B
00401FF8 57            PUSH EDI          ; Arg1 = System.Call
00401FF9 E8 C8140000   CALL 004034C6
00401FFE 85C0          TEST EAX,EAX
00402000 0F84 85080000 JZ 0040288B
00402006 57            PUSH EDI          ; proc address (EDI lowbits set)
00402007 FF15 18714000 CALL DWORD PTR DS:[<&KERNEL32.FreeLibrary]
0040200D E9 79080000   JMP 0040288B
...
--- snip ---

The caller abuses EDI for different purpose. Register EDI is supposed to hold
the module handle but instead the proc address is passed. The base address
matches (obviously since it's from the same module), but EDI lowbits are set.

--- snip ---
002a:Call KERNEL32.FreeLibrary(00d8198f) ret=0040200d
002a:Ret  KERNEL32.FreeLibrary() retval=00000001 ret=0040200d 
--- snip ---

Wine happily unmaps the library because it thinks it's a data dll (low bits set
due to clobber). Since the module data from 'system.dll' is still in loader
module list, Wine loader tries to resolve API functions later, causing
exception.

For documentation, NSIS installer specs:

--- snip ---
$ 7z l ConceptDrawOffice4Install.exe

7-Zip [64] 16.02 : Copyright (c) 1999-2016 Igor Pavlov : 2016-05-21
p7zip Version 16.02 (locale=en_US.utf8,Utf16=on,HugeFiles=on,64 bits,8 CPUs
Intel(R) Core(TM) i7-4700HQ CPU @ 2.40GHz (306C3),ASM,AES-NI)

Scanning the drive for archives:
1 file, 396826488 bytes (379 MiB)

Listing archive: ConceptDrawOffice4Install.exe

--
Path = ConceptDrawOffice4Install.exe
Type = PE
Physical Size = 396826488
CPU = x86
Characteristics = Executable 32-bit NoRelocs NoLineNums NoLocalSyms
Created = 2009-12-06 00:50:41
Headers Size = 1024
Checksum = 396880484
Image Size = 335872
Section Alignment = 4096
File Alignment = 512
Code Size = 23040
Initialized Data Size = 119808
Uninitialized Data Size = 1024
Linker Version = 6.0
OS Version = 4.0
Image Version = 6.0
Subsystem Version = 4.0
Subsystem = Windows GUI
DLL Characteristics = TerminalServerAware
Stack Reserve = 1048576
Stack Commit = 4096
Heap Reserve = 1048576
Heap Commit = 4096
Image Base = 4194304
Comment = FileVersion: 4.4.0.0
ProductVersion: 4.4.0.0
ProductVersion: 4.4
FileDescription: ConceptDraw Office v4 Installation
LegalCopyright: CS Odessa Corp.
ProductName: ConceptDraw Office
----
Path = [0]
Size = 396752880
Packed Size = 396752880
Virtual Size = 396752880
Offset = 67584
--
Path = [0]
Type = Nsis
Physical Size = 396752875
Tail Size = 5
Method = LZMA:23
Solid = -
Headers Size = 578461
Embedded Stub Size = 0
SubType = NSIS-2

   Date      Time    Attr         Size   Compressed  Name
------------------- ----- ------------ ------------  ------------------------
                    .....                      5871  $PLUGINSDIR/System.dll
                    .....                      4209  $PLUGINSDIR/nsDialogs.dll
                    .....                      7291 
$PLUGINSDIR/InstallOptions.dll
2007-11-14 22:12:38 .....                       141  $PLUGINSDIR/ioSpecial.ini
2016-09-02 10:36:32 .....                      2805  $PLUGINSDIR/back.bmp
2016-09-02 10:36:32 .....                      2805 
$PLUGINSDIR/modern-wizard.bmp
2016-09-02 10:36:00 .....                       770 
$PLUGINSDIR/modern-header.bmp
                    .....                      7433  $PLUGINSDIR/UAC.dll
2016-09-02 10:32:48 .....                      8742  $PLUGINSDIR/splash.bmp
                    .....                      1554  $PLUGINSDIR/Splash.dll
                    .....                      1370 
$PLUGINSDIR/InvokeShellVerb.dll
                    .....                      6272 
$PLUGINSDIR/AccessControl.dll
2016-08-10 14:00:28 .....            0            0  ConceptDraw
PRO/CDBasic/AppCDBasicScript.cdb
2014-12-04 15:21:50 .....            0            0 
$_91_/Preferences/index.txt
...
--- snip ---

$ sha1sum ConceptDrawOffice4Install.exe 
90ee67aaefb3bce49a057d153c7f0560c0d0d20b  ConceptDrawOffice4Install.exe

$ du -sh ConceptDrawOffice4Install.exe 
379M    ConceptDrawOffice4Install.exe

$ wine --version
wine-4.5-185-g17056908ac

Regards

*** This bug has been marked as a duplicate of bug 46019 ***

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