Bug 1239690 - Add vorbis.acm version 0.0.3.6 to the DLL blocklist. r=aklotz a=ritu
authorChris Pearce <cpearce@mozilla.com>
Fri, 23 Sep 2016 14:18:04 +1200
changeset 428768 a049f0f0b85370df2cf963019611a3f6742dbbf2
parent 428767 bccda1c9035cac3ab92b2484a1989ad4445f3d74
child 428769 d1699ef21941da9667d6c92236710291652b7199
push id33416
push userpaul@paul.cx
push dateMon, 24 Oct 2016 16:26:20 +0000
reviewersaklotz, ritu
bugs1239690
milestone50.0
Bug 1239690 - Add vorbis.acm version 0.0.3.6 to the DLL blocklist. r=aklotz a=ritu 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;