summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2018-08-10Remove functions that implement duplicate functionality.Tor Andersson
pdf_get_inheritable also looks in trailer/Root/AcroForm for missing keys, but this behavior is not supported by anything in the specification.
2018-08-10Fix Android java build.Tor Andersson
2018-08-10Detect cycles in pdf_dict_get_inheritable.Tor Andersson
Remove duplicate function pdf_lookup_inherited_page_item.
2018-08-10Respect NoRotate flag for icon-based annotations.Tor Andersson
2018-08-10Use stubs instead of conditional compile with HAVE_LIBCRYPTO.Tor Andersson
The macro is only set when building the pkcs7-helper library, so cannot be used by client code. Build stub functions when compiling the pkcs7-openssl helper library without libcrypto.
2018-08-10Clean up null/range/endstream filter.Tor Andersson
Use separate functions to keep the code simpler. Use memmem to simplify and optimize search for 'endstream' token. Do not look for 'endobj' since that could cause a false positives in compressed object streams that have duff lengths.
2018-08-10Add fz_memmem function taken from musl libc.Tor Andersson
2018-08-10Add digital signature UI stubs to mujstest.Tor Andersson
2018-08-10gl: Adobe allows border widths from 0 to 12.Tor Andersson
2018-08-10FIXUP pdf_update_page: use JNI_FALSETor Andersson
2018-08-10Rejig pdf_update_page and pdf_update_annot.Tor Andersson
The intent is for a user to iterate over the annotations on a page calling pdf_update_annot for each one. If this function returns true, then the annotation has changed since the last time it was called, and the user needs to re-render. pdf_update_page is a simple loop over the annotations on a page, for use if you only care about page level granularity. Users should no longer look at or change the pdf_annot.has_new_ap field.
2018-08-10Bug 699629: Avoid referencing stale/moved nodes in CMap splay tree.Sebastian Rasmussen
Thanks to oss-fuzz for reporting.
2018-08-10Bug 699628: Add fz_var to variable set in fz_try and used in fz_always.Sebastian Rasmussen
When pdf_xobject_transparency() indicates transparency, pdf_run_xobject() will push a mask with 2 components (gray + alpha). Because fz_var was missing for the transparency variable its value would, if fz_throw() was called, not be preserved in fz_always{}. This means that fz_always{} would never pop the mask from the stack. At a later stage some code would call fz_end_mask() and then trigger an assert() where the number of components was restricted to 1. Marking the variable with fz_var means that the mask will now be popped as expected. Thanks to oss-fuzz for reporting.
2018-08-10Preprocessor gluing tokens together causes clang error.Sebastian Rasmussen
2018-08-10Coverity found a missing break, add it.Sebastian Rasmussen
The intent with the previous code was to default to black upon unsupported number of components in the color array. The code however first set all components to zero then to the value of the first component of the color array. Now the code follows the original intent.
2018-08-10Bug 699627: Ignore CMap input ranges outside of input codespaces.Sebastian Rasmussen
Thanks to oss-fuzz for reporting.
2018-08-10Implement check for range overlap between cmap splay tree nodes.Sebastian Rasmussen
2018-08-10Bug 699626: Avoid trying to populate OCG ui struct without entries.Sebastian Rasmussen
Thanks to oss-fuzz for reporting.
2018-08-04Update jbig2dec.Sebastian Rasmussen
2018-08-01Update jbig2dec.Sebastian Rasmussen
2018-07-17Disallow incremental updating for documents that have hybrid xrefsPaul Gardiner
Alter pdf_can_be_saved_incrementally to return false when a hybrid xref file has been opened. This doesn't enforce the behaviour, but will ensure it for apps that determine their behaviour via this test function. Once changes have been saved to such a file, it is no longer hybrid and so further saving steps can use incremental updates. This change was made because we were previously unable to sign hybrid xref documents in a way that was satisfactory to Adobe Reader. Adobe Reader reorganises hybrid xref files, thus invalidating any signature.
2018-07-17Have pdfapp_save close and reopen the document in all casesPaul Gardiner
We need to do this, because much can change on saving, objects renumbered and moved, and we could run into inconsistencies between the file and in-memory information. This function was already reopening in the case of saving back to the same file, but in other cases.
2018-07-17Fix memory leaks in document signing functionsPaul Gardiner
2018-07-17Fix memory leak in form recalculation functionPaul Gardiner
2018-07-17Squash MSVC warnings in bin2coff.Robin Watts
2018-07-17Add MementoOpenSSL configurations.Robin Watts
2018-07-09Silence gcc warnings about non-const arguments.Sebastian Rasmussen
2018-07-06Bug 699308: Fix stream reading logic to better cope with duff Lengths.Robin Watts
Always look for the "endstream" marker after a PDF stream to see if we've hit the end. Allow for "endobj" to cope with producers that omit endstream entirely. Avoid slowing down legal files by only checking for the end marker after the specified length has been read.
2018-07-06Add debug functionality to show lexed stream contents.Robin Watts
If you define DUMP_LEXER_STREAM than the lexer dumps the input that it reads from the stream.
2018-07-06Squash spurious warnings with CIDToGIDMap.Robin Watts
A missing CIDToGIDMap is treated as identity.
2018-07-06Only do signing if HAVE_LIBCRYPTO is defined.Robin Watts
2018-07-06Fix stray consts.Robin Watts
2018-07-06Fix muraster and mu-office-lib.Robin Watts
These got broken during the fz_rect/fz_matrix pass-by-value changes.
2018-07-06Add pdf_dict_get_rect and pdf_dict_get_matrix helpers.Tor Andersson
2018-07-06gl: Add signing UI for Digital Signatures.Tor Andersson
All the "Sign" button does for now is recreate the appearance stream.
2018-07-06gl: Multi-line labels.Tor Andersson
2018-07-06Fix bad error handling in pdf_pkcs7_openssl_read_pfx.Paul Gardiner
Failure within this function could lead to segfaults in drop_signer. The problem was early allocation of the signer struct without setting its drop method, so that on error signer was non-null, but not in a state where drop_signer could be called.
2018-07-05Fix document signing adding unnecessary incremental updatesPaul Gardiner
When a document is signed multiple times, an incremental update is needed for each, the multiple updates sometimes written to the file as a single saving operation. Within pdf_sign_signature it is the call to pdf_signature_set_value that marks the current section of the xref to which changes are recorded as "full", so that subsequent changes will trigger the creation of a new section. Within pdf_sign_signature we were creating the signature's appearance stream after the call to pdf_signature_set_value and hence triggering an extra unnecessary setction. This commit moves the pdf_signature_set_value to after the creation of the appearance stream, so that we need only as many new xref sections as there are signings.
2018-07-05Signature support: add signing support to the windows appPaul Gardiner
2018-07-05Add digital signature appearance synthesis.Tor Andersson
The pdf_update_signature_appearance function must be called directly by the signing code when it signs the document; as only the signing code has all the text that needs to be written into the appearance.
2018-07-05Add fz_transform_page helper function.Tor Andersson
Create a matrix that transforms a page with resolution and rotation, and grid fits the resulting bounding box.
2018-07-05Purge unused functions.Tor Andersson
2018-07-05Silence warning.Tor Andersson
2018-07-05Pass rects by value: device and document interface.Tor Andersson
2018-07-05Pass matrices by value: device and document interface.Tor Andersson
2018-07-05Pass rect and matrix by value in geometry functions.Tor Andersson
Several things irk me about passing values as const pointers: * They can be NULL, which is not a valid value. * They require explicit temporary variables for storage. * They don't compose easily in a legible manner, requiring weird pointer passing semantics where the variable being assigned is hidden as an argument in the innermost function call. * We can't change the value through the pointer, requiring yet more local variables to hold copies of the input value. In the device interface where we pass a matrix to a function, we often find ourselves making a local copy of the matrix so we can concatenate other transforms to it. This copying is a lot of unnecessary busywork that I hope to eventually avoid by laying the groundwork with this commit. This is a rather large API change, so I apologize for the inconvenience, but I hope the end result and gain in legibility will be worth the pain.
2018-07-05Add stack traces to JS error messages.Tor Andersson
2018-07-05Fix bug in util.js: padZeros is a local function.Tor Andersson
2018-07-05gl: Poll changed annots with pdf_update_page, and clear after rendering.Tor Andersson
2018-07-05Return true if any annots have new APs in pdf_update_page.Tor Andersson