File ncurses-5.9-bsc1115929.patch of Package ncurses.28806

For bug bsc#1115929 port back null pointer checks
to catch e.g. the crash in _nc_parse_entry()

Note: do not apply check in form_driver() as ncurses 5.9
does not know about move_after_insert.

|--- form/frm_driver.c
|+++ form/frm_driver.c	2018-11-20 09:46:26.195713565 +0000
|@@ -4293,7 +4293,7 @@ form_driver(FORM *form, int c)
|   if (!form)
|     RETURN(E_BAD_ARGUMENT);
| 
|-  if (!(form->field))
|+  if (!(form->field) || !(form->current))
|     RETURN(E_NOT_CONNECTED);
| 
|   assert(form->page);
--- ncurses/base/safe_sprintf.c
+++ ncurses/base/safe_sprintf.c	2018-11-20 09:48:24.221186714 +0000
@@ -224,7 +224,7 @@ NCURSES_SP_NAME(_nc_printf_string) (NCUR
 {
     char *result = 0;
 
-    if (fmt != 0) {
+    if (SP_PARM != 0 && fmt != 0) {
 #if USE_SAFE_SPRINTF
 	va_list ap2;
 	int len;
--- ncurses/tinfo/comp_parse.c
+++ ncurses/tinfo/comp_parse.c	2018-11-20 09:38:48.206001951 +0000
@@ -319,6 +319,9 @@ _nc_resolve_uses2(bool fullresolve, bool
 	    char *lookfor = qp->uses[i].name;
 	    long lookline = qp->uses[i].line;
 
+	    if (lookfor == 0)
+		continue;
+
 	    foundit = FALSE;
 
 	    _nc_set_type(child);
@@ -396,7 +399,8 @@ _nc_resolve_uses2(bool fullresolve, bool
 		     * subsequent pass.
 		     */
 		    for (i = 0; i < qp->nuses; i++)
-			if (qp->uses[i].link->nuses) {
+			if (qp->uses[i].link
+			    && qp->uses[i].link->nuses) {
 			    DEBUG(2, ("%s: use entry %d unresolved",
 				      _nc_first_name(qp->tterm.term_names), i));
 			    goto incomplete;
--- ncurses/tinfo/parse_entry.c
+++ ncurses/tinfo/parse_entry.c	2018-11-20 09:42:59.245131721 +0000
@@ -536,7 +536,8 @@ _nc_parse_entry(struct entry *entryp, in
 		 * have picked up defaults via translation.
 		 */
 		for (i = 0; i < entryp->nuses; i++)
-		    if (!strchr((char *) entryp->uses[i].name, '+'))
+		    if (entryp->uses[i].name != 0
+			&& !strchr((char *) entryp->uses[i].name, '+'))
 			has_base_entry = TRUE;
 
 	    postprocess_termcap(&entryp->tterm, has_base_entry);
openSUSE Build Service is sponsored by