[Bug 27248] cannot unpack *.crx (extensions or themes) in Chrome unless --single-process is used

wine-bugs at winehq.org wine-bugs at winehq.org
Fri Dec 23 01:09:13 CST 2011


http://bugs.winehq.org/show_bug.cgi?id=27248

fracting <fracting at gmail.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
          Component|-unknown                    |kernel32

--- Comment #5 from fracting <fracting at gmail.com> 2011-12-23 01:09:13 CST ---
In chrome/browser/extensions/sandboxed_extension_unpacker.cc, the Chrome
extension unpacker start unpack a crx file with this function: 

SandboxedExtensionUnpacker::Start()

This functioin use NormalizeFilePath to get the normalized path of the
extension crx file. If NormalizeFilePath return FALSE, the unpacking will fail.
--- snip ---
if (!file_util::NormalizeFilePath(temp_crx_path, &link_free_crx_path)) {
      LOG(ERROR) << "Could not get the normalized path of "
                 << temp_crx_path.value();
--- snip ---

In base/file_util_win.cc:
In NormalizeFilePath():
--- snip ---
if (!NormalizeToNativeFilePath(path, &mapped_file))
    return false
--- snip ---

In NormalizeToNativeFilePath():
--- snip ---
if (::GetMappedFileNameW(cp, file_view, mapped_file_path, kMaxPathLength)) {
    *nt_path = FilePath(mapped_file_path);
    success = true;
  }
...
return success;
--- snip ---

Since wine's GetMappedFileNameW is forwarding to K32GetMappedFileNameW, which
is a stub and always return 0, NormalizeFilePath will always return FALSE.
--- snip ---
DWORD WINAPI K32GetMappedFileNameW(HANDLE process, LPVOID lpv, LPWSTR
file_name, DWORD size)
{
    FIXME_(file)("(%p, %p, %p, %d): stub\n", process, lpv, file_name, size);

    if (file_name && size)
        file_name[0] = '\0';

    return 0;
}
--- snip ---

So, this bug needs K32GetMappedFileNameW to be implemented.

GetMappedFileNameW is implemented in native psapi.dll, but there is no
"psapi.dll" component for wine bugzilla, so I'm setting the component to
kernel32, which is where K32GetMappedFileNameW placed.

-- 
Configure bugmail: http://bugs.winehq.org/userprefs.cgi?tab=email
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