Bug 1239690 - Add vorbis.acm version 0.0.3.6 to the DLL blocklist. r?aklotz draft
authorChris Pearce <cpearce@mozilla.com>
Fri, 23 Sep 2016 14:18:04 +1200
changeset 416786 c8f55afbf2336fe9da483a38a5129f8dbef357b4
parent 416562 f0e6cc6360213ba21fd98c887b55fce5c680df68
child 531954 579768ed6a4f825f8b3a660f393b88b34b9fc3e1
push id30252
push usercpearce@mozilla.com
push dateFri, 23 Sep 2016 02:21:01 +0000
reviewersaklotz
bugs1239690
milestone52.0a1
Bug 1239690 - Add vorbis.acm version 0.0.3.6 to the DLL blocklist. r?aklotz Vorbis.acm seems to be somehow injecting itself into our process, and also the Flash process, and intercepting the system audio APIs. Version 0.0.3.6 seems to be crashing, and it's an obsolete version, so we should block it to stop it crashing us. MozReview-Commit-ID: Hk93kG0Ly4Q
mozglue/build/WindowsDllBlocklist.cpp
--- a/mozglue/build/WindowsDllBlocklist.cpp
+++ b/mozglue/build/WindowsDllBlocklist.cpp
@@ -74,39 +74,39 @@ struct DllBlockInfo {
 
 static DllBlockInfo sWindowsDllBlocklist[] = {
   // EXAMPLE:
   // { "uxtheme.dll", ALL_VERSIONS },
   // { "uxtheme.dll", 0x0000123400000000ULL },
   // The DLL name must be in lowercase!
   // The version field is a maximum, that is, we block anything that is
   // less-than or equal to that version.
-  
+
   // NPFFAddon - Known malware
   { "npffaddon.dll", ALL_VERSIONS},
 
   // AVG 8 - Antivirus vendor AVG, old version, plugin already blocklisted
   {"avgrsstx.dll", MAKE_VERSION(8,5,0,401)},
-  
+
   // calc.dll - Suspected malware
   {"calc.dll", MAKE_VERSION(1,0,0,1)},
 
   // hook.dll - Suspected malware
   {"hook.dll", ALL_VERSIONS},
-  
+
   // GoogleDesktopNetwork3.dll - Extremely old, unversioned instances
   // of this DLL cause crashes
   {"googledesktopnetwork3.dll", UNVERSIONED},
 
   // rdolib.dll - Suspected malware
   {"rdolib.dll", MAKE_VERSION(6,0,88,4)},
 
   // fgjk4wvb.dll - Suspected malware
   {"fgjk4wvb.dll", MAKE_VERSION(8,8,8,8)},
-  
+
   // radhslib.dll - Naomi internet filter - unmaintained since 2006
   {"radhslib.dll", UNVERSIONED},
 
   // Music download filter for vkontakte.ru - old instances
   // of this DLL cause crashes
   {"vksaver.dll", MAKE_VERSION(2,2,2,0)},
 
   // Topcrash in Firefox 4.0b1
@@ -214,16 +214,19 @@ static DllBlockInfo sWindowsDllBlocklist
   { "opls64.dll", ALL_VERSIONS },
   { "pmls.dll", ALL_VERSIONS },
   { "pmls64.dll", ALL_VERSIONS },
   { "prls.dll", ALL_VERSIONS },
   { "prls64.dll", ALL_VERSIONS },
   { "rlls.dll", ALL_VERSIONS },
   { "rlls64.dll", ALL_VERSIONS },
 
+  // Vorbis DirectShow filters, bug 1239690.
+  { "vorbis.acm", MAKE_VERSION(0, 0, 3, 6) },
+
   { nullptr, 0 }
 };
 
 #ifndef STATUS_DLL_NOT_FOUND
 #define STATUS_DLL_NOT_FOUND ((DWORD)0xC0000135L)
 #endif
 
 // define this for very verbose dll load debug spew
@@ -392,29 +395,29 @@ public:
     AutoCriticalSection lock(&sLock);
     mPreviousDllName = (*sThreadMap)[currentThreadId];
 
     // If there is a DLL currently being loaded and it has the same name
     // as the current attempt, we're re-entering.
     mReentered = mPreviousDllName && !stricmp(mPreviousDllName, dllName);
     (*sThreadMap)[currentThreadId] = dllName;
   }
-    
+
   ~ReentrancySentinel()
   {
     DWORD currentThreadId = GetCurrentThreadId();
     AutoCriticalSection lock(&sLock);
     (*sThreadMap)[currentThreadId] = mPreviousDllName;
   }
 
   bool BailOut() const
   {
     return mReentered;
   };
-    
+
   static void InitializeStatics()
   {
     InitializeCriticalSection(&sLock);
     sThreadMap = new std::map<DWORD, const char*>;
   }
 
 private:
   static std::map<DWORD, const char*>* sThreadMap;