[Bug 51209] New: Regression: Wine-mono installers in the parent folder of build trees can not be found

WineHQ Bugzilla wine-bugs at winehq.org
Tue Jun 1 21:29:32 CDT 2021


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

            Bug ID: 51209
           Summary: Regression: Wine-mono installers in the parent folder
                    of build trees can not be found
           Product: Wine
           Version: 6.9
          Hardware: x86-64
                OS: Linux
            Status: NEW
          Severity: normal
          Priority: P2
         Component: -unknown
          Assignee: wine-bugs at winehq.org
          Reporter: zzhang at codeweavers.com
      Distribution: ---

~$ sha256sum ~/src/mono/wine-mono-6.1.1-x86.msi 
ac3b14beafde34b8482287e597000113dc06a915f32c9fd06c77eb819079e38b 
/home/eric/src/mono/wine-mono-6.1.1-x86.msi

~$ ls -l ~/src/wine/mono 
lrwxrwxrwx 1 eric eric 7 Nov  4  2020 /home/eric/src/wine/mono -> ../mono

The build tree is in ~/src/wine/win32-build

WINEDEBUG=+file bad log
0064:trace:file:GetFileAttributesW
L"\\\\?\\Z:\\home\\eric\\src\\wine\\win32-build\\..\\mono\\wine-mono-6.1.1-x86.msi"
0064:trace:file:RtlDosPathNameToNtPathName_U_WithStatus
(L"\\\\?\\Z:\\home\\eric\\src\\wine\\win32-build\\..\\mono\\wine-mono-6.1.1-x86.msi",0031FBD0,00000000,00000000)
0064:trace:file:nt_to_unix_file_name
L"home\\eric\\src\\wine\\win32-build\\..\\mono\\wine-mono-6.1.1-x86.msi" not
found in /home/eric/.wine/dosdevices/z:€~°)€~0)€~€~
€~°Æ~Ç~@Ç~ð)€~P€~p)€~€Æ~ÀÉ~ðÉ~É~ Ê~PÊ~€Ê~°Ê~àÊ~@Ë~pË~
Ë~Ë~Í~ÀÍ~Ð)€~°×~Ø~ Ø~ÐØ~
0064:warn:file:NtQueryAttributesFile
L"\\??\\Z:\\home\\eric\\src\\wine\\win32-build\\..\\mono\\wine-mono-6.1.1-x86.msi"
not found (c0000033)

WINEDEBUG=+file good log
0064:trace:file:GetFileAttributesW
L"\\\\?\\Z:\\home\\eric\\src\\wine\\win32-build\\..\\mono\\wine-mono-6.1.1-x86.msi"
0064:trace:file:RtlDosPathNameToNtPathName_U_WithStatus
(L"\\\\?\\Z:\\home\\eric\\src\\wine\\win32-build\\..\\mono\\wine-mono-6.1.1-x86.msi",0031FBD0,00000000,00000000)
0064:trace:file:nt_to_unix_file_name
L"\\??\\Z:\\home\\eric\\src\\wine\\win32-build\\..\\mono\\wine-mono-6.1.1-x86.msi"
->
"/home/eric/.wine/dosdevices/z:/home/eric/src/wine/win32-build/../mono/wine-mono-6.1.1-x86.msi"

A bisect points to
405666b736f7e471e301f051cfbe68bcbef7e0f6 is the first bad commit
commit 405666b736f7e471e301f051cfbe68bcbef7e0f6
Author: Alexandre Julliard <julliard at winehq.org>
Date:   Tue Apr 13 12:55:59 2021 +0200

    ntdll: Reject NT path names that are not in canonical form.

    Signed-off-by: Alexandre Julliard <julliard at winehq.org>

 dlls/ntdll/tests/path.c | 92 +++++++++++++++++++++++++++++++++++++++++++++
 dlls/ntdll/unix/file.c  | 99 ++++++++++++++++++++++++++-----------------------
 2 files changed, 144 insertions(+), 47 deletions(-)

However, 405666b is correct. The root cause is in appwiz.cpl/addon.c
install_from_default_dir() and install_from_dos_file(), which constructs a path
starting with "\\?\" and contains "..". According to 405666b and
GetFileAttributesExW() tests (also applies for GetFileAttributesW()),
"\\\\?\\Z:\\home\\eric\\src\\wine\\win32-build\\..\\mono\\wine-mono-6.1.1-x86.msi"
should be canonicalized before passing it to GetFileAttributesW().

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