From 75e1a495ecb89461b3a3af2eb084112d9caac2e0 Mon Sep 17 00:00:00 2001 From: Tom Sepez Date: Wed, 2 Mar 2016 17:40:00 -0800 Subject: Don't load GDI+ if GDI is disabled. This is to fix an issue when win32k lockdown is enabled on PDF content which can cause application crashes. If GDI is disabled then there's little benefit to loading the GDI+ library. BUG=583038 Patch by forshaw@ R=tsepez@chromium.org Review URL: https://codereview.chromium.org/1748163006 . --- core/src/fxge/win32/fx_win32_device.cpp | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) (limited to 'core/src') diff --git a/core/src/fxge/win32/fx_win32_device.cpp b/core/src/fxge/win32/fx_win32_device.cpp index e9fee082b9..99b5540774 100644 --- a/core/src/fxge/win32/fx_win32_device.cpp +++ b/core/src/fxge/win32/fx_win32_device.cpp @@ -438,14 +438,20 @@ FX_BOOL CFX_Win32FontInfo::GetFontCharset(void* hFont, int& charset) { charset = tm.tmCharSet; return TRUE; } -IFX_SystemFontInfo* IFX_SystemFontInfo::CreateDefault(const char** pUnused) { +static FX_BOOL IsGDIEnabled() { + // If GDI is disabled then GetDC for the desktop will fail. HDC hdc = ::GetDC(NULL); if (hdc) { ::ReleaseDC(NULL, hdc); + return TRUE; + } + return FALSE; +} +IFX_SystemFontInfo* IFX_SystemFontInfo::CreateDefault(const char** pUnused) { + if (IsGDIEnabled()) { return new CFX_Win32FontInfo; } - // If GDI is disabled then GetDC for the desktop will fail. Select the - // fallback font information class if GDI is disabled. + // Select the fallback font information class if GDI is disabled. CFX_Win32FallbackFontInfo* pInfoFallback = new CFX_Win32FallbackFontInfo; // Construct the font path manually, SHGetKnownFolderPath won't work under // a restrictive sandbox. @@ -464,7 +470,9 @@ void CFX_GEModule::InitPlatform() { ver.dwOSVersionInfoSize = sizeof(ver); GetVersionEx(&ver); pPlatformData->m_bHalfTone = ver.dwMajorVersion >= 5; - pPlatformData->m_GdiplusExt.Load(); + if (IsGDIEnabled()) { + pPlatformData->m_GdiplusExt.Load(); + } m_pPlatformData = pPlatformData; m_pFontMgr->SetSystemFontInfo(IFX_SystemFontInfo::CreateDefault(nullptr)); } -- cgit v1.2.3