Commit graph

12462 commits

Author SHA1 Message Date
Uli Schlachter
d546a78c6f Remove duplicate reference images
Running test/check-refs.sh reports:

redundant: arc-direction.pdf.ref.png and arc-direction.ref.png are byte-by-byte identical files
redundant: big-little-triangle.traps.argb32.ref.png and big-little-triangle.argb32.ref.png are byte-by-byte identical files
redundant: big-little-triangle.traps.rgb24.ref.png and big-little-triangle.rgb24.ref.png are byte-by-byte identical files
redundant: clip-fill-rule.pdf.rgb24.ref.png and clip-fill-rule.rgb24.ref.png are byte-by-byte identical files
redundant: dash-offset-negative.pdf.ref.png and dash-offset-negative.ref.png are byte-by-byte identical files
redundant: font-matrix-translation.traps.ref.png and font-matrix-translation.ref.png are byte-by-byte identical files
redundant: ft-show-glyphs-positioning.traps.ref.png and ft-show-glyphs-positioning.ref.png are byte-by-byte identical files
redundant: ft-show-glyphs-table.traps.ref.png and ft-show-glyphs-table.ref.png are byte-by-byte identical files
redundant: glyph-cache-pressure.traps.ref.png and glyph-cache-pressure.ref.png are byte-by-byte identical files
redundant: inverse-text.traps.ref.png and inverse-text.ref.png are byte-by-byte identical files
redundant: line-width-large-overlap-offset.ps.ref.png and line-width-large-overlap-offset.ref.png are byte-by-byte identical files
redundant: partial-clip-text-right.traps.ref.png and partial-clip-text-right.ref.png are byte-by-byte identical files
redundant: partial-clip-text-top.traps.ref.png and partial-clip-text-top.ref.png are byte-by-byte identical files
redundant: record90-fill-alpha.pdf.ref.png and record90-fill-alpha.ref.png are byte-by-byte identical files
redundant: record90-paint-alpha-clip.quartz.ref.png and record90-paint-alpha-clip.ref.png are byte-by-byte identical files
redundant: record-fill-alpha.pdf.ref.png and record-fill-alpha.ref.png are byte-by-byte identical files
redundant: recordflip-whole-fill-alpha.quartz.ref.png and recordflip-whole-fill-alpha.ref.png are byte-by-byte identical files
redundant: recordflip-whole-paint-alpha-clip-mask.quartz.ref.png and recordflip-whole-paint-alpha-clip-mask.ref.png are byte-by-byte identical files
redundant: record-mesh.ps.ref.png and record-mesh.ref.png are byte-by-byte identical files
redundant: select-font-face.traps.ref.png and select-font-face.ref.png are byte-by-byte identical files
redundant: show-glyphs-advance.traps.ref.png and show-glyphs-advance.ref.png are byte-by-byte identical files
redundant: show-text-current-point.traps.ref.png and show-text-current-point.ref.png are byte-by-byte identical files
redundant: text-antialias-gray.traps.ref.png and text-antialias-gray.ref.png are byte-by-byte identical files

This commit removes these redundant files.

Signed-off-by: Uli Schlachter <psychon@znc.in>
2022-12-31 15:56:33 +01:00
Uli Schlachter
001df8ad17 Merge branch 'improve-offset-size-checking' into 'master'
Improve cff index reading code

See merge request cairo/cairo!383
2022-12-31 14:01:08 +00:00
Uli Schlachter
c24c657525 Improve cff index reading code
In a recent MR [1], Adrian Johnson writes:

  For additional safety you could change the unsigned long to size_t
  since long is 32-bits on Win64. The CFF spec says the offset size used
  in decode_index_offset must be between 1 and 4 so you could range
  check that to avoid overflowing the offset.

This commit implements exactly that.

[1]: https://gitlab.freedesktop.org/cairo/cairo/-/merge_requests/382#note_1700743

Signed-off-by: Uli Schlachter <psychon@znc.in>
2022-12-31 14:21:28 +01:00
Uli Schlachter
c56c3023bb Merge branch 'oob-cff-subset' into 'master'
Fix out-of-bounds access in cff subset

See merge request cairo/cairo!382
2022-12-31 13:20:07 +00:00
Uli Schlachter
aeafbf554f Merge branch 'clipper-memory-leak' into 'master'
Fix memory leak in type3 glyph surface

See merge request cairo/cairo!381
2022-12-31 13:18:03 +00:00
Uli Schlachter
cc656934da Fix a possible out-of-bounds read
While working on the previous commit, I noticed that nothing makes sure
that the entry points within the font data. Thus, this could easily
cause out-of-bounds reads.

This commit adds a suitable length check for this.

Signed-off-by: Uli Schlachter <psychon@znc.in>
2022-12-31 13:43:32 +01:00
Uli Schlachter
52760fc90e Fix out-of-bounds access in cff subset
I was looking at [1]. While trying to reproduce the problem that is
described there, valgrind reported:

 Argument 'size' of function malloc has a fishy (possibly negative) value: -8
    at 0x48407B4: malloc (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
    by 0x4B20E92: cairo_cff_font_read_name (cairo-cff-subset.c:895)
    by 0x4B221AD: cairo_cff_font_read_font (cairo-cff-subset.c:1351)
    by 0x4B24EF2: cairo_cff_font_generate (cairo-cff-subset.c:2587)
    by 0x4B25EA3: _cairo_cff_subset_init (cairo-cff-subset.c:2979)

This commit is about fixing the above.

The function decode_index_offset() returns an unsigned long. This value
was cast to an "int" in cff_index_read(), leading to a possibility for
over/underflow. Also, nothing checked that an entry in the index table
had a non-zero length, leading to an entry with length -8 as reported by
valgrind.

Fix this by using "unsigned long" for the local variables and checking
the length to be non-negative.

With the above fixed, the original test case started crashing.
Apparently, cairo_cff_font_read_name() does not expect nor handle
failures from cff_index_read(). Thus, a check for this case was added to
make the new crash go away.

[1]: https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=51324

Signed-off-by: Uli Schlachter <psychon@znc.in>
2022-12-31 13:43:24 +01:00
Uli Schlachter
488209d9e9 Fix memory leak in type3 glyph surface
In _cairo_type3_glyph_surface_create(), we call
_cairo_surface_clipper_init(), but nothing ever called
_cairo_surface_clipper_reset() in this call. This commit adds that
missing call.

This fixes a leak of a clip.

Since I have no clue about this code (does _cairo_pdf_operators_fini()
possible use the clipper?), I did the patch like this. This should avoid
any possibility for a use-after-free.

Fixes: https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=51043
Signed-off-by: Uli Schlachter <psychon@znc.in>
2022-12-31 13:30:57 +01:00
Adrian Johnson
3a60f6e138 Merge branch 'ft-svg-fonts' into 'master'
Support SVG fonts in FT backend

See merge request cairo/cairo!319
2022-12-31 09:27:57 +00:00
Behdad Esfahbod
8c983c0d5d Merge branch 'malloc-stats' into 'master'
[malloc-stats] Fix to not crash

See merge request cairo/cairo!378
2022-12-30 18:12:27 +00:00
Behdad Esfahbod
71c4443139 [malloc-stats] Fix to not crash
Can't use constructor as malloc might be called before that.
2022-12-30 10:34:46 -07:00
Uli Schlachter
4913f07950 Merge branch 'round-join' into 'master'
Remove `round-join-bug-520*` CI exceptions for Quartz backend

See merge request cairo/cairo!377
2022-12-29 12:37:01 +00:00
Christian Rohlfs
aa8d16ab83 Removed round-join-bug-520* CI exceptions for Quartz backend
Removed lines from `.gitlab-ci/ignore-quartz*`;
Added `round-join-bug-520-bevel.quartz.ref.png` file.
2022-12-28 17:50:27 +05:00
Uli Schlachter
2351a65b27 Merge branch 'test-ps' into 'master'
Test cairo-ps in CI

See merge request cairo/cairo!171
2022-12-28 10:52:56 +00:00
Uli Schlachter
a2d05a0c34 ps: Fix crash in self-copy-overlap
According to valgrind, there is a use-after-free here. The function
_cairo_ps_surface_emit_surface() temporarily replaces some member of a
struct and then later re-sets it. However, there is an early return
possible that would skip that part of the code.

This commit moves the re-set up so that no freed pointers are left
behind. This seems to fix the crash.

Signed-off-by: Uli Schlachter <psychon@znc.in>
2022-12-28 11:15:01 +01:00
Uli Schlachter
c1aaaff880 Test cairo-ps in CI
This adds the necessary dependencies for testing cairo-ps to CI and sets
up jobs for testing the ps2 and ps3 backends.

Signed-off-by: Uli Schlachter <psychon@znc.in>
2022-12-28 11:14:59 +01:00
Uli Schlachter
0e56ea9d5c Merge branch 'round-join' into 'master'
Fix for round joins

See merge request cairo/cairo!372
2022-12-28 09:58:35 +00:00
Adrian Johnson
394256abba Merge branch 'lzw-compress-1-byte' into 'master'
Fixed crash in _cairo_lzw_compress for 1 byte input

See merge request cairo/cairo!376
2022-12-28 09:55:37 +00:00
Daniel Hammerschmid
bd15b62906 Fixed crash in _cairo_lzw_compress for 1 byte input 2022-12-28 10:16:49 +01:00
Adrian Johnson
9b2e6f1994 Merge branch 'bash-completion' into 'master'
Bash completion for cairo-test-suite

See merge request cairo/cairo!375
2022-12-28 08:34:56 +00:00
Adrian Johnson
fab328598c Bash completion for cairo-test-suite
Usage:

$ source completion.bash
2022-12-28 16:16:18 +10:30
Adrian Johnson
0b5ec0139c Merge branch 'pbounds-size' into 'master'
Ensure pbounds.size is initialized even in EXTEND_NONE mode.

See merge request cairo/cairo!363
2022-12-28 05:42:51 +00:00
Adrian Johnson
7fa02c81f1 Merge branch 'bug-535' into 'master'
Fix bug #535 in cairo-script

Closes #535

See merge request cairo/cairo!276
2022-12-28 05:05:07 +00:00
Adrian Johnson
b13fb85982 Merge branch 'negative-version-values' into 'master'
cairo_pdf_version_to_string: Check for negative values

Closes #590

See merge request cairo/cairo!358
2022-12-28 04:49:59 +00:00
Adrian Johnson
2b862f632d Merge branch 'lzw_eod_code_width' into 'master'
Fix output of EOD code with incorrect code width in _cairo_lzw_compress

See merge request cairo/cairo!359
2022-12-28 04:45:26 +00:00
Adrian Johnson
3e8b9a7cf4 Add some missing slim_hidden entries 2022-12-28 14:00:33 +10:30
Adrian Johnson
1ba3e40d9c FT: support COLRv0 recording surface 2022-12-28 13:22:00 +10:30
Jonathan Kew
4f9b637123 Fix x/y typo in _cairo_pdf_surface_analyze_operation
This can result in spuriously returning UNSUPPORTED and generating rasterized output in cases where this isn't actually necessary.
2022-12-28 13:22:00 +10:30
Adrian Johnson
063f9db67e Fuzzer 2022-12-28 13:22:00 +10:30
Adrian Johnson
8233c6362b ft-svg-render test 2022-12-28 13:22:00 +10:30
Adrian Johnson
252ff60f1e SVG font test using cairo logo 2022-12-28 13:22:00 +10:30
Adrian Johnson
1bd5751324 FT SVG color font test 2022-12-28 13:22:00 +10:30
Adrian Johnson
31700fed4f Support SVG fonts in FT backend 2022-12-28 13:22:00 +10:30
Adrian Johnson
392423aba3 Fix ink extents of recording surfaces within recording surfaces 2022-12-28 13:22:00 +10:30
Adrian Johnson
640e2dadfc user fonts: ensure snap_x/y_scale are initialized 2022-12-28 13:22:00 +10:30
Adrian Johnson
7c5e2758a4 ft: move CAIRO_SCALED_GLYPH_INFO_METRICS into separate function 2022-12-28 13:22:00 +10:30
Christian Rohlfs
e83776572c Round joins fix (spline_cusp_tolerance)
https://gitlab.freedesktop.org/cairo/cairo/-/issues/520
2022-12-28 07:25:30 +05:00
Christian Rohlfs
805897b1f7 test: Add new round-join-bug-520 tests
https://gitlab.freedesktop.org/cairo/cairo/-/issues/520
2022-12-28 06:52:29 +05:00
Adrian Johnson
e1f07966a6 Merge branch 'dwrite-disable' into 'master'
meson: allow disabling DWrite

See merge request cairo/cairo!374
2022-12-26 20:14:28 +00:00
Benjamin Gilbert
6ec9cd3096 meson: allow disabling DWrite
When building with MinGW-w64, DWrite introduces a libstdc++ dependency
which may not be desired.
2022-12-24 20:18:46 -05:00
Uli Schlachter
7fc6df6dd2 Merge branch 'document-premul' into 'master'
Document whether colors are premultiplied

See merge request cairo/cairo!373
2022-12-24 13:00:32 +00:00
Matthias Clasen
1df5969ef6 Document whether colors are premultiplied
For the various APIs that take or return
RGBA colors, make it explicit that they are
unpremultiplied.
2022-12-24 07:22:39 -05:00
Uli Schlachter
12cd2bcbb2 Merge branch 'testfix' into 'master'
Zero terminate temp buffers before calling strcat.

See merge request cairo/cairo!369
2022-11-25 13:23:31 +00:00
Jussi Pakkanen
44ff5e4e6c Zero terminate temp buffers before calling strcat. 2022-11-24 22:41:36 +02:00
Uli Schlachter
8cb6deed39 Merge branch 'pass-quartz-tests' into 'master'
Pass quartz tests

See merge request cairo/cairo!367
2022-11-18 15:54:40 +00:00
John Ralls
c014a7dda3 Require macOS CI job to pass again. 2022-11-17 16:20:23 -08:00
John Ralls
04cf47b57a Change expected fails and reference image so that Quartz CI passes. 2022-11-17 16:20:14 -08:00
Emmanuele Bassi
f672f20f02 Merge branch 'fix-long-lines' into 'master'
Pass the same type when creating the static glyphs and positions arrays.

Closes #574

See merge request cairo/cairo!366
2022-11-17 22:18:17 +00:00
John Ralls
21ab756bd9 Pass the same type when creating the static glyphs and positions arrays.
Fixes https://gitlab.freedesktop.org/cairo/cairo/-/issues/574
2022-11-17 10:49:18 -08:00
Uli Schlachter
8f1190dc82 Merge branch 'remove-explicit-dependency-on-libssp' into 'master'
Remove explicit dependency on libssp

See merge request cairo/cairo!360
2022-10-28 13:06:36 +00:00