1# ncurses 6.1 - patch 20191015 - Thomas E. Dickey
2#
3# ------------------------------------------------------------------------------
4#
5# Ncurses 6.1 is at
6# 	ftp.gnu.org:/pub/gnu
7#
8# Patches for ncurses 6.1 can be found at
9# 	ftp://ftp.invisible-island.net/ncurses/6.1
10#	http://invisible-mirror.net/archives/ncurses/6.1
11#
12# ------------------------------------------------------------------------------
13# ftp://ftp.invisible-island.net/ncurses/6.1/ncurses-6.1-20191015.patch.gz
14# patch by Thomas E. Dickey <dickey@invisible-island.net>
15# created  Wed Oct 16 00:42:21 UTC 2019
16# ------------------------------------------------------------------------------
17# NEWS                             |   10 +++++++++-
18# VERSION                          |    2 +-
19# dist.mk                          |    4 ++--
20# ncurses/tinfo/captoinfo.c        |   34 ++++++++++++++++++++--------------
21# package/debian-mingw/changelog   |    4 ++--
22# package/debian-mingw64/changelog |    4 ++--
23# package/debian/changelog         |    4 ++--
24# package/mingw-ncurses.nsi        |    4 ++--
25# package/mingw-ncurses.spec       |    2 +-
26# package/ncurses.spec             |    2 +-
27# package/ncursest.spec            |    2 +-
28# progs/tic.c                      |    5 +++--
29# 12 files changed, 46 insertions(+), 31 deletions(-)
30# ------------------------------------------------------------------------------
31Index: NEWS
32Prereq:  1.3389
33--- ncurses-6.1-20191012+/NEWS	2019-10-12 21:17:50.000000000 +0000
34+++ ncurses-6.1-20191015/NEWS	2019-10-16 00:04:31.000000000 +0000
35@@ -25,7 +25,7 @@
36 -- sale, use or other dealings in this Software without prior written        --
37 -- authorization.                                                            --
38 -------------------------------------------------------------------------------
39--- $Id: NEWS,v 1.3389 2019/10/12 21:17:50 tom Exp $
40+-- $Id: NEWS,v 1.3393 2019/10/16 00:04:31 tom Exp $
41 -------------------------------------------------------------------------------
42
43 This is a log of changes that ncurses has gone through since Zeyd started
44@@ -45,6 +45,14 @@
45 Changes through 1.9.9e did not credit all contributions;
46 it is not possible to add this information.
47
48+20191015
49+	+ improve buffer-checks in captoinfo.c, for some cases when the
50+	  input string is shorter than expected.
51+	> fix two errata in tic (report/testcases by Hongxu Chen):
52+	+ check for missing character after backslash in write_it
53+	+ check for missing characters after "%>" when converting from termcap
54+	  syntax (cf: 980530).
55+
56 20191012
57 	+ amend recent changes to ncurses*-config and pc-files to filter out
58 	  Debian linker-flags (report by Sven Joachim, cf: 20150516).
59Index: VERSION
60--- ncurses-6.1-20191012+/VERSION	2019-10-12 15:30:55.000000000 +0000
61+++ ncurses-6.1-20191015/VERSION	2019-10-15 21:46:57.000000000 +0000
62@@ -1 +1 @@
63-5:0:10	6.1	20191012
64+5:0:10	6.1	20191015
65Index: dist.mk
66Prereq:  1.1309
67--- ncurses-6.1-20191012+/dist.mk	2019-10-12 15:30:55.000000000 +0000
68+++ ncurses-6.1-20191015/dist.mk	2019-10-15 21:46:57.000000000 +0000
69@@ -25,7 +25,7 @@
70 # use or other dealings in this Software without prior written               #
71 # authorization.                                                             #
72 ##############################################################################
73-# $Id: dist.mk,v 1.1309 2019/10/12 15:30:55 tom Exp $
74+# $Id: dist.mk,v 1.1310 2019/10/15 21:46:57 tom Exp $
75 # Makefile for creating ncurses distributions.
76 #
77 # This only needs to be used directly as a makefile by developers, but
78@@ -37,7 +37,7 @@
79 # These define the major/minor/patch versions of ncurses.
80 NCURSES_MAJOR = 6
81 NCURSES_MINOR = 1
82-NCURSES_PATCH = 20191012
83+NCURSES_PATCH = 20191015
84
85 # We don't append the patch to the version, since this only applies to releases
86 VERSION = $(NCURSES_MAJOR).$(NCURSES_MINOR)
87Index: ncurses/tinfo/captoinfo.c
88Prereq:  1.96
89--- ncurses-6.1-20191012+/ncurses/tinfo/captoinfo.c	2018-05-12 16:46:55.000000000 +0000
90+++ ncurses-6.1-20191015/ncurses/tinfo/captoinfo.c	2019-10-15 23:13:35.000000000 +0000
91@@ -1,5 +1,5 @@
92 /****************************************************************************
93- * Copyright (c) 1998-2017,2018 Free Software Foundation, Inc.              *
94+ * Copyright (c) 1998-2018,2019 Free Software Foundation, Inc.              *
95  *                                                                          *
96  * Permission is hereby granted, free of charge, to any person obtaining a  *
97  * copy of this software and associated documentation files (the            *
98@@ -97,7 +97,7 @@
99 #include <ctype.h>
100 #include <tic.h>
101
102-MODULE_ID("$Id: captoinfo.c,v 1.96 2018/05/12 16:46:55 tom Exp $")
103+MODULE_ID("$Id: captoinfo.c,v 1.97 2019/10/15 23:13:35 tom Exp $")
104
105 #if 0
106 #define DEBUG_THIS(p) DEBUG(9, p)
107@@ -210,7 +210,7 @@
108 	    break;
109 	default:
110 	    c = UChar(*sp);
111-	    len = 2;
112+	    len = (c != '\0') ? 2 : 1;
113 	    break;
114 	}
115 	break;
116@@ -224,13 +224,13 @@
117 	break;
118     default:
119 	c = UChar(*sp);
120-	len = 1;
121+	len = (c != '\0') ? 1 : 0;
122     }
123     if (isgraph(c) && c != ',' && c != '\'' && c != '\\' && c != ':') {
124 	dp = save_string(dp, "%\'");
125 	dp = save_char(dp, c);
126 	dp = save_char(dp, '\'');
127-    } else {
128+    } else if (c != '\0') {
129 	dp = save_string(dp, "%{");
130 	if (c > 99)
131 	    dp = save_char(dp, c / 100 + '0');
132@@ -313,7 +313,7 @@
133     if (s == 0)
134 	s = "";
135     if (parameterized >= 0 && isdigit(UChar(*s)))
136-	for (capstart = s;; s++)
137+	for (capstart = s; *s != '\0'; s++)
138 	    if (!(isdigit(UChar(*s)) || *s == '*' || *s == '.'))
139 		break;
140
141@@ -360,13 +360,18 @@
142 		dp = save_string(dp, "%{2}%*%-");
143 		break;
144 	    case '>':
145-		getparm(param, 2);
146 		/* %?%{x}%>%t%{y}%+%; */
147-		dp = save_string(dp, "%?");
148-		s += cvtchar(s);
149-		dp = save_string(dp, "%>%t");
150-		s += cvtchar(s);
151-		dp = save_string(dp, "%+%;");
152+		if (s[0] && s[1]) {
153+		    getparm(param, 2);
154+		    dp = save_string(dp, "%?");
155+		    s += cvtchar(s);
156+		    dp = save_string(dp, "%>%t");
157+		    s += cvtchar(s);
158+		    dp = save_string(dp, "%+%;");
159+		} else {
160+		    _nc_warning("expected two characters after %%>");
161+		    dp = save_string(dp, "%>");
162+		}
163 		break;
164 	    case 'a':
165 		if ((*s == '=' || *s == '+' || *s == '-'
166@@ -492,7 +497,8 @@
167 	    }
168 	    break;
169 	default:
170-	    dp = save_char(dp, *s++);
171+	    if (*s != '\0')
172+		dp = save_char(dp, *s++);
173 	    break;
174 	}
175     }
176@@ -503,7 +509,7 @@
177      */
178     if (capstart) {
179 	dp = save_string(dp, "$<");
180-	for (s = capstart;; s++)
181+	for (s = capstart; *s != '\0'; s++)
182 	    if (isdigit(UChar(*s)) || *s == '*' || *s == '.')
183 		dp = save_char(dp, *s);
184 	    else
185Index: package/debian-mingw/changelog
186--- ncurses-6.1-20191012+/package/debian-mingw/changelog	2019-10-12 15:30:55.000000000 +0000
187+++ ncurses-6.1-20191015/package/debian-mingw/changelog	2019-10-15 21:46:57.000000000 +0000
188@@ -1,8 +1,8 @@
189-ncurses6 (6.1+20191012) unstable; urgency=low
190+ncurses6 (6.1+20191015) unstable; urgency=low
191
192   * latest weekly patch
193
194- -- Thomas E. Dickey <dickey@invisible-island.net>  Fri, 11 Oct 2019 19:37:45 -0400
195+ -- Thomas E. Dickey <dickey@invisible-island.net>  Tue, 15 Oct 2019 17:46:57 -0400
196
197 ncurses6 (5.9-20131005) unstable; urgency=low
198
199Index: package/debian-mingw64/changelog
200--- ncurses-6.1-20191012+/package/debian-mingw64/changelog	2019-10-12 15:30:55.000000000 +0000
201+++ ncurses-6.1-20191015/package/debian-mingw64/changelog	2019-10-15 21:46:57.000000000 +0000
202@@ -1,8 +1,8 @@
203-ncurses6 (6.1+20191012) unstable; urgency=low
204+ncurses6 (6.1+20191015) unstable; urgency=low
205
206   * latest weekly patch
207
208- -- Thomas E. Dickey <dickey@invisible-island.net>  Fri, 11 Oct 2019 19:37:45 -0400
209+ -- Thomas E. Dickey <dickey@invisible-island.net>  Tue, 15 Oct 2019 17:46:57 -0400
210
211 ncurses6 (5.9-20131005) unstable; urgency=low
212
213Index: package/debian/changelog
214--- ncurses-6.1-20191012+/package/debian/changelog	2019-10-12 15:30:55.000000000 +0000
215+++ ncurses-6.1-20191015/package/debian/changelog	2019-10-15 21:46:57.000000000 +0000
216@@ -1,8 +1,8 @@
217-ncurses6 (6.1+20191012) unstable; urgency=low
218+ncurses6 (6.1+20191015) unstable; urgency=low
219
220   * latest weekly patch
221
222- -- Thomas E. Dickey <dickey@invisible-island.net>  Fri, 11 Oct 2019 19:37:45 -0400
223+ -- Thomas E. Dickey <dickey@invisible-island.net>  Tue, 15 Oct 2019 17:46:57 -0400
224
225 ncurses6 (5.9-20120608) unstable; urgency=low
226
227Index: package/mingw-ncurses.nsi
228Prereq:  1.355
229--- ncurses-6.1-20191012+/package/mingw-ncurses.nsi	2019-10-12 15:30:55.000000000 +0000
230+++ ncurses-6.1-20191015/package/mingw-ncurses.nsi	2019-10-15 21:46:57.000000000 +0000
231@@ -1,4 +1,4 @@
232-; $Id: mingw-ncurses.nsi,v 1.355 2019/10/12 15:30:55 tom Exp $
233+; $Id: mingw-ncurses.nsi,v 1.356 2019/10/15 21:46:57 tom Exp $
234
235 ; TODO add examples
236 ; TODO bump ABI to 6
237@@ -10,7 +10,7 @@
238 !define VERSION_MAJOR "6"
239 !define VERSION_MINOR "1"
240 !define VERSION_YYYY  "2019"
241-!define VERSION_MMDD  "1012"
242+!define VERSION_MMDD  "1015"
243 !define VERSION_PATCH ${VERSION_YYYY}${VERSION_MMDD}
244
245 !define MY_ABI   "5"
246Index: package/mingw-ncurses.spec
247--- ncurses-6.1-20191012+/package/mingw-ncurses.spec	2019-10-12 15:30:55.000000000 +0000
248+++ ncurses-6.1-20191015/package/mingw-ncurses.spec	2019-10-15 21:46:57.000000000 +0000
249@@ -3,7 +3,7 @@
250 Summary: shared libraries for terminal handling
251 Name: mingw32-ncurses6
252 Version: 6.1
253-Release: 20191012
254+Release: 20191015
255 License: X11
256 Group: Development/Libraries
257 Source: ncurses-%{version}-%{release}.tgz
258Index: package/ncurses.spec
259--- ncurses-6.1-20191012+/package/ncurses.spec	2019-10-12 15:30:55.000000000 +0000
260+++ ncurses-6.1-20191015/package/ncurses.spec	2019-10-15 21:46:57.000000000 +0000
261@@ -1,7 +1,7 @@
262 Summary: shared libraries for terminal handling
263 Name: ncurses6
264 Version: 6.1
265-Release: 20191012
266+Release: 20191015
267 License: X11
268 Group: Development/Libraries
269 Source: ncurses-%{version}-%{release}.tgz
270Index: package/ncursest.spec
271--- ncurses-6.1-20191012+/package/ncursest.spec	2019-10-12 15:30:55.000000000 +0000
272+++ ncurses-6.1-20191015/package/ncursest.spec	2019-10-15 21:46:57.000000000 +0000
273@@ -1,7 +1,7 @@
274 Summary: Curses library with POSIX thread support.
275 Name: ncursest6
276 Version: 6.1
277-Release: 20191012
278+Release: 20191015
279 License: X11
280 Group: Development/Libraries
281 Source: ncurses-%{version}-%{release}.tgz
282Index: progs/tic.c
283Prereq:  1.278
284--- ncurses-6.1-20191012+/progs/tic.c	2019-07-27 22:44:21.000000000 +0000
285+++ ncurses-6.1-20191015/progs/tic.c	2019-10-15 22:18:29.000000000 +0000
286@@ -48,7 +48,7 @@
287 #include <parametrized.h>
288 #include <transform.h>
289
290-MODULE_ID("$Id: tic.c,v 1.278 2019/07/27 22:44:21 tom Exp $")
291+MODULE_ID("$Id: tic.c,v 1.279 2019/10/15 22:18:29 tom Exp $")
292
293 #define STDIN_NAME "<stdin>"
294
295@@ -218,7 +218,8 @@
296 	    while ((ch = *t++) != 0) {
297 		*d++ = (char) ch;
298 		if (ch == '\\') {
299-		    *d++ = *t++;
300+		    if ((*d++ = *t++) == '\0')
301+			break;
302 		} else if ((ch == '%')
303 			   && (*t == L_BRACE)) {
304 		    char *v = 0;
305