From d46d67a41d5020cd3312008dad0d23f20f3e5468 Mon Sep 17 00:00:00 2001 From: Masatoshi Kimura Date: Sat, 16 Dec 2017 00:22:58 +0900 Subject: [PATCH] Bug 685236 - Stop using GetNativePath in nsPluginDirWin.cpp. r=jimm MozReview-Commit-ID: 2eFSKhCEk48 --HG-- extra : source : eb4f7d7b7bce49e295fc37ab000b3c542ee2a15c extra : intermediate-source : d175a56b5aaaa54002212f6b73cbd3a49bad7619 --- dom/plugins/base/nsPluginsDirWin.cpp | 38 +++++++++++----------------- 1 file changed, 15 insertions(+), 23 deletions(-) diff --git a/dom/plugins/base/nsPluginsDirWin.cpp b/dom/plugins/base/nsPluginsDirWin.cpp index dff5e9d5a1dc..56ee82c94f80 100644 --- a/dom/plugins/base/nsPluginsDirWin.cpp +++ b/dom/plugins/base/nsPluginsDirWin.cpp @@ -237,33 +237,25 @@ static bool CanLoadPlugin(char16ptr_t aBinaryPath) // The file name must be in the form "np*.dll" bool nsPluginsDir::IsPluginFile(nsIFile* file) { - nsAutoCString path; - if (NS_FAILED(file->GetNativePath(path))) + nsAutoString path; + if (NS_FAILED(file->GetPath(path))) return false; - const char *cPath = path.get(); - // this is most likely a path, so skip to the filename - const char* filename = PL_strrchr(cPath, '\\'); - if (filename) - ++filename; - else - filename = cPath; + auto filename = Substring(path, path.RFindChar('\\') + 1); + // The file name must have at least one character between "np" and ".dll". + if (filename.Length() < 7) { + return false; + } - char* extension = PL_strrchr(filename, '.'); - if (extension) - ++extension; - - uint32_t fullLength = strlen(filename); - uint32_t extLength = extension ? strlen(extension) : 0; - if (fullLength >= 7 && extLength == 3) { - if (!PL_strncasecmp(filename, "np", 2) && !PL_strncasecmp(extension, "dll", 3)) { - // don't load OJI-based Java plugins - if (!PL_strncasecmp(filename, "npoji", 5) || - !PL_strncasecmp(filename, "npjava", 6)) - return false; - return true; - } + ToLowerCase(filename); + if (StringBeginsWith(filename, NS_LITERAL_STRING("np")) && + StringEndsWith(filename, NS_LITERAL_STRING(".dll"))) { + // don't load OJI-based Java plugins + if (StringBeginsWith(filename, NS_LITERAL_STRING("npoji")) || + StringBeginsWith(filename, NS_LITERAL_STRING("npjava"))) + return false; + return true; } return false;