[Bug 5224] Grim Fandango patch Gfupd101.exe doesn't start

wine-bugs at winehq.org wine-bugs at winehq.org
Wed Dec 26 22:57:00 CST 2007


John Doe <remailer at gmail.com> changed:

           What    |Removed                     |Added
                 CC|                            |remailer at gmail.com

--- Comment #14 from John Doe <remailer at gmail.com>  2007-12-26 22:56:58 ---
hi there,

I think I've discovered the reason for this bug, I ran into it when attempting
to run another file from lucasarts ftp server. 

ftp://ftp.lucasarts.com/patches/pc/jkupd101.exe which also manifests undefined
behavior shortly after calling GetCommandLineA.

So, after becoming reacquainted with some assembly, I found out what was going
on... there's a lack of error checking in these programs, they assume that
there are double quotes in the string returned by GetCommandLineA, eg

This offending function in jkupd101.exe loops endlessly untill it manages to
write into memory it doesn't have permission to which causes wine to terminate

 00401868                           L00401868:
 00401868  8A4C0408                             mov     cl,[esp+eax+08h]
 0040186C  40                                   inc     eax
 0040186D  80F922                               cmp     cl,22h
 00401870  75F6                                 jnz     L00401868

Note the cmp cl, 22h, where 22 is '"'

As for gfupd101.exe, its undefined behavior ends up looping endlessly (as
previously reported)

I also tested GetCommandLineA on windows:

When a program is invoked by cmd.exe there are no double quotes.

When a program is launched through explorer  GetCommandLineA returns a string
with double quotes.

> c:\GetCommandLineA.exe a b c
C:\GetCommandLineA.exe a b c

but when launched through explorer
"c:\GetCommandLineA.exe" a b c

Does the behavior of wine need change or can be conclude from this that these
programs were only meant to be launched by Windows's explorer.exe?

Tested using wine-0.9.51 and Windows 2003.

The test executable can be built from this source:

#include <stdio.h>
#include <windows.h>
int main(int argc, char *argv[])
  getchar(); /* wait for input before the window closes */
  return 0;

Configure bugmail: http://bugs.winehq.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are watching all bug changes.

More information about the wine-bugs mailing list