summaryrefslogtreecommitdiff
path: root/core
AgeCommit message (Collapse)Author
2016-05-13Merge to M51: Fix a potential UAF with FPDFAvail_IsLinearized().Lei Zhang
Cache the linearized result rather than recalculating it. BUG=608778 TBR=weili@chromium.org Review-Url: https://codereview.chromium.org/1968743002 (cherry picked from commit 35c2100a5f6a466635bf99b4e7117d23aeb54d2c) Review URL: https://codereview.chromium.org/1977903003 .
2016-04-26Merge to M51: Add a missing initialisation for CPDF_ContentMarkItem.Oliver Chang
R=dsinclair@chromium.org TBR=dsinclair@chromium.org BUG=chromium:605491 Original Review URL: https://codereview.chromium.org/1910143002 (cherry picked from commit 0f6425fff33e4096b4e1fbfb954edae1349c0145) Review URL: https://codereview.chromium.org/1921003005 .
2016-04-18Merge to M51: Prevent a potential OOB read in TranslateImageLine.Oliver Chang
Fixes a potential mismatch of |m_nComponents| between CPDF_DIBSource and its CPDF_ColorSpace, from code attempting to recover from a failed decoder initialisation in CPDF_DIBSource::CreateDecoder. BUG=chromium:603518 TBR=tsepez@chromium.org Original Review URL: https://codereview.chromium.org/1892143003 (cherry picked from commit 7cf555202756c51ce2b5ae18efdeb6e1bb6a9e41) Review URL: https://codereview.chromium.org/1897953002 .
2016-04-18Merge to M51: Prevent an OOB access in CPDF_DIBSource::TranslateScanline24bppOliver Chang
if |m_Family| was RGB, the code assumed there were 3 components, which may not be the case. BUG=chromium:602046 TBR=tsepez@chromium.org Original Review URL: https://codereview.chromium.org/1877033003 (cherry picked from commit 6a3521f049b35c801f124f1573718021a785ff6b) Review URL: https://codereview.chromium.org/1895033004 .
2016-04-18Merge to M51: Fix integer issues leading to out of bounds access in ↵Oliver Chang
fx_ge_text.cpp. - Using |-skew| to get positive index, which doesn't work when skew is INT_MIN - Incorrect logic when determining when to use |-skew| as an index. TBR=tsepez@chromium.org BUG=chromium:601362 Original Review URL: https://codereview.chromium.org/1875673004 (cherry picked from commit b8627c9d13884d48943d8a7a5381eaf0bb2c08d9) Review URL: https://codereview.chromium.org/1898853002 .
2016-04-05Make StringData a templated class.tsepez
First step in making the same changes to CFX_WideString that we just made to CFX_ByteString. Review URL: https://codereview.chromium.org/1844073003
2016-04-05Make down-conversion explicit from CFX_Widetring to CFX_WideStringC.tsepez
Companion to https://codereview.chromium.org/1853233002 BUG= Review URL: https://codereview.chromium.org/1857073002
2016-04-05Remove core/include/fpdfdoc/fpdf_vt.hdsinclair
This CL removes the core/include/fpdfdoc/fpdf_vt.h file. The IPDF_VariableText class was removed in favour of the only concrete class of CPD_VariableText. CPVT_Provider was moved to CPDF_VariableText::Provider and CPDF_VariableText_Iterator was moved to CPDF_VariableText::Iterator. The IFX_Edit_FontMap interface was merged into the IPVT_FontMap interface so there is only one. Other classes were split out as needed in order to keep things compiling. BUG=pdfium:468 Review URL: https://codereview.chromium.org/1860063002
2016-04-05Rename GetCStr and GetPtr to match CFX_ByteString.dsinclair
This CL updates CFX_ByteStringC to use the more common c_str and raw_str instead of GetCStr and GetPtr. Review URL: https://codereview.chromium.org/1857713003
2016-04-04Make down-conversion explicit from CFX_ByteString to CFX_ByteStringC.tsepez
Having this happen implicitly can be dangerous because the lifetime has to be considered; we should have caught the "red bots" in https://codereview.chromium.org/1847333004/#ps60001 at compile time. Review URL: https://codereview.chromium.org/1853233002
2016-04-04Make IPDF_VariableText_{Provider,Iterator} inner classes.dsinclair
This CL moves the IPDF_VariableText_Provider and IPDF_VariableText_Iterator classes to be nested sub-classes of IPDF_VariableText. BUG=pdfium:455 Review URL: https://codereview.chromium.org/1855403002
2016-04-04flip sense of alpha maskscaryclark
One bit bitmaps may be black and white or may be alpha masks. Treat alpha masks as transparent/opaque instead of black/white. R=dsinclair@chromium.org Review URL: https://codereview.chromium.org/1858613003
2016-04-04Support the device font cachecaryclark
Reuse the Skia typeface on sucessive text draw calls. This reduces the SKP size by 100x for some documents. Note that this does not use a smart pointer for the Skia typeface object. The downside of doing so is that it requires all clients that include fx_font.h to also have access to Skia. In this specific case, it is preferable to have a forward declared class to isolate Skia from the rest of PDFium. R=dsinclair,tsepez@chromium.org Review URL: https://codereview.chromium.org/1837113004
2016-04-04Remove _FXBSTR* and calls to FX_BSTRC.dsinclair
This CL removes _FXBSTR and changes FPDF_AbbrPair to hold two FX_CHAR pointers. The two remaining uses of FX_BSTRC() were in unused FDE_CSS defines which have been removed. BUG=pdfium:151 Review URL: https://codereview.chromium.org/1847333004
2016-04-01Re-land "Use CFX_RetainPtr to ref count CFX_ByteString""tsepez
This reverts commit b33dfdf68bafa30e90a65fb71ff6b343202e0561. BUG= Review URL: https://codereview.chromium.org/1848993002
2016-04-01Remove CFX_{Byte,Wide}String::Equal in favor of "==".tsepez
Makes the code slightly cleaner. Review URL: https://codereview.chromium.org/1846083002
2016-03-31Split core/include/fpdfdoc/fpdf_ap.hdsinclair
This CL splits the fpdf_ap.h file apart into individual pieces and moves the implementations to their own CPP files. Review URL: https://codereview.chromium.org/1840413002
2016-03-31Re-enable all the windows warnings except 4267weili
The code is changed or had been changed to no longer generate these warnings. It is safe to re-enabled these warnings. In this code change, we fixed some code which generates warnings 4018 (signed/unsigned mismatch) and 4146 (unary minus operator applied to unsigned type, result still unsigned). Warning 4333 (right shift by too large amount, data loss) and 4345 (an object of POD type constructed with an initializer of the form () will be default-initialized) are no longer generated. The same setting is applied and verified for GN build as well. BUG=pdfium:29 Review URL: https://codereview.chromium.org/1849443003
2016-03-31Beef up unit test for CFX_ByteString and CFX_WideString.tsepez
Needed to validate refactoring which was reverted. Review URL: https://codereview.chromium.org/1847193002
2016-03-31Revert "Use CFX_RetainPtr to ref count CFX_ByteString"chromium/2700chromium/2699chromium/2698chromium/2697tsepez
This reverts commit ac88953dfa7c1a68c69989d61d7bc03c0595064b. Reason for revert: Strings borked. TBR=dsinclair@chromium.org Review URL: https://codereview.chromium.org/1852453004
2016-03-30Fix C4434 warning about 32-bit shift assigned to 64-bitsBruce Dawson
VS 2015 has a new or louder warning about 32-bit shifts that are then assigned to a 64-bit target. This type of code triggers it: int64_t size = 1 << shift_amount; Because the '1' being shifted is a 32-bit int the result of the shift will be a 32-bit result, so assigning it to a 64-bit variable is just misleading. In this case the code that triggers it is this: m_IAID.resize(1 << SBSYMCODELEN); The destination is a size_t so the warning only shows up on 64-bit builds and doesn't indicate a real bug. But, casting the '1' constant to size_t makes the behavior/intent more obvious and consistent and allows enabling C4334 in Chromium. BUG=593448 R=tsepez@chromium.org Review URL: https://codereview.chromium.org/1843253002 .
2016-03-30Use CFX_RetainPtr to ref count CFX_ByteStringchromium/2696tsepez
This moves the reference counts from an ad-hoc mechanism to being automatically tracked. Also: Make StringData::Create() always return non-null. Add better ctors for StringData itself. Consolidate copies into StringData methods. Simplify the concat() code. Rename/reorder some parameter names to be simpler. Review URL: https://codereview.chromium.org/1810823002
2016-03-30Rename _CPDF_UniqueKeyGen to CPDF_UniqueKeyGendsinclair
Review URL: https://codereview.chromium.org/1841313004
2016-03-29Re-enable warning 4005 and remove _CRT_SECURE_NO_WARNINGSWei Li
The macro _CRT_SECURE_NO_WARNINGS is no longer needed for chromium code as pdfium code itself is warning free; For standalone build, the macro may suppress warnings from third party code. But it has no use now as it is shadowed by disabled 4996 warnings. This is one of the efforts to re-enable warnings for pdfium code. BUG=pdfium:29 R=brucedawson@chromium.org Review URL: https://codereview.chromium.org/1836443002 .
2016-03-29Code change to avoid signed/unsigned mismatch warnings.Wei Li
This makes pdfium code on Linux and Mac sign-compare warning free. The warning flag will be re-enabled after checking on windows clang build. BUG=pdfium:29 R=tsepez@chromium.org Review URL: https://codereview.chromium.org/1841643002 .
2016-03-29Add a Retained Pointer smart class.tsepez
It's going to be hard to fix some XFA object leaks without this. Put this in fxcrt/ as we should be able to make the FX strings take advantage of this. BUG=pdfium:55 Review URL: https://codereview.chromium.org/1805683002
2016-03-29Rename GetElementValue() to GetDirectObject{By,At}().tsepez
Every time I read this code, I have to make the mental substituion that "Element value" means "de-ref indirect object", so it might as well just say so. BUG= Review URL: https://codereview.chromium.org/1841173002
2016-03-28Cleanup one mac headerWei Li
Remove unimplemented/unused class, and other cleanup R=tsepez@chromium.org Review URL: https://codereview.chromium.org/1834063002 .
2016-03-28Reduce signed/unsigned comparison warningsWei Li
The warnings generated by Clang. This is part 1 for some simple cases. BUG=pdfium:29 R=tsepez@chromium.org Review URL: https://codereview.chromium.org/1840483003 .
2016-03-25Remove FX_DWORD from core/ and delete definitionchromium/2695chromium/2694chromium/2693chromium/2692tsepez
Review URL: https://codereview.chromium.org/1832173003
2016-03-25Fix FXSYS_StrToInt()Wei Li
Correctly handle sign and out of range values. R=dsinclair@chromium.org, tsepez@chromium.org Review URL: https://codereview.chromium.org/1828873002 .
2016-03-25support gradients and stroke+fillcaryclark
To draw paths that are stroked and filled with a pair of colors, reduce the fill by the width of the stroke. This is implemented with path ops subtracting the resolved stroke shape from the fill shape. This permits rendering the result without requiring an offscreen bitmap. The implementation for stroke+fill requires a new entry into the graphics engine, so a bit was added to device caps for that. Extract the gradient information out of the axial gradient function descriptions, and when possible, use Skia to draw the linear gradient directly. This requires making the function descriptions non-opaque, and adding a bit to device caps for another entry into the graphics engine. BUG= Review URL: https://codereview.chromium.org/1828283002
2016-03-25Replace CFX_DWordArray with CFX_ArrayTemplate<FX_DWORD>.Tom Sepez
First step to getting rid of FX_DWORD. R=ochang@chromium.org Review URL: https://codereview.chromium.org/1832113003 .
2016-03-25Remove unused params of CPDF_Image::SetImage.dsinclair
The last 3 params of CPDF_Image::SetImage are unused, remove and cleanup logic. BUG=pdfium:194 Review URL: https://codereview.chromium.org/1831263002
2016-03-25Cleanup some extern method declarations.dsinclair
This CL removes _FPDFAPI_GetInternalFontData which is not implemented, FWL_PostMessageToMainRoop which has no body and the PostMessage which was the only caller. FWL_ShowCaret is moved to the only place where it's used. BUG=pdfium:112 Review URL: https://codereview.chromium.org/1827343003
2016-03-24Added bounds checking to GetNameFromTT to handle corrupt files.Tom Sepez
Patch by forshaw. This patch adds bounds checking to the names buffer passed to GetNameFromTT. There are observed crashes in this function where data is read outside of the bounds allocated and passed to GetNameFromTT. There's no reason that this function should ever try and read outside of the allocated bounds. BUG=583037 TBR=forshaw@chromium.org patch from issue 1829013002 at patchset 40001 (http://crrev.com/1829013002#ps40001) Review URL: https://codereview.chromium.org/1830243003 .
2016-03-24Remove strange integral constants for "true", "false", "%PDF".Tom Sepez
Compilers have good inline memcmp nowadays, so we don't have to resort to old tricks. Remove FXDWORD_FROM_LSBFIRST and FXDWORD_FROM_MSBFIRST while we're at it. MSBFIRST was technically wrong due to promotion to int. R=dsinclair@chromium.org Review URL: https://codereview.chromium.org/1834553002 .
2016-03-24Add missing comma.dan sinclair
We'd skip a test as the two strings would get joined, add the missing comma so all tests are run correctly. Found by: etienneb@ R=etienneb@chromium.org Review URL: https://codereview.chromium.org/1826193002 .
2016-03-24fix windows build; add blend modesCary Clark
Use FreeType instead of Direct Write on Windows. Since PDFium currently uses the graphics engine to draw but not to measure, the graphics engine needs to always use FreeType to get consistent metrics. Add a translation from PDF's blend modes to Skia's xfer modes. Turn on subpixel positioning for text to get more precise glyph placement. Pass the alpha through to get proper bitmap transparency. Address earlier nits. R=dsinclair@chromium.org, tsepez@chromium.org, dsinclair Review URL: https://codereview.chromium.org/1812263002 .
2016-03-23Split core/include/fpdfapi/fpdf_resource.hdan sinclair
This CL splits apart the core/include/fpdfapi/fpdf_resource.h file and places the classes into individual files. R=tsepez@chromium.org Review URL: https://codereview.chromium.org/1824033002 .
2016-03-23Move core/include/fxcrt to core/fxcrt/include.Dan Sinclair
This CL moves the fxcrt code into the core/fxcrt directory. The only exception was fx_bidi.h which was moved into core/fxcrt as it is not used outside of core/. R=tsepez@chromium.org Review URL: https://codereview.chromium.org/1825953002 .
2016-03-23Fix win/clang part 2.Dan Sinclair
After moving EmbeddedUnicodeFromCharcode the IsValidEmbeddedCharcodeFromUnicodeCharset method is no longer used on windows. TBR=weili@chromium.org Review URL: https://codereview.chromium.org/1827823002 .
2016-03-23Fix build on win/clangDan Sinclair
EmbeddedCharcodeFromUnicode is not used on windows anymore and clang complains. TBR=weili@chromium.org Review URL: https://codereview.chromium.org/1828673002 .
2016-03-22Re-enable MSVC warning 4702Wei Li
BUG=pdfium:29 R=tsepez@chromium.org Review URL: https://codereview.chromium.org/1821423002 .
2016-03-21Make predefined character table slightly smaller.Tom Sepez
Add a few missing consts and remove a few extra externs. R=ochang@chromium.org Review URL: https://codereview.chromium.org/1817283002 .
2016-03-21Remove FX_WORD in favor of uint16_t.Tom Sepez
It isn't buying us anthing, and it looks strange in a struct when other uint types are already present. R=dsinclair@chromium.org Review URL: https://codereview.chromium.org/1821043003 .
2016-03-21Make a few more const tables smaller.chromium/2689chromium/2688Tom Sepez
Remove some tables from .h file (risk of duplication). R=ochang@chromium.org Review URL: https://codereview.chromium.org/1814233005 .
2016-03-21Remove unused FXDIB_PALETTE_ optionsTom Sepez
The only one that is ever used is FXDIB_PALETTE_loc, so remove the option entirely. In turn, this allows deleting about 2KB of unused constant tables. R=ochang@chromium.org Review URL: https://codereview.chromium.org/1809943007 .
2016-03-21Re-enable several MSVC warningsWei Li
Re-enable the following warnings: 4245: signed/unsigned conversion mismatch; 4310: cast may truncate data; 4389: operator on signed/unsigned mismatch; 4701: use potentially uninitialized local variable; 4706: assignment within conditional expression Clean up the code to avoid those warnings. BUG=pdfium:29 R=tsepez@chromium.org Review URL: https://codereview.chromium.org/1801383002 .
2016-03-21Handle empty objects in IsSameTextObject() and free from warningWei Li
When both text objects have no items, directly return TRUE; The last if statement moved inside loop to make the intent more obvious and free from warning (msvc warns using potentially uninitialized var itemPer) R=jun_fang@foxitsoftware.com Review URL: https://codereview.chromium.org/1815453002 .