Issue #1467 - Part 3: Use UTF-8 file paths for NSS-SQL database.

This commit is contained in:
wolfbeast 2020-03-17 20:14:22 +01:00 committed by Roy Tam
commit ff29b77edc

View file

@ -1706,16 +1706,25 @@ GetNSSProfilePath(nsAutoCString& aProfilePath)
}
#if defined(XP_WIN)
// Native path will drop Unicode characters that cannot be mapped to system's
// codepage, using short (canonical) path as workaround.
nsCOMPtr<nsILocalFileWin> profileFileWin(do_QueryInterface(profileFile));
if (!profileFileWin) {
MOZ_LOG(gPIPNSSLog, LogLevel::Error,
("Could not get nsILocalFileWin for profile directory.\n"));
return NS_ERROR_FAILURE;
}
rv = profileFileWin->GetNativeCanonicalPath(aProfilePath);
#ifdef NSS_SQLSTORE
// SQLite always takes UTF-8 file paths regardless of the current system
// code page.
nsAutoString u16ProfilePath;
rv = profileFileWin->GetCanonicalPath(u16ProfilePath);
CopyUTF16toUTF8(u16ProfilePath, aProfilePath);
#else
// Native path will drop Unicode characters that cannot be mapped to system's
// codepage, using short (canonical) path as workaround.
rv = profileFileWin->GetNativeCanonicalPath(aProfilePath);
#endif
#else
// On non-Windows, just get the native profile path.
rv = profileFile->GetNativePath(aProfilePath);
#endif