diff options
Diffstat (limited to 'system/ncurses/ncurses-6.3-20220226.patch')
-rw-r--r-- | system/ncurses/ncurses-6.3-20220226.patch | 566 |
1 files changed, 566 insertions, 0 deletions
diff --git a/system/ncurses/ncurses-6.3-20220226.patch b/system/ncurses/ncurses-6.3-20220226.patch new file mode 100644 index 000000000..2f0c9c0be --- /dev/null +++ b/system/ncurses/ncurses-6.3-20220226.patch @@ -0,0 +1,566 @@ +# ncurses 6.3 - patch 20220226 - Thomas E. Dickey +# +# ------------------------------------------------------------------------------ +# +# Ncurses 6.3 is at +# ftp://ftp.invisible-island.net/ncurses/ +# https://invisible-mirror.net/archives/ncurses/ +# https://ftp.gnu.org/gnu/ncurses/ +# +# Patches for ncurses 6.3 can be found at +# ftp://ftp.invisible-island.net/ncurses/6.3 +# https://invisible-mirror.net/archives/ncurses/6.3 +# +# ------------------------------------------------------------------------------ +# ftp://ftp.invisible-island.net/ncurses/6.3/ncurses-6.3-20220226.patch.gz +# patch by Thomas E. Dickey <dickey@invisible-island.net> +# created Sun Feb 27 01:00:55 UTC 2022 +# ------------------------------------------------------------------------------ +# NEWS | 13 ++++++- +# VERSION | 2 - +# c++/cursslk.cc | 6 ++- +# dist.mk | 4 +- +# ncurses/tinfo/alloc_entry.c | 67 ++++++++++++++++++++----------------- +# ncurses/tinfo/write_entry.c | 6 +-- +# package/debian-mingw/changelog | 4 +- +# package/debian-mingw64/changelog | 4 +- +# package/debian/changelog | 4 +- +# package/mingw-ncurses.nsi | 4 +- +# package/mingw-ncurses.spec | 2 - +# package/ncurses.spec | 2 - +# package/ncursest.spec | 2 - +# progs/infocmp.c | 20 ++++++----- +# progs/tabs.c | 8 ++-- +# progs/tput.c | 14 +++++-- +# test/ncurses.c | 8 +++- +# 17 files changed, 104 insertions(+), 66 deletions(-) +# ------------------------------------------------------------------------------ +Index: NEWS +Prereq: 1.3780 +--- ncurses-6.3-20220219+/NEWS 2022-02-20 00:40:32.000000000 +0000 ++++ ncurses-6.3-20220226/NEWS 2022-02-26 23:50:53.000000000 +0000 +@@ -26,7 +26,7 @@ + -- sale, use or other dealings in this Software without prior written -- + -- authorization. -- + ------------------------------------------------------------------------------- +--- $Id: NEWS,v 1.3780 2022/02/20 00:40:32 tom Exp $ ++-- $Id: NEWS,v 1.3782 2022/02/26 23:50:53 tom Exp $ + ------------------------------------------------------------------------------- + + This is a log of changes that ncurses has gone through since Zeyd started +@@ -46,6 +46,17 @@ + Changes through 1.9.9e did not credit all contributions; + it is not possible to add this information. + ++20220226 ++ + fix issues found with coverity: ++ + rewrite canonical_name() function of infocmp to ensure buffer size ++ + corrected use of original tty-modes in tput init/reset subcommands ++ + modify tabs program to limit tab-stop values to max-columns ++ + add limit-checks for palette rgb values in test/ncurses.c ++ + add a few null-pointer checks to help with static-analysis. ++ + enforce limit on number of soft-keys used in c++ binding. ++ + adjust a buffer-limit in write_entry.c to quiet a bogus warning from ++ gcc 12.0.1 ++ + 20220219 + + expanded description in man/resizeterm.3x + + additional workaround for ImageMagick in test/picsmap.c +Index: VERSION +--- ncurses-6.3-20220219+/VERSION 2022-02-19 12:13:47.000000000 +0000 ++++ ncurses-6.3-20220226/VERSION 2022-02-26 12:23:15.000000000 +0000 +@@ -1 +1 @@ +-5:0:10 6.3 20220219 ++5:0:10 6.3 20220226 +Index: c++/cursslk.cc +Prereq: 1.19 +--- ncurses-6.3-20220219+/c++/cursslk.cc 2020-07-18 19:57:11.000000000 +0000 ++++ ncurses-6.3-20220226/c++/cursslk.cc 2022-02-26 17:57:23.000000000 +0000 +@@ -1,6 +1,6 @@ + // * this is for making emacs happy: -*-Mode: C++;-*- + /**************************************************************************** +- * Copyright 2019,2020 Thomas E. Dickey * ++ * Copyright 2019-2020,2022 Thomas E. Dickey * + * Copyright 1998-2005,2012 Free Software Foundation, Inc. * + * * + * Permission is hereby granted, free of charge, to any person obtaining a * +@@ -36,7 +36,7 @@ + #include "cursslk.h" + #include "cursesapp.h" + +-MODULE_ID("$Id: cursslk.cc,v 1.19 2020/07/18 19:57:11 anonymous.maarten Exp $") ++MODULE_ID("$Id: cursslk.cc,v 1.20 2022/02/26 17:57:23 tom Exp $") + + Soft_Label_Key_Set::Soft_Label_Key& + Soft_Label_Key_Set::Soft_Label_Key::operator=(char *text) +@@ -56,6 +56,8 @@ + + void Soft_Label_Key_Set::init() + { ++ if (num_labels > 12) ++ num_labels = 12; + slk_array = new Soft_Label_Key[num_labels]; + for(int i=0; i < num_labels; i++) { + slk_array[i].num = i+1; +Index: dist.mk +Prereq: 1.1467 +--- ncurses-6.3-20220219+/dist.mk 2022-02-19 12:13:47.000000000 +0000 ++++ ncurses-6.3-20220226/dist.mk 2022-02-26 12:23:15.000000000 +0000 +@@ -26,7 +26,7 @@ + # use or other dealings in this Software without prior written # + # authorization. # + ############################################################################## +-# $Id: dist.mk,v 1.1467 2022/02/19 12:13:47 tom Exp $ ++# $Id: dist.mk,v 1.1468 2022/02/26 12:23:15 tom Exp $ + # Makefile for creating ncurses distributions. + # + # This only needs to be used directly as a makefile by developers, but +@@ -38,7 +38,7 @@ + # These define the major/minor/patch versions of ncurses. + NCURSES_MAJOR = 6 + NCURSES_MINOR = 3 +-NCURSES_PATCH = 20220219 ++NCURSES_PATCH = 20220226 + + # We don't append the patch to the version, since this only applies to releases + VERSION = $(NCURSES_MAJOR).$(NCURSES_MINOR) +Index: ncurses/tinfo/alloc_entry.c +Prereq: 1.66 +--- ncurses-6.3-20220219+/ncurses/tinfo/alloc_entry.c 2021-08-08 00:09:37.000000000 +0000 ++++ ncurses-6.3-20220226/ncurses/tinfo/alloc_entry.c 2022-02-26 22:19:31.000000000 +0000 +@@ -1,5 +1,5 @@ + /**************************************************************************** +- * Copyright 2018-2020,2021 Thomas E. Dickey * ++ * Copyright 2018-2021,2022 Thomas E. Dickey * + * Copyright 1998-2013,2017 Free Software Foundation, Inc. * + * * + * Permission is hereby granted, free of charge, to any person obtaining a * +@@ -48,7 +48,7 @@ + + #include <tic.h> + +-MODULE_ID("$Id: alloc_entry.c,v 1.66 2021/08/08 00:09:37 tom Exp $") ++MODULE_ID("$Id: alloc_entry.c,v 1.68 2022/02/26 22:19:31 tom Exp $") + + #define ABSENT_OFFSET -1 + #define CANCELLED_OFFSET -2 +@@ -62,16 +62,18 @@ + _nc_init_entry(ENTRY * const tp) + /* initialize a terminal type data block */ + { ++ if (tp == NULL) { + #if NO_LEAKS +- if (tp == 0) { +- if (stringbuf != 0) { ++ if (stringbuf != NULL) { + FreeAndNull(stringbuf); + } + return; +- } ++#else ++ _nc_err_abort("_nc_init_entry called without initialization"); + #endif ++ } + +- if (stringbuf == 0) ++ if (stringbuf == NULL) + TYPE_MALLOC(char, (size_t) MAX_STRTAB, stringbuf); + + next_free = 0; +@@ -84,7 +86,7 @@ + { + ENTRY *newp = typeCalloc(ENTRY, 1); + +- if (newp != 0) { ++ if (newp != NULL) { + *newp = *oldp; + _nc_copy_termtype2(&(newp->tterm), &(oldp->tterm)); + } +@@ -99,26 +101,28 @@ + size_t old_next_free = next_free; + size_t len; + +- if (!VALID_STRING(string)) +- string = ""; +- len = strlen(string) + 1; +- +- if (len == 1 && next_free != 0) { +- /* +- * Cheat a little by making an empty string point to the end of the +- * previous string. +- */ +- if (next_free < MAX_STRTAB) { +- result = (stringbuf + next_free - 1); ++ if (stringbuf != NULL) { ++ if (!VALID_STRING(string)) ++ string = ""; ++ len = strlen(string) + 1; ++ ++ if (len == 1 && next_free != 0) { ++ /* ++ * Cheat a little by making an empty string point to the end of the ++ * previous string. ++ */ ++ if (next_free < MAX_STRTAB) { ++ result = (stringbuf + next_free - 1); ++ } ++ } else if (next_free + len < MAX_STRTAB) { ++ _nc_STRCPY(&stringbuf[next_free], string, MAX_STRTAB); ++ DEBUG(7, ("Saved string %s", _nc_visbuf(string))); ++ DEBUG(7, ("at location %d", (int) next_free)); ++ next_free += len; ++ result = (stringbuf + old_next_free); ++ } else { ++ _nc_warning("Too much data, some is lost: %s", string); + } +- } else if (next_free + len < MAX_STRTAB) { +- _nc_STRCPY(&stringbuf[next_free], string, MAX_STRTAB); +- DEBUG(7, ("Saved string %s", _nc_visbuf(string))); +- DEBUG(7, ("at location %d", (int) next_free)); +- next_free += len; +- result = (stringbuf + old_next_free); +- } else { +- _nc_warning("Too much data, some is lost: %s", string); + } + return result; + } +@@ -130,9 +134,14 @@ + int offsets[MAX_ENTRY_SIZE / sizeof(short)]; + int useoffsets[MAX_USES]; + unsigned i, n; +- unsigned nuses = ep->nuses; +- TERMTYPE2 *tp = &(ep->tterm); ++ unsigned nuses; ++ TERMTYPE2 *tp; ++ ++ if (ep == NULL || stringbuf == NULL) ++ _nc_err_abort("_nc_wrap_entry called without initialization"); + ++ nuses = ep->nuses; ++ tp = &(ep->tterm); + if (copy_strings) { + next_free = 0; /* clear static storage */ + +@@ -294,7 +303,7 @@ + NCURSES_EXPORT(void) + _nc_alloc_entry_leaks(void) + { +- if (stringbuf != 0) { ++ if (stringbuf != NULL) { + FreeAndNull(stringbuf); + } + next_free = 0; +Index: ncurses/tinfo/write_entry.c +Prereq: 1.118 +--- ncurses-6.3-20220219+/ncurses/tinfo/write_entry.c 2021-08-15 20:07:11.000000000 +0000 ++++ ncurses-6.3-20220226/ncurses/tinfo/write_entry.c 2022-02-26 20:59:58.000000000 +0000 +@@ -1,5 +1,5 @@ + /**************************************************************************** +- * Copyright 2018-2020,2021 Thomas E. Dickey * ++ * Copyright 2018-2021,2022 Thomas E. Dickey * + * Copyright 1998-2016,2017 Free Software Foundation, Inc. * + * * + * Permission is hereby granted, free of charge, to any person obtaining a * +@@ -51,7 +51,7 @@ + #define TRACE_NUM(n) /* nothing */ + #endif + +-MODULE_ID("$Id: write_entry.c,v 1.118 2021/08/15 20:07:11 tom Exp $") ++MODULE_ID("$Id: write_entry.c,v 1.119 2022/02/26 20:59:58 tom Exp $") + + static int total_written; + static int total_parts; +@@ -145,7 +145,7 @@ + rc = 0; + } + } else { +- if (strlen(top) + strlen(src) + 2 <= limit) { ++ if ((strlen(top) + strlen(src) + 6) <= limit) { + _nc_SPRINTF(dst, _nc_SLIMIT(limit) "%s/%s", top, src); + rc = 0; + } +Index: package/debian-mingw/changelog +--- ncurses-6.3-20220219+/package/debian-mingw/changelog 2022-02-19 12:13:47.000000000 +0000 ++++ ncurses-6.3-20220226/package/debian-mingw/changelog 2022-02-26 12:23:15.000000000 +0000 +@@ -1,8 +1,8 @@ +-ncurses6 (6.3+20220219) unstable; urgency=low ++ncurses6 (6.3+20220226) unstable; urgency=low + + * latest weekly patch + +- -- Thomas E. Dickey <dickey@invisible-island.net> Sat, 19 Feb 2022 07:13:47 -0500 ++ -- Thomas E. Dickey <dickey@invisible-island.net> Sat, 26 Feb 2022 07:23:15 -0500 + + ncurses6 (5.9-20131005) unstable; urgency=low + +Index: package/debian-mingw64/changelog +--- ncurses-6.3-20220219+/package/debian-mingw64/changelog 2022-02-19 12:13:47.000000000 +0000 ++++ ncurses-6.3-20220226/package/debian-mingw64/changelog 2022-02-26 12:23:15.000000000 +0000 +@@ -1,8 +1,8 @@ +-ncurses6 (6.3+20220219) unstable; urgency=low ++ncurses6 (6.3+20220226) unstable; urgency=low + + * latest weekly patch + +- -- Thomas E. Dickey <dickey@invisible-island.net> Sat, 19 Feb 2022 07:13:47 -0500 ++ -- Thomas E. Dickey <dickey@invisible-island.net> Sat, 26 Feb 2022 07:23:15 -0500 + + ncurses6 (5.9-20131005) unstable; urgency=low + +Index: package/debian/changelog +--- ncurses-6.3-20220219+/package/debian/changelog 2022-02-19 12:13:47.000000000 +0000 ++++ ncurses-6.3-20220226/package/debian/changelog 2022-02-26 12:23:15.000000000 +0000 +@@ -1,8 +1,8 @@ +-ncurses6 (6.3+20220219) unstable; urgency=low ++ncurses6 (6.3+20220226) unstable; urgency=low + + * latest weekly patch + +- -- Thomas E. Dickey <dickey@invisible-island.net> Sat, 19 Feb 2022 07:13:47 -0500 ++ -- Thomas E. Dickey <dickey@invisible-island.net> Sat, 26 Feb 2022 07:23:15 -0500 + + ncurses6 (5.9-20120608) unstable; urgency=low + +Index: package/mingw-ncurses.nsi +Prereq: 1.507 +--- ncurses-6.3-20220219+/package/mingw-ncurses.nsi 2022-02-19 12:13:47.000000000 +0000 ++++ ncurses-6.3-20220226/package/mingw-ncurses.nsi 2022-02-26 12:23:15.000000000 +0000 +@@ -1,4 +1,4 @@ +-; $Id: mingw-ncurses.nsi,v 1.507 2022/02/19 12:13:47 tom Exp $
++; $Id: mingw-ncurses.nsi,v 1.508 2022/02/26 12:23:15 tom Exp $
+
+ ; TODO add examples
+ ; TODO bump ABI to 6
+@@ -10,7 +10,7 @@ + !define VERSION_MAJOR "6"
+ !define VERSION_MINOR "3"
+ !define VERSION_YYYY "2022"
+-!define VERSION_MMDD "0219"
++!define VERSION_MMDD "0226"
+ !define VERSION_PATCH ${VERSION_YYYY}${VERSION_MMDD}
+
+ !define MY_ABI "5"
+Index: package/mingw-ncurses.spec +--- ncurses-6.3-20220219+/package/mingw-ncurses.spec 2022-02-19 12:13:47.000000000 +0000 ++++ ncurses-6.3-20220226/package/mingw-ncurses.spec 2022-02-26 12:23:15.000000000 +0000 +@@ -3,7 +3,7 @@ + Summary: shared libraries for terminal handling + Name: mingw32-ncurses6 + Version: 6.3 +-Release: 20220219 ++Release: 20220226 + License: X11 + Group: Development/Libraries + Source: ncurses-%{version}-%{release}.tgz +Index: package/ncurses.spec +--- ncurses-6.3-20220219+/package/ncurses.spec 2022-02-19 12:13:47.000000000 +0000 ++++ ncurses-6.3-20220226/package/ncurses.spec 2022-02-26 12:23:15.000000000 +0000 +@@ -1,7 +1,7 @@ + Summary: shared libraries for terminal handling + Name: ncurses6 + Version: 6.3 +-Release: 20220219 ++Release: 20220226 + License: X11 + Group: Development/Libraries + Source: ncurses-%{version}-%{release}.tgz +Index: package/ncursest.spec +--- ncurses-6.3-20220219+/package/ncursest.spec 2022-02-19 12:13:47.000000000 +0000 ++++ ncurses-6.3-20220226/package/ncursest.spec 2022-02-26 12:23:15.000000000 +0000 +@@ -1,7 +1,7 @@ + Summary: Curses library with POSIX thread support. + Name: ncursest6 + Version: 6.3 +-Release: 20220219 ++Release: 20220226 + License: X11 + Group: Development/Libraries + Source: ncurses-%{version}-%{release}.tgz +Index: progs/infocmp.c +Prereq: 1.151 +--- ncurses-6.3-20220219+/progs/infocmp.c 2021-06-17 21:11:08.000000000 +0000 ++++ ncurses-6.3-20220226/progs/infocmp.c 2022-02-26 23:25:55.000000000 +0000 +@@ -1,5 +1,5 @@ + /**************************************************************************** +- * Copyright 2020,2021 Thomas E. Dickey * ++ * Copyright 2020-2021,2022 Thomas E. Dickey * + * Copyright 1998-2016,2017 Free Software Foundation, Inc. * + * * + * Permission is hereby granted, free of charge, to any person obtaining a * +@@ -43,7 +43,7 @@ + + #include <dump_entry.h> + +-MODULE_ID("$Id: infocmp.c,v 1.151 2021/06/17 21:11:08 tom Exp $") ++MODULE_ID("$Id: infocmp.c,v 1.152 2022/02/26 23:25:55 tom Exp $") + + #define MAX_STRING 1024 /* maximum formatted string */ + +@@ -125,16 +125,20 @@ + } + + static char * +-canonical_name(char *ptr, char *buf) ++canonical_name(char *source, char *target) + /* extract the terminal type's primary name */ + { +- char *bp; ++ int limit = NAMESIZE; + +- _nc_STRCPY(buf, ptr, NAMESIZE); +- if ((bp = strchr(buf, '|')) != 0) +- *bp = '\0'; ++ while (--limit > 0) { ++ char ch = *source++; ++ if (ch == '|') ++ break; ++ *target++ = ch; ++ } ++ *target = '\0'; + +- return (buf); ++ return (target); + } + + static bool +Index: progs/tabs.c +Prereq: 1.50 +--- ncurses-6.3-20220219+/progs/tabs.c 2021-10-10 00:54:41.000000000 +0000 ++++ ncurses-6.3-20220226/progs/tabs.c 2022-02-26 22:44:44.000000000 +0000 +@@ -1,5 +1,5 @@ + /**************************************************************************** +- * Copyright 2020,2021 Thomas E. Dickey * ++ * Copyright 2020-2021,2022 Thomas E. Dickey * + * Copyright 2008-2016,2017 Free Software Foundation, Inc. * + * * + * Permission is hereby granted, free of charge, to any person obtaining a * +@@ -39,7 +39,7 @@ + #include <progs.priv.h> + #include <tty_settings.h> + +-MODULE_ID("$Id: tabs.c,v 1.50 2021/10/10 00:54:41 tom Exp $") ++MODULE_ID("$Id: tabs.c,v 1.51 2022/02/26 22:44:44 tom Exp $") + + static GCC_NORETURN void usage(void); + +@@ -128,7 +128,7 @@ + int prior = 0; + int ch; + +- if (result == 0) ++ if (result == NULL) + failed("decode_tabs"); + + if (margin < 0) +@@ -138,6 +138,8 @@ + if (isdigit(UChar(ch))) { + value *= 10; + value += (ch - '0'); ++ if (value > max_cols) ++ value = max_cols; + } else if (ch == ',') { + result[n] = value + prior + margin; + if (n > 0 && result[n] <= result[n - 1]) { +Index: progs/tput.c +Prereq: 1.97 +--- ncurses-6.3-20220219+/progs/tput.c 2021-10-02 18:09:23.000000000 +0000 ++++ ncurses-6.3-20220226/progs/tput.c 2022-02-26 23:19:31.000000000 +0000 +@@ -1,5 +1,5 @@ + /**************************************************************************** +- * Copyright 2018-2020,2021 Thomas E. Dickey * ++ * Copyright 2018-2021,2022 Thomas E. Dickey * + * Copyright 1998-2016,2017 Free Software Foundation, Inc. * + * * + * Permission is hereby granted, free of charge, to any person obtaining a * +@@ -47,7 +47,7 @@ + #include <transform.h> + #include <tty_settings.h> + +-MODULE_ID("$Id: tput.c,v 1.97 2021/10/02 18:09:23 tom Exp $") ++MODULE_ID("$Id: tput.c,v 1.99 2022/02/26 23:19:31 tom Exp $") + + #define PUTS(s) fputs(s, stdout) + +@@ -160,7 +160,7 @@ + name = check_aliases(argv[0], FALSE); + *used = 1; + if (is_reset || is_init) { +- TTY oldmode; ++ TTY oldmode = *settings; + + int terasechar = -1; /* new erase character */ + int intrchar = -1; /* new interrupt character */ +@@ -180,6 +180,7 @@ + #endif + set_control_chars(settings, terasechar, intrchar, tkillchar); + set_conversions(settings); ++ + if (send_init_strings(fd, &oldmode)) { + reset_flush(); + } +@@ -336,6 +337,7 @@ + int result = 0; + int fd; + int used; ++ TTY old_settings; + TTY tty_settings; + bool opt_x = FALSE; /* clear scrollback if possible */ + bool is_alias; +@@ -391,6 +393,7 @@ + quit(ErrUsage, "No value for $TERM and no -T specified"); + + fd = save_tty_settings(&tty_settings, need_tty); ++ old_settings = tty_settings; + + if (setupterm(term, fd, &errret) != OK && errret <= 0) + quit(ErrTermType, "unknown terminal \"%s\"", term); +@@ -400,6 +403,7 @@ + if ((argc <= 0) && !is_alias) + usage(NULL); + while (argc > 0) { ++ tty_settings = old_settings; + code = tput_cmd(fd, &tty_settings, opt_x, argc, argv, &used); + if (code != 0) + break; +@@ -433,7 +437,9 @@ + + argnow = argvec; + while (argnum > 0) { +- int code = tput_cmd(fd, &tty_settings, opt_x, argnum, argnow, &used); ++ int code; ++ tty_settings = old_settings; ++ code = tput_cmd(fd, &tty_settings, opt_x, argnum, argnow, &used); + if (code != 0) { + if (result == 0) + result = ErrSystem(0); /* will return value >4 */ +Index: test/ncurses.c +Prereq: 1.527 +--- ncurses-6.3-20220219+/test/ncurses.c 2021-09-04 10:31:03.000000000 +0000 ++++ ncurses-6.3-20220226/test/ncurses.c 2022-02-26 22:41:02.000000000 +0000 +@@ -1,5 +1,5 @@ + /**************************************************************************** +- * Copyright 2018-2020,2021 Thomas E. Dickey * ++ * Copyright 2018-2021,2022 Thomas E. Dickey * + * Copyright 1998-2016,2017 Free Software Foundation, Inc. * + * * + * Permission is hereby granted, free of charge, to any person obtaining a * +@@ -41,7 +41,7 @@ + Author: Eric S. Raymond <esr@snark.thyrsus.com> 1993 + Thomas E. Dickey (beginning revision 1.27 in 1996). + +-$Id: ncurses.c,v 1.527 2021/09/04 10:31:03 tom Exp $ ++$Id: ncurses.c,v 1.528 2022/02/26 22:41:02 tom Exp $ + + ***************************************************************************/ + +@@ -2885,6 +2885,10 @@ + while (fgets(buffer, sizeof(buffer), fp) != 0) { + if (sscanf(buffer, "scale:%d", &c) == 1) { + scale = c; ++ if (scale < 100) ++ scale = 100; ++ if (scale > 1000) ++ scale = 1000; + } else if (sscanf(buffer, "%d:%d %d %d", + &c, + &red, |