[vlc-devel] [PATCH] win32: make sure we only load Windows DLLs from the system directories
Steve Lhomme
robux4 at videolabs.io
Wed Mar 8 15:22:34 CET 2017
---
modules/audio_output/directsound.c | 4 ++--
modules/codec/avcodec/d3d11va.c | 2 +-
modules/codec/avcodec/directx_va.c | 2 +-
modules/codec/avcodec/dxva2.c | 2 +-
modules/codec/dmo/dmo.c | 4 ++--
modules/codec/mft.c | 2 +-
modules/gui/qt/components/simple_preferences.cpp | 2 +-
modules/text_renderer/freetype/fonts/dwrite.cpp | 2 +-
modules/video_output/win32/common.c | 2 +-
modules/video_output/win32/direct3d11.c | 6 +++---
modules/video_output/win32/direct3d9.c | 4 ++--
modules/video_output/win32/directdraw.c | 4 ++--
modules/video_output/win32/win32touch.c | 2 +-
src/network/udp.c | 2 +-
src/text/url.c | 2 +-
15 files changed, 21 insertions(+), 21 deletions(-)
diff --git a/modules/audio_output/directsound.c b/modules/audio_output/directsound.c
index 967971a353..59672c1473 100644
--- a/modules/audio_output/directsound.c
+++ b/modules/audio_output/directsound.c
@@ -1043,7 +1043,7 @@ static int ReloadDirectXDevices( vlc_object_t *p_this, char const *psz_name,
(void) psz_name;
- HANDLE hdsound_dll = LoadLibrary(_T("DSOUND.DLL"));
+ HANDLE hdsound_dll = LoadLibraryEx(_T("DSOUND.DLL"), NULL, LOAD_LIBRARY_SEARCH_SYSTEM32);
if( hdsound_dll == NULL )
{
msg_Warn( p_this, "cannot open DSOUND.DLL" );
@@ -1078,7 +1078,7 @@ static int Open(vlc_object_t *obj)
{
audio_output_t *aout = (audio_output_t *)obj;
- HINSTANCE hdsound_dll = LoadLibrary(_T("DSOUND.DLL"));
+ HINSTANCE hdsound_dll = LoadLibraryEx(_T("DSOUND.DLL"), NULL, LOAD_LIBRARY_SEARCH_SYSTEM32);
if (hdsound_dll == NULL)
{
msg_Warn(aout, "cannot open DSOUND.DLL");
diff --git a/modules/codec/avcodec/d3d11va.c b/modules/codec/avcodec/d3d11va.c
index 4ef9ac80ea..4614d7e234 100644
--- a/modules/codec/avcodec/d3d11va.c
+++ b/modules/codec/avcodec/d3d11va.c
@@ -452,7 +452,7 @@ static int Open(vlc_va_t *va, AVCodecContext *ctx, enum PixelFormat pix_fmt,
return VLC_ENOMEM;
#if !defined(NDEBUG) && defined(HAVE_DXGIDEBUG_H)
- sys->dxgidebug_dll = LoadLibrary(TEXT("DXGIDEBUG.DLL"));
+ sys->dxgidebug_dll = LoadLibraryEx(TEXT("DXGIDEBUG.DLL"), NULL, LOAD_LIBRARY_SEARCH_SYSTEM32);
#endif
dx_sys = &sys->dx_sys;
diff --git a/modules/codec/avcodec/directx_va.c b/modules/codec/avcodec/directx_va.c
index 1c26edcd6e..21f264e025 100644
--- a/modules/codec/avcodec/directx_va.c
+++ b/modules/codec/avcodec/directx_va.c
@@ -451,7 +451,7 @@ int directx_va_Open(vlc_va_t *va, directx_sys_t *dx_sys,
if (b_dll) {
/* Load dll*/
- dx_sys->hdecoder_dll = LoadLibrary(dx_sys->psz_decoder_dll);
+ dx_sys->hdecoder_dll = LoadLibraryEx(dx_sys->psz_decoder_dll, NULL, LOAD_LIBRARY_SEARCH_SYSTEM32);
if (!dx_sys->hdecoder_dll) {
msg_Warn(va, "cannot load DirectX decoder DLL");
goto error;
diff --git a/modules/codec/avcodec/dxva2.c b/modules/codec/avcodec/dxva2.c
index d609ce07ae..0e451ed5ba 100644
--- a/modules/codec/avcodec/dxva2.c
+++ b/modules/codec/avcodec/dxva2.c
@@ -350,7 +350,7 @@ static int Open(vlc_va_t *va, AVCodecContext *ctx, enum PixelFormat pix_fmt,
return VLC_ENOMEM;
/* Load dll*/
- sys->hd3d9_dll = LoadLibrary(TEXT("D3D9.DLL"));
+ sys->hd3d9_dll = LoadLibraryEx(TEXT("D3D9.DLL"), NULL, LOAD_LIBRARY_SEARCH_SYSTEM32);
if (!sys->hd3d9_dll) {
msg_Warn(va, "cannot load d3d9.dll");
goto error;
diff --git a/modules/codec/dmo/dmo.c b/modules/codec/dmo/dmo.c
index ef40f3859f..fab32a9e50 100644
--- a/modules/codec/dmo/dmo.c
+++ b/modules/codec/dmo/dmo.c
@@ -680,7 +680,7 @@ static int LoadDMO( vlc_object_t *p_this, HINSTANCE *p_hmsdmo_dll,
}
/* Load msdmo DLL */
- *p_hmsdmo_dll = LoadLibrary( TEXT( "msdmo.dll" ) );
+ *p_hmsdmo_dll = LoadLibraryEx( TEXT( "msdmo.dll" ), NULL, LOAD_LIBRARY_SEARCH_SYSTEM32 );
if( *p_hmsdmo_dll == NULL )
{
msg_Dbg( p_this, "failed loading msdmo.dll" );
@@ -753,7 +753,7 @@ loader:
if( codecs_table[i_codec].i_fourcc == 0 )
return VLC_EGENERIC; /* Can't happen */
- *p_hmsdmo_dll = LoadLibrary( codecs_table[i_codec].psz_dll );
+ *p_hmsdmo_dll = LoadLibraryEx( codecs_table[i_codec].psz_dll, NULL, LOAD_LIBRARY_SEARCH_SYSTEM32 );
if( *p_hmsdmo_dll == NULL )
{
msg_Dbg( p_this, "failed loading '"PRIs"'",
diff --git a/modules/codec/mft.c b/modules/codec/mft.c
index fbd85d4bdc..696ae7db6a 100644
--- a/modules/codec/mft.c
+++ b/modules/codec/mft.c
@@ -1087,7 +1087,7 @@ static int FindMFT(decoder_t *p_dec)
static int LoadMFTLibrary(MFHandle *mf)
{
#if _WIN32_WINNT < _WIN32_WINNT_WIN7 || VLC_WINSTORE_APP
- mf->mfplat_dll = LoadLibrary(TEXT("mfplat.dll"));
+ mf->mfplat_dll = LoadLibraryEx(TEXT("mfplat.dll"), NULL, LOAD_LIBRARY_SEARCH_SYSTEM32);
if (!mf->mfplat_dll)
return VLC_EGENERIC;
diff --git a/modules/gui/qt/components/simple_preferences.cpp b/modules/gui/qt/components/simple_preferences.cpp
index b9e1d01a41..90b87216db 100644
--- a/modules/gui/qt/components/simple_preferences.cpp
+++ b/modules/gui/qt/components/simple_preferences.cpp
@@ -609,7 +609,7 @@ SPrefsPanel::SPrefsPanel( intf_thread_t *_p_intf, QWidget *_parent,
}
CONFIG_GENERIC( "avcodec-hw", StringList, ui.hwAccelLabel, hwAccelModule );
#ifdef _WIN32
- HINSTANCE hdxva2_dll = LoadLibrary(TEXT("DXVA2.DLL") );
+ HINSTANCE hdxva2_dll = LoadLibraryEx(TEXT("DXVA2.DLL"), NULL, LOAD_LIBRARY_SEARCH_SYSTEM32 );
if( !hdxva2_dll )
ui.hwAccelModule->setEnabled( false );
else
diff --git a/modules/text_renderer/freetype/fonts/dwrite.cpp b/modules/text_renderer/freetype/fonts/dwrite.cpp
index addc91a326..82e9f53d12 100644
--- a/modules/text_renderer/freetype/fonts/dwrite.cpp
+++ b/modules/text_renderer/freetype/fonts/dwrite.cpp
@@ -113,7 +113,7 @@ extern "C" int InitDWrite( filter_t *p_filter )
#if VLC_WINSTORE_APP
p_dw_sys = new dw_sys_t( p_dw_dll );
#else
- p_dw_dll = LoadLibrary( TEXT( "Dwrite.dll" ) );
+ p_dw_dll = LoadLibraryEx( TEXT( "Dwrite.dll" ), NULL, LOAD_LIBRARY_SEARCH_SYSTEM32 );
if( p_dw_dll == NULL )
return VLC_EGENERIC;
diff --git a/modules/video_output/win32/common.c b/modules/video_output/win32/common.c
index f2b97b88e3..e0d30a8b44 100644
--- a/modules/video_output/win32/common.c
+++ b/modules/video_output/win32/common.c
@@ -122,7 +122,7 @@ int CommonInit(vout_display_t *vd)
DisableScreensaver (vd);
#endif
#if !defined(NDEBUG) && defined(HAVE_DXGIDEBUG_H)
- sys->dxgidebug_dll = LoadLibrary(TEXT("DXGIDEBUG.DLL"));
+ sys->dxgidebug_dll = LoadLibraryEx(TEXT("DXGIDEBUG.DLL"), NULL, LOAD_LIBRARY_SEARCH_SYSTEM32);
#endif
return VLC_SUCCESS;
diff --git a/modules/video_output/win32/direct3d11.c b/modules/video_output/win32/direct3d11.c
index e7c9185609..f1cfdd1a3f 100644
--- a/modules/video_output/win32/direct3d11.c
+++ b/modules/video_output/win32/direct3d11.c
@@ -371,7 +371,7 @@ static int OpenHwnd(vout_display_t *vd)
if (!sys)
return VLC_ENOMEM;
- sys->hd3d11_dll = LoadLibrary(TEXT("D3D11.DLL"));
+ sys->hd3d11_dll = LoadLibraryEx(TEXT("D3D11.DLL"), NULL, LOAD_LIBRARY_SEARCH_SYSTEM32);
if (!sys->hd3d11_dll) {
msg_Warn(vd, "cannot load d3d11.dll, aborting");
return VLC_EGENERIC;
@@ -1307,7 +1307,7 @@ static HINSTANCE Direct3D11LoadShaderLibrary(void)
for (int i = 47; i > 41; --i) {
TCHAR filename[19];
_sntprintf(filename, 19, TEXT("D3DCOMPILER_%d.dll"), i);
- instance = LoadLibrary(filename);
+ instance = LoadLibraryEx(filename, NULL, LOAD_LIBRARY_SEARCH_SYSTEM32);
if (instance) break;
}
return instance;
@@ -1328,7 +1328,7 @@ static int Direct3D11Open(vout_display_t *vd, video_format_t *fmt)
HRESULT hr = S_OK;
# if !defined(NDEBUG)
- HINSTANCE sdklayer_dll = LoadLibrary(TEXT("d3d11_1sdklayers.dll"));
+ HINSTANCE sdklayer_dll = LoadLibraryEx(TEXT("d3d11_1sdklayers.dll"), NULL, LOAD_LIBRARY_SEARCH_SYSTEM32);
if (sdklayer_dll) {
creationFlags |= D3D11_CREATE_DEVICE_DEBUG;
FreeLibrary(sdklayer_dll);
diff --git a/modules/video_output/win32/direct3d9.c b/modules/video_output/win32/direct3d9.c
index f190e65147..a700a8c59d 100644
--- a/modules/video_output/win32/direct3d9.c
+++ b/modules/video_output/win32/direct3d9.c
@@ -631,7 +631,7 @@ static HINSTANCE Direct3D9LoadShaderLibrary(void)
for (int i = 43; i > 23; --i) {
TCHAR filename[16];
_sntprintf(filename, 16, TEXT("D3dx9_%d.dll"), i);
- instance = LoadLibrary(filename);
+ instance = LoadLibraryEx(filename, NULL, LOAD_LIBRARY_SEARCH_SYSTEM32);
if (instance)
break;
}
@@ -645,7 +645,7 @@ static int Direct3D9Create(vout_display_t *vd)
{
vout_display_sys_t *sys = vd->sys;
- sys->hd3d9_dll = LoadLibrary(TEXT("D3D9.DLL"));
+ sys->hd3d9_dll = LoadLibraryEx(TEXT("D3D9.DLL"), NULL, LOAD_LIBRARY_SEARCH_SYSTEM32);
if (!sys->hd3d9_dll) {
msg_Warn(vd, "cannot load d3d9.dll, aborting");
return VLC_EGENERIC;
diff --git a/modules/video_output/win32/directdraw.c b/modules/video_output/win32/directdraw.c
index d3c59310e3..fdbd51dd14 100644
--- a/modules/video_output/win32/directdraw.c
+++ b/modules/video_output/win32/directdraw.c
@@ -205,7 +205,7 @@ static int Open(vlc_object_t *object)
return VLC_ENOMEM;
/* Load direct draw DLL */
- sys->hddraw_dll = LoadLibrary(_T("DDRAW.DLL"));
+ sys->hddraw_dll = LoadLibraryEx(_T("DDRAW.DLL"), NULL, LOAD_LIBRARY_SEARCH_SYSTEM32);
if (!sys->hddraw_dll) {
msg_Warn(vd, "DirectXInitDDraw failed loading ddraw.dll");
free(sys);
@@ -1494,7 +1494,7 @@ static int FindDevicesCallback(vlc_object_t *object, const char *name,
ctx.count = 1;
/* Load direct draw DLL */
- HINSTANCE hddraw_dll = LoadLibrary(_T("DDRAW.DLL"));
+ HINSTANCE hddraw_dll = LoadLibraryEx(_T("DDRAW.DLL"), NULL, LOAD_LIBRARY_SEARCH_SYSTEM32);
if (hddraw_dll != NULL)
{
/* Enumerate displays */
diff --git a/modules/video_output/win32/win32touch.c b/modules/video_output/win32/win32touch.c
index 0e0846ae45..67ce0d7906 100644
--- a/modules/video_output/win32/win32touch.c
+++ b/modules/video_output/win32/win32touch.c
@@ -206,7 +206,7 @@ BOOL InitGestures( HWND hwnd, win32_gesture_sys_t **pp_gesture )
return FALSE;
}
- HINSTANCE h_user32_dll = LoadLibrary(TEXT("user32.dll"));
+ HINSTANCE h_user32_dll = LoadLibraryEx(TEXT("user32.dll"), NULL, LOAD_LIBRARY_SEARCH_SYSTEM32);
if( !h_user32_dll )
{
*pp_gesture = NULL;
diff --git a/src/network/udp.c b/src/network/udp.c
index d098fb1425..3467785bf1 100644
--- a/src/network/udp.c
+++ b/src/network/udp.c
@@ -105,7 +105,7 @@ static int net_SetupDgramSocket (vlc_object_t *p_obj, int fd,
* receive buffer if that isn't present
*/
#if (_WIN32_WINNT < _WIN32_WINNT_WIN8)
- HINSTANCE h_Network = LoadLibrary(TEXT("Windows.Networking.dll"));
+ HINSTANCE h_Network = LoadLibraryEx(TEXT("Windows.Networking.dll"), NULL, LOAD_LIBRARY_SEARCH_SYSTEM32);
if( (h_Network == NULL) ||
(GetProcAddress( h_Network, "SetSocketMediaStreamingMode" ) == NULL ) )
{
diff --git a/src/text/url.c b/src/text/url.c
index 1b602b599e..d15f0a6660 100644
--- a/src/text/url.c
+++ b/src/text/url.c
@@ -837,7 +837,7 @@ char *vlc_uri_fixup(const char *str)
# define IDN_ALLOW_UNASSIGNED 0x01
static int IdnToAscii(DWORD flags, LPCWSTR str, int len, LPWSTR buf, int size)
{
- HMODULE h = LoadLibrary(_T("Normaliz.dll"));
+ HMODULE h = LoadLibraryEx(_T("Normaliz.dll"), NULL, LOAD_LIBRARY_SEARCH_SYSTEM32);
if (h == NULL)
{
errno = ENOSYS;
--
2.11.1
More information about the vlc-devel
mailing list