https://github.com/cacalabs/libcaca/commit/e4968ba6e93e9fd35429eb16895c785c51072015.patch Patch adjusted to remove the lines modifying caca/t/canvas.cpp. This file does not exist in the current release. From e4968ba6e93e9fd35429eb16895c785c51072015 Mon Sep 17 00:00:00 2001 From: Sam Hocevar Date: Fri, 26 Feb 2021 12:40:06 +0100 Subject: [PATCH] Fix a problem in the caca_resize() overflow detection and add several unit tests. --- caca/canvas.c | 16 ++++++++-------- caca/t/canvas.cpp | 18 +++++++++++++++--- tools/makefont.c | 22 +++++++++++++++++++--- 3 files changed, 42 insertions(+), 14 deletions(-) diff --git a/caca/canvas.c b/caca/canvas.c index d0715392..08c628c9 100644 --- a/caca/canvas.c +++ b/caca/canvas.c @@ -367,6 +367,14 @@ int caca_resize(caca_canvas_t *cv, int width, int height) { int x, y, f, old_width, old_height, old_size; + /* Check for overflow */ + int new_size = width * height; + if (new_size < 0 || (width > 0 && new_size / width != height)) + { + seterrno(EOVERFLOW); + return -1; + } + old_width = cv->width; old_height = cv->height; old_size = old_width * old_height; @@ -377,14 +385,6 @@ int caca_resize(caca_canvas_t *cv, int width, int height) * dirty rectangle handling */ cv->width = width; cv->height = height; - int new_size = width * height; - - /* Check for overflow */ - if (new_size / width != height) - { - seterrno(EOVERFLOW); - return -1; - } /* If width or height is smaller (or both), we have the opportunity to * reduce or even remove dirty rectangles */ diff --git a/tools/makefont.c b/tools/makefont.c index 226c8838..66718605 100644 --- a/tools/makefont.c +++ b/tools/makefont.c @@ -40,7 +40,8 @@ * and the UTF-8 glyphs necessary for canvas rotation and mirroring. */ static unsigned int const blocklist[] = { - 0x0000, 0x0080, /* Basic latin: A, B, C, a, b, c */ + 0x0020, 0x0080, /* Basic latin: A, B, C, a, b, c */ +#if 0 0x0080, 0x0100, /* Latin-1 Supplement: Ä, Ç, å, ß */ 0x0100, 0x0180, /* Latin Extended-A: Ā č Ō œ */ 0x0180, 0x0250, /* Latin Extended-B: Ǝ Ƹ */ @@ -63,6 +64,7 @@ static unsigned int const blocklist[] = 0x30a0, 0x3100, /* Katakana: ロ ル */ 0xff00, 0xfff0, /* Halfwidth and Fullwidth Forms: A, B, C, a, b, c */ 0x10400, 0x10450, /* Deseret: 𐐒 𐐋 */ +#endif 0, 0 }; @@ -317,8 +319,22 @@ int main(int argc, char *argv[]) printf_unicode(>ab[n]); if(gtab[n].same_as == n) - printf_hex(" */ %s\n", - glyph_data + gtab[n].data_offset, gtab[n].data_size); + { + char const *lut = " .:nmW@"; + printf("\n"); + for (int y = 0; y < height; ++y) + { + for (int x = 0; x < gtab[n].data_width; ++x) + { + int val = glyph_data[gtab[n].data_offset + y * gtab[n].data_width + x]; + char ch = lut[val * val * 7 / 256 / 256]; + printf("%c%c", ch, ch); + } + printf("\n"); + } + //printf_hex(" */ %s\n", + // glyph_data + gtab[n].data_offset, gtab[n].data_size); + } else { printf(" is "); ests/import-utils.scm ("alist->package with simple source"): Use a 'file://' URL. Ludovic Courtès 2017-09-28import: Add generic data to package converter....* guix/import/utils.scm (build-system-modules, lookup-build-system-by-name, specs->package-lists, source-spec->object, alist->package): New procedures. * tests/import-utils.scm: Add tests for alist->package. Ricardo Wurmus 2016-09-28import: utils: Refactor license->symbol....* guix/import/utils.scm (license->symbol): Work for all licenses. * tests/import-utils.scm (license->symbol): Add test. David Craven 2016-04-03build: Add a Guile custom test driver using SRFI-64....Before that '.log' files for scheme tests were fragmented and not included in test-suite.log. This unifies the semantics of SRFI-64 API with Automake test suite. * build-aux/test-driver.scm: New file. * Makefile.am (SCM_LOG_DRIVER, AM_SCM_LOG_DRIVER_FLAGS): New variables. (SCM_LOG_COMPILER, AM_SCM_LOG_FLAGS): Delete variables. (AM_TESTS_ENVIRONMENT): Set GUILE_AUTO_COMPILE to 0. * test-env.in: Silence guix-daemon. * doc/guix.texi (Running the Test Suite): Describe how to display the detailed results. Bug reports require only 'test-suite.log' file. * tests/base32.scm, tests/build-utils.scm, tests/builders.scm, tests/challenge.scm, tests/cpan.scm, tests/cpio.scm, tests/cran.scm, tests/cve.scm, tests/derivations.scm, tests/elpa.scm, tests/file-systems.scm, tests/gem.scm, tests/gexp.scm, tests/gnu-maintenance.scm, tests/grafts.scm, tests/graph.scm, tests/gremlin.scm, tests/hackage.scm, tests/hash.scm, tests/import-utils.scm, tests/lint.scm, tests/monads.scm, tests/nar.scm, tests/packages.scm, tests/pk-crypto.scm, tests/pki.scm, tests/profiles.scm, tests/publish.scm, tests/pypi.scm, tests/records.scm, tests/scripts-build.scm, tests/scripts.scm, tests/services.scm, tests/sets.scm, tests/size.scm, tests/snix.scm, tests/store.scm, tests/substitute.scm, tests/syscalls.scm, tests/system.scm, tests/ui.scm, tests/union.scm, tests/upstream.scm, tests/utils.scm: Don't exit at the end of test groups. * tests/containers.scm: Likewise. Use 'test-skip' instead of exiting with error code 77. Mathieu Lirzin 2016-01-20tests: Move beatify-description tests to import-tests....Fixes <http://bugs.gnu.org/22391>. * tests/cran.scm (beautify-description: use double spacing, beautify-description: transform fragment into sentence). Move from here ... * tests/import-utils.scm: ... to here. New file. * Makefile.am (SCM_TESTS): Add import-utils. Ben Woodcroft