[Bug 10618] New: dll/kernel32/process. c build_argv returns incorrect argv array for a given command line string
wine-bugs at winehq.org
wine-bugs at winehq.org
Fri Nov 30 19:10:48 CST 2007
http://bugs.winehq.org/show_bug.cgi?id=10618
Summary: dll/kernel32/process.c build_argv returns incorrect argv
array for a given command line string
Product: Wine
Version: CVS/GIT
Platform: Other
OS/Version: other
Status: UNCONFIRMED
Severity: enhancement
Priority: P2
Component: wine-kernel
AssignedTo: wine-bugs at winehq.org
ReportedBy: felix at compsoc.nuigalway.ie
Created an attachment (id=9421)
--> (http://bugs.winehq.org/attachment.cgi?id=9421)
Additional traces to allow bug to be seen
When building the argv array to send to a new process started by another within
wine, the function build_argv in dlls/kernel32/process.c fails to return an
array argv correctly.
In the case of msiexec being the target program, this has necessitated a custom
command line parse that reconstructs the the correct argv.
Application that highlights this behaviour is the Excel Viewer installer.
The problem was discovered when examining bug 9628 to see why a patch to use
the standard command line parser call was reverted in favour of a custom parser
internal to msiexec.
You will need to apply the attached patch to be able to see the broken
behaviour, it basically adds some additional traces and also increases the
debug buffer so that the full command line can be seen when using the debug
functions to print.
Steps to reproduce:
1. Apply patch, rebuild wine, and install as necessary. adds TRACES that allow
you to see the contents of argv
2. Download the Microsoft Excel Viewer 2003 installer from Microsoft
3. Run the installer with the following environment variable set on the command
line "WINEDEBUG=+msiexec,+process"
4. Check for the lines outputting
"trace:process:build_argv cmdlineW = ..." command line being sent to new
process
"trace:process:build_argv resulting argv[]" + a number of lines following
outputting the contents of the constructed argv array.
"trace:msiexec:main argv[0]..." and a number of lines following.
5. Exit installation dialogs by cancelling
6. Run installation of msi directly by using the command line printed out by
the first trace described in step 4.
7. You should see the difference between what is outputted by the trace
displaying "trace:msiexec:main argv[0]..." in step 4 and step 6. The argv seen
by msiexec in running step 3 should appear exactly the same as step 6.
Results Observed:
Command line run using built area:
WINEPREFIX=/tmp/winebug9628/ WINEDEBUG=+msiexec,+process ./wine
~/tmp/xlviewer.exe
output from step 4:
1. "trace:process:build_argv cmdlineW = ..."
trace:process:build_argv cmdlineW = L"\"c:\\windows\\system32\\msiexec.exe\"
/I C:\\windows\\temp\\IXP030.TMP\\XLVIEW.MSI CDCACHE=\"2\"
LAUNCHEDFROMSETUP=\"1\" SETUPEXEPATH=\"C:\\windows\\temp\\IXP030.TMP\\\"
SETUPEXENAME=\"SETUP.EXE\" /lpiwaeo \"C:\\windows\\temp\\Microsoft Office
Excel Viewer 2003 Setup(0054)_Task(0001).txt\" CDCACHE=\"0\"
DWSETUPLOGFILE=\"C:\\windows\\temp\\Microsoft Office Excel Viewer 2003
Setup(0054).txt\" DWMSILOGFILE=\"C:\\windows\\temp\\Microsoft Office Excel
Viewer 2003 Setup(0054)_Task(0001).txt\""
2. "trace:process:build_argv resulting argv[]" + following lines
trace:process:build_argv resulting argv[]
trace:process:build_argv argv[1] = "c:\windows\system32\msiexec.exe"
trace:process:build_argv argv[2] = "/I"
trace:process:build_argv argv[3] = "C:\windows\temp\IXP030.TMP\XLVIEW.MSI"
trace:process:build_argv argv[4] = "CDCACHE=2"
trace:process:build_argv argv[5] = "LAUNCHEDFROMSETUP=1"
trace:process:build_argv argv[6] = "SETUPEXEPATH=C:\windows\temp\IXP030.TMP"
SETUPEXENAME=SETUP.EXE /lpiwaeo C:\windows\temp\Microsoft"
trace:process:build_argv argv[7] = "Office"
trace:process:build_argv argv[8] = "Excel"
trace:process:build_argv argv[9] = "Viewer"
trace:process:build_argv argv[10] = "2003"
trace:process:build_argv argv[11] = "Setup(0054)_Task(0001).txt CDCACHE=0
DWSETUPLOGFILE=C:\windows\temp\Microsoft"
trace:process:build_argv argv[12] = "Office"
trace:process:build_argv argv[13] = "Excel"
trace:process:build_argv argv[14] = "Viewer"
trace:process:build_argv argv[15] = "2003"
trace:process:build_argv argv[16] = "Setup(0054).txt
DWMSILOGFILE=C:\windows\temp\Microsoft"
trace:process:build_argv argv[17] = "Office"
trace:process:build_argv argv[18] = "Excel"
trace:process:build_argv argv[19] = "Viewer"
trace:process:build_argv argv[20] = "2003"
trace:process:build_argv argv[21] = "Setup(0054)_Task(0001).txt"
3. "trace:msiexec:main argv[0]..." and following lines
trace:msiexec:main argv[0] = "c:\windows\system32\msiexec.exe"
trace:msiexec:main argv[1] = "/I"
trace:msiexec:main argv[2] = "C:\windows\temp\IXP030.TMP\XLVIEW.MSI"
trace:msiexec:main argv[3] = "CDCACHE=2"
trace:msiexec:main argv[4] = "LAUNCHEDFROMSETUP=1"
trace:msiexec:main argv[5] = "SETUPEXEPATH=C:\windows\temp\IXP030.TMP"
SETUPEXENAME=SETUP.EXE /lpiwaeo C:\windows\temp\Microsoft"
trace:msiexec:main argv[6] = "Office"
trace:msiexec:main argv[7] = "Excel"
trace:msiexec:main argv[8] = "Viewer"
trace:msiexec:main argv[9] = "2003"
trace:msiexec:main argv[10] = "Setup(0054)_Task(0001).txt CDCACHE=0
DWSETUPLOGFILE=C:\windows\temp\Microsoft"
trace:msiexec:main argv[11] = "Office"
trace:msiexec:main argv[12] = "Excel"
trace:msiexec:main argv[13] = "Viewer"
trace:msiexec:main argv[14] = "2003"
trace:msiexec:main argv[15] = "Setup(0054).txt
DWMSILOGFILE=C:\windows\temp\Microsoft"
trace:msiexec:main argv[16] = "Office"
trace:msiexec:main argv[17] = "Excel"
trace:msiexec:main argv[18] = "Viewer"
trace:msiexec:main argv[19] = "2003"
trace:msiexec:main argv[20] = "Setup(0054)_Task(0001).txt"
Output from step 6 in running the following command line in the built area:
WINEPREFIX=/tmp/winebug9628/ WINEDEBUG=+msiexec,+process
./programs/msiexec/msiexec /I C:\\windows\\temp\\IXP030.TMP\\XLVIEW.MSI
CDCACHE="2" LAUNCHEDFROMSETUP="1"
SETUPEXEPATH="C:\\windows\\temp\\IXP030.TMP\\" SETUPEXENAME="SETUP.EXE"
/lpiwaeo "C:\\windows\\temp\\Microsoft Office Excel Viewer 2003
Setup(0054)_Task(0001).txt" CDCACHE="0"
DWSETUPLOGFILE="C:\\windows\\temp\\Microsoft Office Excel Viewer 2003
Setup(0054).txt" DWMSILOGFILE="C:\\windows\\temp\\Microsoft Office Excel Viewer
2003 Setup(0054)_Task(0001).txt"
Note the only change from the line outputted by the traces were all '\"'
converted to '"' and using the msiexec in the locally built area.
1. "trace:msiexec:main argv[0]..." and following lines
trace:msiexec:main argv[0] = "./programs/msiexec/msiexec.exe.so"
trace:msiexec:main argv[1] = "/I"
trace:msiexec:main argv[2] = "C:\windows\temp\IXP030.TMP\XLVIEW.MSI"
trace:msiexec:main argv[3] = "CDCACHE=2"
trace:msiexec:main argv[4] = "LAUNCHEDFROMSETUP=1"
trace:msiexec:main argv[5] = "SETUPEXEPATH=C:\windows\temp\IXP030.TMP\"
trace:msiexec:main argv[6] = "SETUPEXENAME=SETUP.EXE"
trace:msiexec:main argv[7] = "/lpiwaeo"
trace:msiexec:main argv[8] = "C:\windows\temp\Microsoft Office Excel Viewer
2003 Setup(0054)_Task(0001).txt"
trace:msiexec:main argv[9] = "CDCACHE=0"
trace:msiexec:main argv[10] = "DWSETUPLOGFILE=C:\windows\temp\Microsoft Office
Excel Viewer 2003 Setup(0054).txt"
Which is not the same as previously got when msiexec was called by the setup
exe.
--
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