http://bugs.winehq.org/show_bug.cgi?id=12326
Summary: SHELL_FindExecutable breaks "mailto:" URL Product: Wine Version: 0.9.58. Platform: All OS/Version: All Status: UNCONFIRMED Severity: normal Priority: P2 Component: shell32 AssignedTo: wine-bugs@winehq.org ReportedBy: developers@tefnet.pl
Created an attachment (id=11802) --> (http://bugs.winehq.org/attachment.cgi?id=11802) mailto test script
When you try to run attached script (mailtotest.sh) you will get an email with only 23 lines (not 43 as supposed to be)
But when you comment out line ~560 "if (key) *key = '\0';" in SHELL_FindExecutable (dlls/shell32/shlexec.c), you will get correct email body.
http://bugs.winehq.org/show_bug.cgi?id=12326
--- Comment #1 from Tefnet developers developers@tefnet.pl 2008-04-02 07:27:54 --- Created an attachment (id=11803) --> (http://bugs.winehq.org/attachment.cgi?id=11803) Patch for SHELL_FindExecutable
It probably breaks something else.
http://bugs.winehq.org/show_bug.cgi?id=12326
Austin English austinenglish@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Keywords| |patch, testcase
http://bugs.winehq.org/show_bug.cgi?id=12326
--- Comment #2 from Tefnet developers developers@tefnet.pl 2008-04-03 12:10:47 --- The problem is in function SHELL_execute in line 1714 and 1717.
lstrcpynW(wfileName, sei_tmp.lpFile,sizeof(wfileName)); } } else lstrcpynW(wfileName, sei_tmp.lpFile,sizeof(wfileName));
lpFile = wfileName;
There is a strcpyW from sei_tmp.lpFile (wich size we don't know) to wfileName with fixed length = MAX_PATH.
As a result wfileName by accident overwrites lpstrProtocol passed as argument "key" to SHELL_FindExecutable. That's why in function SHELL_FindExecutable line:
if (key) *key = '\0';
cuts my long argument.
How should I solve this problem?
Using lstrcpynW instead of strcpyW doesn't solve my problem, because it will still cut my argument.
http://bugs.winehq.org/show_bug.cgi?id=12326
--- Comment #3 from Tefnet developers developers@tefnet.pl 2008-04-03 12:12:54 --- (In reply to comment #2)
The problem is in function SHELL_execute in line 1714 and 1717.
lstrcpynW(wfileName, sei_tmp.lpFile,sizeof(wfileName)); } } else lstrcpynW(wfileName, sei_tmp.lpFile,sizeof(wfileName)); lpFile = wfileName;
ups... it should be
strcpyW(wfileName, sei_tmp.lpFile); } } else strcpyW(wfileName, sei_tmp.lpFile);
lpFile = wfileName;
code above is possible solution.
http://bugs.winehq.org/show_bug.cgi?id=12326
--- Comment #4 from Tefnet developers developers@tefnet.pl 2008-04-21 07:48:26 --- In Windows it is possible have ~2048chars in argument.
http://bugs.winehq.org/show_bug.cgi?id=12326
Mikolaj Zalewski mikolaj.zalewski@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |mikolaj.zalewski@gmail.com
--- Comment #5 from Mikolaj Zalewski mikolaj.zalewski@gmail.com 2008-06-27 16:20:39 --- The lstrcpynW are obviously incorrect - the last parameter should be the number of characters, not the number of bytes. Also, we should be probably using INTERNET_MAX_URL instead of MAX_PATH. The INTERNET_MAX_URL gives 2048 bytes for the path part of the URL.
http://bugs.winehq.org/show_bug.cgi?id=12326
--- Comment #6 from Tefnet developers developers@tefnet.pl 2008-06-28 01:39:26 --- (In reply to comment #5)
The lstrcpynW are obviously incorrect - the last parameter should be the number of characters, not the number of bytes.
Yes, I've posted correct patch a while ago.
Also, we should be probably using INTERNET_MAX_URL instead of MAX_PATH. The INTERNET_MAX_URL gives 2048 bytes for the path part of the URL.
The problem is that there are a lot of variables with MAX_PATH... I'm not sure which of those can be INTERNET_MAX_URL. For this bug I think that fixing length of wfileName would be enough.
http://bugs.winehq.org/show_bug.cgi?id=12326
--- Comment #7 from Austin English austinenglish@gmail.com 2008-12-29 10:54:26 --- Is this still an issue in current (1.1.11 or newer) wine?
http://bugs.winehq.org/show_bug.cgi?id=12326
Austin English austinenglish@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Keywords| |download
http://bugs.winehq.org/show_bug.cgi?id=12326
--- Comment #8 from Tefnet developers developers@tefnet.pl 2008-12-29 12:33:56 --- (In reply to comment #7)
Is this still an issue in current (1.1.11 or newer) wine?
actually it's even worse (which is strange?) than it was before... I get 11 lines (23 in 0.9.58) instead of 43...
The solution how to fix it is in this bug report (works for me for over 6 months) but I'm not sure if it's the right way to fix it and if it doesn't break anything else so probably Alexandre won't accept it...
http://bugs.winehq.org/show_bug.cgi?id=12326
--- Comment #9 from Austin English austinenglish@gmail.com 2008-12-29 12:57:06 --- (In reply to comment #8)
(In reply to comment #7)
Is this still an issue in current (1.1.11 or newer) wine?
actually it's even worse (which is strange?) than it was before... I get 11 lines (23 in 0.9.58) instead of 43...
The solution how to fix it is in this bug report (works for me for over 6 months) but I'm not sure if it's the right way to fix it and if it doesn't break anything else so probably Alexandre won't accept it...
A conformance test would be the best course of action.
http://bugs.winehq.org/show_bug.cgi?id=12326
Austin English austinenglish@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |NEW Ever Confirmed|0 |1
--- Comment #10 from Austin English austinenglish@gmail.com 2010-07-03 02:17:27 --- Still present in 1.2-rc6.
http://bugs.winehq.org/show_bug.cgi?id=12326
Austin English austinenglish@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Platform|All |Other OS/Version|All |other
--- Comment #11 from Austin English austinenglish@gmail.com 2012-02-23 15:19:47 CST --- Removing deprecated 'All' Platform/OS.
http://bugs.winehq.org/show_bug.cgi?id=12326
Bruno Jesus 00cpxxx@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Status|NEW |RESOLVED Resolution|--- |FIXED
--- Comment #12 from Bruno Jesus 00cpxxx@gmail.com --- Fixed long ago somewhere between wine 1.3.22 and 1.4.1.
https://bugs.winehq.org/show_bug.cgi?id=12326
Alexandre Julliard julliard@winehq.org changed:
What |Removed |Added ---------------------------------------------------------------------------- Status|RESOLVED |CLOSED
--- Comment #13 from Alexandre Julliard julliard@winehq.org --- Closing bugs fixed in 1.7.19.