Age | Commit message (Collapse) | Author |
|
There were two issues with the code parsing the triangle mesh's
edge flags:
* meshes were not require to start with an independent triangle
* out of range edge flags caused vertices to be ignored
A mesh where the edge flag of the first vertice is out of range,
and the edge flag of the second vertex indicates continuation
of a prior triangle would result in trying to create a triangle
where the third coordinate would be uninitialized.
This commit requires the edge flag of the first vertex to indicate
a new independent triangle and if out of range edge flags are
encountered they are treated as if they indicate a new triangle.
Thanks to oss-fuzz for reporting.
|
|
When fz_draw_clip_image_mask() calls fz_get_pixmap_from_image()
may throw an exception, in this case beacuse a predicted image
has an unsupported number of components (1, 2, 4, 8 and 16 are
supported, but 6 is not). When this happens the recently pushed
stack element is never popped, which later trips an assert() in
fz_draw_end_group() at a later stage.
By moving the call to fz_get_pixmap_from_image() inside fz_try
the stack will be popped, thus avoiding triggering the assert().
This also requires the pixmap variable to be fz_var()ed because
it changes inside the fz_try-block.
|
|
|
|
In the Javascript function AFSpecial_KeystrokeEx, if there are characters
left over after exhausting the format string, it's not a match.
|
|
This fixes part of bug #699577.
The keystroke event was preventing form fields being cleared, which is
presumably not intended behaviour.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Follow bin2coff layout for hexdumped data instead of trying to emulate
the objcopy layout (which seems to break for the android tools).
Only use the basename of the resource in hexdump / bin2coff.
Ifdef on HAVE_OBJCOPY instead of _WIN32.
|
|
|
|
pdf_get_inheritable also looks in trailer/Root/AcroForm for missing keys,
but this behavior is not supported by anything in the specification.
|
|
|
|
Remove duplicate function pdf_lookup_inherited_page_item.
|
|
|
|
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.
|
|
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.
|
|
|
|
|
|
|
|
|
|
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.
|
|
Thanks to oss-fuzz for reporting.
|
|
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.
|
|
|
|
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.
|
|
Thanks to oss-fuzz for reporting.
|
|
|
|
Thanks to oss-fuzz for reporting.
|
|
|
|
|
|
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.
|
|
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.
|
|
|
|
|
|
|
|
|
|
|
|
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.
|
|
If you define DUMP_LEXER_STREAM than the lexer dumps the input
that it reads from the stream.
|
|
A missing CIDToGIDMap is treated as identity.
|
|
|
|
|
|
These got broken during the fz_rect/fz_matrix pass-by-value
changes.
|
|
|
|
All the "Sign" button does for now is recreate the appearance stream.
|
|
|
|
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.
|