Commit graph

11891 commits

Author SHA1 Message Date
Uli Schlachter
26663cf3be Merge branch 'fix_obvious_ub' into 'master'
Fix undefined left-shifts

See merge request cairo/cairo!149
2021-04-11 05:37:49 +00:00
Heiko Lewin
3ca8a46caf Minor corrections 2021-04-11 02:07:10 +02:00
Uli Schlachter
1904d7bf35 Merge branch 'fix-467' into 'master'
Rename cairo_lines_compare_at_y into _cairo_lines_compare_at_y and fix syntax

Closes #467

See merge request cairo/cairo!150
2021-04-02 13:43:39 +00:00
Marc Jeanmougin
d2a37ba60e
Rename cairo_lines_compare_at_y into _cairo_lines_compare_at_y and fix syntax
Fixes https://gitlab.freedesktop.org/cairo/cairo/-/issues/467
2021-04-02 14:35:46 +02:00
Heiko Lewin
518ba13779 Fix undefined left-shifts 2021-03-31 12:20:34 +02:00
Uli Schlachter
44f808fce9 Merge branch 'use-after-scope' into 'master'
Avoid a use-after-scope

Closes #453

See merge request cairo/cairo!143
2021-03-25 15:51:32 +00:00
Uli Schlachter
33cce5dc37 Merge branch 'pdf-mime-data' into 'master'
"Fix" the pdf-mime-data test

See merge request cairo/cairo!142
2021-03-25 15:51:13 +00:00
Uli Schlachter
c48ea2737c Merge branch 'serial-test-harness' into 'master'
Use the serial automake test harness

See merge request cairo/cairo!138
2021-03-25 15:50:44 +00:00
Uli Schlachter
5090dc3f4a Merge branch 'flush-in-tests' into 'master'
test suite: fflush() before fork()

See merge request cairo/cairo!139
2021-03-25 15:50:22 +00:00
Uli Schlachter
f5a4ec8ada Merge branch 'mime-unique-id' into 'master'
Fix the mime-unique-id test for me

See merge request cairo/cairo!141
2021-03-25 15:49:50 +00:00
Tim-Philipp Müller
104dfd8b04 Merge branch 'ci-bump-windows-image' into 'master'
ci: bump windows image to latest version to fix github ssl certificate issues

See merge request cairo/cairo!148
2021-03-22 11:22:09 +00:00
Tim-Philipp Müller
b40b1afaec ci: bump windows image to latest version to fix github ssl certificate issues 2021-03-20 16:16:27 +00:00
Tim-Philipp Müller
f604b4ba92 Merge branch 'gyf-table-leak' into 'master'
Fix a leak in an error path

See merge request cairo/cairo!144
2021-03-10 16:57:08 +00:00
Tim-Philipp Müller
b718dae717 Merge branch 'meson-make-cairo-trace-executable' into 'master'
meson: make cairo-trace executable

Closes #462

See merge request cairo/cairo!145
2021-03-09 19:08:29 +00:00
Tim-Philipp Müller
ca478e0327 meson: make cairo-trace executable
Install with exec flag set and make sure tool is
executable in build directory as well (by making
the input file in the source directory executable).

Fixes #462
2021-03-09 10:59:57 +00:00
Uli Schlachter
2af4412aa3 Fix a leak in an error path
Tested with valgrind. Before this patch, I got the following "definitely
lost" entry, which is gone afterwards:

94,416 bytes in 1 blocks are definitely lost in loss record 427 of 427
   at 0x483877F: malloc (in /usr/lib/x86_64-linux-gnu/valgrind/vgpreload_memcheck-amd64-linux.so)
   by 0x4B053F8: cairo_truetype_font_write_glyf_table (cairo-truetype-subset.c:625)
   by 0x4B06219: cairo_truetype_font_generate (cairo-truetype-subset.c:991)
   by 0x4B06917: cairo_truetype_subset_init_internal (cairo-truetype-subset.c:1159)
   by 0x4B06D72: _cairo_truetype_subset_init_pdf (cairo-truetype-subset.c:1255)
   by 0x4B6B113: _cairo_pdf_surface_emit_truetype_font_subset (cairo-pdf-surface.c:5892)
   by 0x4B6C2AD: _cairo_pdf_surface_emit_unscaled_font_subset (cairo-pdf-surface.c:6366)
   by 0x4B02FC7: _cairo_sub_font_collect (cairo-scaled-font-subsets.c:741)
   by 0x4B03A7A: _cairo_scaled_font_subsets_foreach_internal (cairo-scaled-font-subsets.c:1062)
   by 0x4B03B21: _cairo_scaled_font_subsets_foreach_unscaled (cairo-scaled-font-subsets.c:1090)
   by 0x4B6C3ED: _cairo_pdf_surface_emit_font_subsets (cairo-pdf-surface.c:6412)
   by 0x4B62B1A: _cairo_pdf_surface_finish (cairo-pdf-surface.c:2222)

To reproduce, run the test case from the below link.

Fixes: https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=28023
Signed-off-by: Uli Schlachter <psychon@znc.in>
2021-03-09 11:14:09 +01:00
Uli Schlachter
e5b9d96f22 Avoid a use-after-scope
This is the same fix as commit b345be5afe, but in a different place in
the same file.

Fixes: https://gitlab.freedesktop.org/cairo/cairo/-/issues/453
Signed-off-by: Uli Schlachter <psychon@znc.in>
2021-03-09 07:53:50 +01:00
Uli Schlachter
2f25fa68c0 test/pdf-mime-data.c: Check for pdfimages
Currently, the pdf-mime-data check just fails for me with the following
output:

    sh: 1: pdfimages: not found
    pdf-mime-data: FAIL

pdf-mime-data.log contains:

    pdfimages failed with exit status 32512

Since I do not have pdfimages installed... yeah.

This commit "fixes" that problem by skipping the test if pdfimages is
not available. No idea if it would pass if it were available, but I do
not feel like installing pdfimages just to test.

Signed-off-by: Uli Schlachter <psychon@znc.in>
2021-03-08 17:31:37 +01:00
Uli Schlachter
2a8d90c6fc pdf-mime-data: Fix for out-of-tree builds
This makes the code use the existing helper for loading PNGs that also
considers the $srcdir environment variable. This makes it find the file
in out of tree builds.

Signed-off-by: Uli Schlachter <psychon@znc.in>
2021-03-08 17:27:52 +01:00
Uli Schlachter
0c64c216aa pdf-mime-data: Fix error checking
I am not quite sure, but an if for "ignore this error if something
failed" seems wrong. Either this should have compared against status2 or
checked for success. This commit fixes the code for the latter.

Signed-off-by: Uli Schlachter <psychon@znc.in>
2021-03-08 17:26:50 +01:00
Uli Schlachter
433d9eb109 Update the PDF size limit in mime-unique-id
The test mime-unique-id checks that some images are only embedded once
in a PDF. It does so by checking if the file size is within some
expected bounds. However, the test fails for me because the file is too
small. Yes, too *small*.

Fix this by updating the test to expect my current file size.

Signed-off-by: Uli Schlachter <psychon@znc.in>
2021-03-08 16:30:33 +01:00
Uli Schlachter
0fd2197e2b test/mime-unique-id: Fix for out-of-tree builds
Instead of failing because it did not find an image, this now fails for
me since the PDF is too small (???).

This new code is modelled after cairo_test_create_surface_from_png().

Signed-off-by: Uli Schlachter <psychon@znc.in>
2021-03-08 16:28:51 +01:00
Uli Schlachter
446d3972e5 test suite: fflush() before fork()
Forking a process also duplicates the buffers of FILE*s. Thus, if there
is pending data, both the parent and the child process will write
things. This is seldom a good idea.

This issue was not noticed so far since by default the test suite
already calls fflush() a lot. However, when stdout and stderr are both
not a tty (according to isatty(1) and isatty(2)), these flushes are
skipped. The result is that the child process repeat the full output
from the test suite starting with "Compiled against cairo 1.17.4,
running on 1.17.4."

To reproduce this problem run: ./cairo-test-suite 2>&1 | cat

Fix this by flushing all the files that I managed to find before fork().

Thanks to Pekka Paalanen for helping me figure this out.

Signed-off-by: Uli Schlachter <psychon@znc.in>
2021-03-08 13:45:07 +01:00
Uli Schlachter
7788000be0 Merge branch 'meson-allow-skipping-of-run-check-for-ipc-rmid-deferred-release-in-cross-build' into 'master'
meson: allow skipping of run check for IPC_RMID_DEFERRED_RELEASE

Closes #408

See merge request cairo/cairo!134
2021-03-05 08:08:55 +00:00
Tim-Philipp Müller
71ece6d149 Merge branch 'alatiera/exclude-artifacts' into 'master'
ci: cleanup the autotools artifacts a bit

Closes #465

See merge request cairo/cairo!137
2021-03-04 11:09:29 +00:00
Jordan Petridis
921cc3e57a
ci: cleanup the autotools artifacts a bit
Exclude .trace and .cs file from being exported.
This brings down the generated artifacts size to 73mb.

Close #465
2021-03-04 12:51:12 +02:00
Uli Schlachter
57068e62a5 Use the serial automake test harness
Once upon a time, automake had one way to run tests. Apparently this is
(nowadays?) called the serial test harness. Then, in some release (I do
not remember which one), the parallel test harness became the default.

The parallel harness runs all tests in parallel, but does not (really)
show the test output, but instead has output redirected to files. Sort
of. I did not find the result of my printf() anywhere.

The automake docs strongly discourage using the serial test harness [0],
but do not really say why. For cairo, I do not see problems:

We have some quick, small checks (e.g. is cairo_public used where needed
in the public headers). And then there is the big, heavy-weight test
suite (cairo-test-suite). Thus, running these things in parallel has
basically no benefits.

Additionally, cairo-test-suite takes really, really long. Not seeing any
output while it is running is annoying. Failing to find the output even
in files is bad.

Thus, since I do not see any benefits and only downsides to the parallel
test harness, this commit switches to the serial one.

[0]: https://www.gnu.org/software/automake/manual/html_node/Serial-Test-Harness.html

Signed-off-by: Uli Schlachter <psychon@znc.in>
2021-03-04 08:10:10 +01:00
Tim-Philipp Müller
d847f1d621 Merge branch 'spectre-dep' into 'master'
meson: Move libspectre to test_deps

Closes #425

See merge request cairo/cairo!135
2021-03-01 14:10:04 +00:00
Uli Schlachter
55a5951742 meson: Move libspectre to test_deps
libspectre is only used for ps tests. Adding it to "deps" needlessly
makes it show up in cairo.pc's Requires.private.

Fixes: https://gitlab.freedesktop.org/cairo/cairo/-/issues/425
Signed-off-by: Uli Schlachter <psychon@znc.in>
2021-03-01 14:06:02 +01:00
Tim-Philipp Müller
1bec56ea8a meson: allow skipping of run check for IPC_RMID_DEFERRED_RELEASE
The run check is particularly annoying in cross-compile scenarios,
so allow bypassing the check by having the user provide the value
via a cross file or native file:

  [properties]
  ipc_rmid_deferred_release = true

Closes #408
2021-02-25 10:56:45 +00:00
Uli Schlachter
553c19df16 Merge branch 'meson-add-option-to-disable-xlib-xcb' into 'master'
meson: add xlib-xcb option and disable by default

Closes #438

See merge request cairo/cairo!132
2021-02-25 06:57:31 +00:00
Jan Alexander Steffens (heftig)
3468c67fe9 meson: add xlib-xcb option and disable by default
Just like autotools does.

Closes #438.
2021-02-25 01:29:53 +00:00
Uli Schlachter
8d2f3f4afc Merge branch 'meson-force-utf8-file-encoding-in-scripts' into 'master'
meson: use encoding=utf-8 when reading/writing files in helper script

See merge request cairo/cairo!129
2021-02-24 15:14:45 +00:00
Tim-Philipp Müller
784be5d859 Merge branch 'alatiera/cairo-header' into 'master'
meson: declare dependancy on libcairo_dep for overrides

See merge request cairo/cairo!130
2021-02-24 14:27:54 +00:00
Tim-Philipp Müller
f7ac4181d6 meson: declare dependancy on libcairo_dep for overrides
When declaring a dependency on a feature, say `dependency('cairo-png')`
the resulting object did not depend on cairo and thus was missing
basic things like, `cairo.h` from its include dir.

Make it so overrides do in fact include the basic cairo functionality
needed for them to work.

Related:
https://gitlab.freedesktop.org/gstreamer/gst-devtools/-/merge_requests/236
2021-02-24 03:03:07 +02:00
Tim-Philipp Müller
9732f4e80f meson: use encoding=utf-8 when reading/writing files in helper script
Fixes errors such as

Traceback (most recent call last):
  File "C:\Users\...\cairo\test\make-cairo-test-constructors.py", line 19, in <module>
    for l in f.readlines():
  File "c:\python39\lib\encodings\cp1253.py", line 23, in decode
    return codecs.charmap_decode(input,self.errors,decoding_table)[0]
UnicodeDecodeError: 'charmap' codec can't decode byte 0x98 in position 6694: character maps to <undefined>

on non-English-language Windows locales/installations.
2021-02-23 23:42:11 +00:00
Uli Schlachter
d85738b39c Merge branch 'utils-cairo-trace-update-for-new-bfd' into 'master'
cairo-trace: fix build with newer bfd and remove backtrace-symbols.c

Closes #391 and #460

See merge request cairo/cairo!128
2021-02-23 13:19:00 +00:00
Tim-Philipp Müller
0ed1053d8f utils: remove hacky replacement for backtrace_symbols in glibc
Doesn't build any more, is very much non-essential, and hasn't
been touched in any meaningful way since it was added 13 years
ago, so just remove it for now until someone steps up. Chances
are the glibc version has improved since then.
2021-02-23 12:29:58 +00:00
Tim-Philipp Müller
e30259f623 cairo-trace: fix build with newer versions of bfd
And update configure/meson checks to check for the new function.

Drop libiberty.h check since it's only needed by backtrace-symbols.c
which we're about to remove.

Closes #391, #460
2021-02-23 12:29:58 +00:00
Uli Schlachter
d6c1787ac1 Merge branch 'meson-symbol-lookup-option' into 'master'
meson: add symbol-lookup option to allow disabling bfd/libiberty usage

See merge request cairo/cairo!127
2021-02-23 11:33:45 +00:00
Tim-Philipp Müller
e0cf7b869f meson: add symbol-lookup option to allow disabling bfd/libiberty usage
Can be used to workaround build issues caused by changes
in the bfd API until those have been resolved.

https://gitlab.freedesktop.org/cairo/cairo/-/issues/460
https://gitlab.freedesktop.org/cairo/cairo/-/issues/391
2021-02-23 10:35:42 +00:00
Heiko Lewin
9e84988f41 Merge branch 'fix-448-test' into 'master'
Make the test case for bug 448 pass

See merge request cairo/cairo!123
2021-02-21 16:09:28 +00:00
Heiko Lewin
1569dcd4d8 Merge branch 'ubsan-fixes' into 'master'
UBSan fixes in cairo-truetype-subset.c

See merge request cairo/cairo!124
2021-02-21 16:01:41 +00:00
Jonathan Kew
967ac93789 Don't call _cairo_array_append_multiple with a zero count.
The documentation for _cairo_array_append_multiple says "one or more items".
If it is called with num_elements=0, it ends up calling _cairo_array_grow_by
with num_elements=0, which if the array is currently empty (as here) leads
to undefined behavior in _cairo_array_allocate in the line

    *elements = array->elements + array->num_elements * array->element_size;

because it ends up trying to add 0 to a null pointer. C doesn't allow this.
(UBSan flags this as "applying zero offset to null pointer".)
2021-02-21 16:01:40 +00:00
Heiko Lewin
c62c43a8c6 Merge branch 'pdf-tag-leak' into 'master'
Fix a memory leak with cairo_tag_begin() + pdf

See merge request cairo/cairo!126
2021-02-21 15:50:34 +00:00
Heiko Lewin
f4e43b6822 Merge branch 'pdf-font-names' into 'master'
pdf font subset: Generate valid font names

Closes #449

See merge request cairo/cairo!125
2021-02-21 15:49:06 +00:00
Tim-Philipp Müller
79b539fabb Merge branch 'ci-update-macos-image' into 'master'
ci: update macos tags for newer vm image

See merge request cairo/cairo!121
2021-02-20 15:28:05 +00:00
Tim-Philipp Müller
917a1eddb4 ci: update macos tags for newer vm image
cf. https://gitlab.freedesktop.org/gstreamer/gst-ci/-/merge_requests/389
2021-02-20 15:07:48 +00:00
Uli Schlachter
92fa421261 Merge branch 'small-build-system-fixes' into 'master'
Small build system fixes

See merge request cairo/cairo!111
2021-02-14 09:18:27 +00:00
Uli Schlachter
ac616c270d Fix a memory leak with cairo_tag_begin() + pdf
The error paths in _cairo_pdf_interchange_begin_dest_tag() do not clean
up and cause some memory to be leaked. Fix this by adding the necessary
free()s.

The first hunk, the missing free(dest) was found by oss-fuzz (see link
below).

The second hunk is an obvious follow up. It also cleans up the memory
allocated by _cairo_tag_parse_dest_attributes().

The cleanup in the second hunk is similar to the function
_named_dest_pluck() in the same function, but that function also removes
the entry from a hash table.  The error case here is that exactly this
hash table insertion failed.  Thus, the code cannot simply use the
already existing function.

Fixes: https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=30880
Signed-off-by: Uli Schlachter <psychon@znc.in>
2021-02-13 10:00:42 +01:00