Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(452)

Side by Side Diff: core/fpdfapi/fpdf_edit/fpdf_edit_doc.cpp

Issue 1829013002: Added bounds checking to GetNameFromTT to handle corrupt files. (Closed) Base URL: https://pdfium.googlesource.com/pdfium.git@master
Patch Set: Fixed nits. Created 4 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | core/fxge/ge/fx_ge_fontmap.cpp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 PDFium Authors. All rights reserved. 1 // Copyright 2014 PDFium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com 5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
6 6
7 #include <limits.h> 7 #include <limits.h>
8 8
9 #include "core/fpdfapi/fpdf_page/include/cpdf_page.h" 9 #include "core/fpdfapi/fpdf_page/include/cpdf_page.h"
10 #include "core/fpdfapi/fpdf_page/pageint.h" 10 #include "core/fpdfapi/fpdf_page/pageint.h"
(...skipping 214 matching lines...) Expand 10 before | Expand all | Expand 10 after
225 } 225 }
226 FXSYS_strcpy(lfa.lfFaceName, face.c_str()); 226 FXSYS_strcpy(lfa.lfFaceName, face.c_str());
227 return AddWindowsFont(&lfa, bVert, bTranslateName); 227 return AddWindowsFont(&lfa, bVert, bTranslateName);
228 } 228 }
229 CFX_ByteString _FPDF_GetPSNameFromTT(HDC hDC) { 229 CFX_ByteString _FPDF_GetPSNameFromTT(HDC hDC) {
230 CFX_ByteString result; 230 CFX_ByteString result;
231 DWORD size = ::GetFontData(hDC, 'eman', 0, NULL, 0); 231 DWORD size = ::GetFontData(hDC, 'eman', 0, NULL, 0);
232 if (size != GDI_ERROR) { 232 if (size != GDI_ERROR) {
233 LPBYTE buffer = FX_Alloc(BYTE, size); 233 LPBYTE buffer = FX_Alloc(BYTE, size);
234 ::GetFontData(hDC, 'eman', 0, buffer, size); 234 ::GetFontData(hDC, 'eman', 0, buffer, size);
235 result = GetNameFromTT(buffer, 6); 235 result = GetNameFromTT(buffer, size, 6);
236 FX_Free(buffer); 236 FX_Free(buffer);
237 } 237 }
238 return result; 238 return result;
239 } 239 }
240 CPDF_Font* CPDF_Document::AddWindowsFont(LOGFONTA* pLogFont, 240 CPDF_Font* CPDF_Document::AddWindowsFont(LOGFONTA* pLogFont,
241 FX_BOOL bVert, 241 FX_BOOL bVert,
242 FX_BOOL bTranslateName) { 242 FX_BOOL bTranslateName) {
243 pLogFont->lfHeight = -1000; 243 pLogFont->lfHeight = -1000;
244 pLogFont->lfWidth = 0; 244 pLogFont->lfWidth = 0;
245 HGDIOBJ hFont = CreateFontIndirectA(pLogFont); 245 HGDIOBJ hFont = CreateFontIndirectA(pLogFont);
(...skipping 902 matching lines...) Expand 10 before | Expand all | Expand 10 after
1148 void FPDFAPI_FlatPageAttr(CPDF_Dictionary* pPageDict, 1148 void FPDFAPI_FlatPageAttr(CPDF_Dictionary* pPageDict,
1149 const CFX_ByteStringC& name) { 1149 const CFX_ByteStringC& name) {
1150 if (pPageDict->KeyExist(name)) { 1150 if (pPageDict->KeyExist(name)) {
1151 return; 1151 return;
1152 } 1152 }
1153 CPDF_Object* pObj = FPDFAPI_GetPageAttr(pPageDict, name); 1153 CPDF_Object* pObj = FPDFAPI_GetPageAttr(pPageDict, name);
1154 if (pObj) { 1154 if (pObj) {
1155 pPageDict->SetAt(name, pObj->Clone()); 1155 pPageDict->SetAt(name, pObj->Clone());
1156 } 1156 }
1157 } 1157 }
OLDNEW
« no previous file with comments | « no previous file | core/fxge/ge/fx_ge_fontmap.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698