Module Name:    src
Committed By:   blymn
Date:           Wed Dec 15 21:07:12 UTC 2021

Modified Files:
        src/lib/libterminfo: tputs.c

Log Message:
Fix for PR lib/56298

Remove the DIAGASSERT for str being NULL in the puts/putp functions,
add protection so that the functions just return OK if str is NULL.
This prevents the assert firing when libcurses passes through a NULL
due to an undefined terminfo entry.


To generate a diff of this commit:
cvs rdiff -u -r1.5 -r1.6 src/lib/libterminfo/tputs.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/lib/libterminfo/tputs.c
diff -u src/lib/libterminfo/tputs.c:1.5 src/lib/libterminfo/tputs.c:1.6
--- src/lib/libterminfo/tputs.c:1.5	Thu Oct  3 18:02:05 2019
+++ src/lib/libterminfo/tputs.c	Wed Dec 15 21:07:12 2021
@@ -1,4 +1,4 @@
-/* $NetBSD: tputs.c,v 1.5 2019/10/03 18:02:05 christos Exp $ */
+/* $NetBSD: tputs.c,v 1.6 2021/12/15 21:07:12 blymn Exp $ */
 
 /*
  * Copyright (c) 2009 The NetBSD Foundation, Inc.
@@ -28,7 +28,7 @@
  */
 
 #include <sys/cdefs.h>
-__RCSID("$NetBSD: tputs.c,v 1.5 2019/10/03 18:02:05 christos Exp $");
+__RCSID("$NetBSD: tputs.c,v 1.6 2021/12/15 21:07:12 blymn Exp $");
 
 #include <assert.h>
 #include <ctype.h>
@@ -135,9 +135,11 @@ ti_puts(const TERMINAL *term, const char
 	char pc;
 
 	_DIAGASSERT(term != NULL);
-	_DIAGASSERT(str != NULL);
 	_DIAGASSERT(outc != NULL);
 
+	if (str == NULL)
+		return OK;
+
 	dodelay = (str == t_bell(term) ||
 	    str == t_flash_screen(term) ||
 	    (t_xon_xoff(term) == 0 && t_padding_baud_rate(term) != 0));
@@ -155,7 +157,6 @@ ti_putp(const TERMINAL *term, const char
 {
 
 	_DIAGASSERT(term != NULL);
-	_DIAGASSERT(str != NULL);
 	return ti_puts(term, str, 1,
 	    (int (*)(int, void *))(void *)putchar, NULL);
 }
@@ -164,7 +165,6 @@ int
 tputs(const char *str, int affcnt, int (*outc)(int))
 {
 
-	_DIAGASSERT(str != NULL);
 	_DIAGASSERT(outc != NULL);
 	return _ti_puts(1, ospeed, PC, str, affcnt,
 	    (int (*)(int, void *))(void *)outc, NULL);
@@ -174,6 +174,5 @@ int
 putp(const char *str)
 {
 
-	_DIAGASSERT(str != NULL);
 	return tputs(str, 1, putchar);
 }

Reply via email to