diff --git a/mozilla/modules/plugin/base/src/ns4xPlugin.cpp b/mozilla/modules/plugin/base/src/ns4xPlugin.cpp index ea2a6bca2c4..16a7051ba31 100644 --- a/mozilla/modules/plugin/base/src/ns4xPlugin.cpp +++ b/mozilla/modules/plugin/base/src/ns4xPlugin.cpp @@ -1120,6 +1120,21 @@ _geturl(NPP npp, const char* relativeURL, const char* target) ("NPN_GetURL: npp=%p, target=%s, url=%s\n", (void *)npp, target, relativeURL)); + // Block Adobe Acrobat from loading URLs that are not http:, https:, + // or ftp: URLs if the given target is null. + if (target == nsnull && relativeURL && + (strncmp(relativeURL, "http:", 5) != 0) && + (strncmp(relativeURL, "https:", 6) != 0) && + (strncmp(relativeURL, "ftp:", 4) != 0)) { + ns4xPluginInstance *inst = (ns4xPluginInstance *) npp->ndata; + + const char *name = nsPluginHostImpl::GetPluginName(inst); + + if (name && strstr(name, "Adobe") && strstr(name, "Acrobat")) { + return NPERR_NO_ERROR; + } + } + return MakeNew4xStreamInternal (npp, relativeURL, target, eNPPStreamTypeInternal_Get); } diff --git a/mozilla/modules/plugin/base/src/nsPluginHostImpl.cpp b/mozilla/modules/plugin/base/src/nsPluginHostImpl.cpp index 73f78061c51..42560243950 100644 --- a/mozilla/modules/plugin/base/src/nsPluginHostImpl.cpp +++ b/mozilla/modules/plugin/base/src/nsPluginHostImpl.cpp @@ -2571,6 +2571,20 @@ nsPluginHostImpl::nsPluginHostImpl() mCachedPlugins = nsnull; } +// static +const char * +nsPluginHostImpl::GetPluginName(nsIPluginInstance *aPluginInstance) +{ + nsActivePlugin *plugin = + gActivePluginList ? gActivePluginList->find(aPluginInstance) : nsnull; + + if (plugin && plugin->mPluginTag) { + return plugin->mPluginTag->mName; + } + + return nsnull; +} + //////////////////////////////////////////////////////////////////////// nsPluginHostImpl::~nsPluginHostImpl() diff --git a/mozilla/modules/plugin/base/src/nsPluginHostImpl.h b/mozilla/modules/plugin/base/src/nsPluginHostImpl.h index e101f7b685f..eb164960d2a 100644 --- a/mozilla/modules/plugin/base/src/nsPluginHostImpl.h +++ b/mozilla/modules/plugin/base/src/nsPluginHostImpl.h @@ -195,6 +195,8 @@ public: NS_DECL_ISUPPORTS + static const char *GetPluginName(nsIPluginInstance *aPluginInstance); + //nsIPluginManager interface - the main interface nsIPlugin communicates to NS_IMETHOD