diff Modules/_cursesmodule.c @ 56224:2bfaddb19c3a legacy-trunk

#6243: fix segfault when keyname() returns a NULL pointer. Bug noted by Trundle, patched by Trundle and Jerry Chen.
author Andrew M. Kuchling <amk@amk.ca>
date Fri, 25 Sep 2009 22:23:54 +0000
parents a29babb54884
children 23115015e5b9
line wrap: on
line diff
--- a/Modules/_cursesmodule.c	Fri Sep 25 16:07:55 2009 +0000
+++ b/Modules/_cursesmodule.c	Fri Sep 25 22:23:54 2009 +0000
@@ -882,14 +882,17 @@
     /* getch() returns ERR in nodelay mode */
     PyErr_SetString(PyCursesError, "no input");
     return NULL;
-  } else if (rtn<=255)
+  } else if (rtn<=255) {
     return Py_BuildValue("c", rtn);
-  else
+  } else {
+    const char *knp;
 #if defined(__NetBSD__)
-    return PyString_FromString(unctrl(rtn));
+    knp = unctrl(rtn);
 #else
-    return PyString_FromString((char *)keyname(rtn));
+    knp = keyname(rtn);
 #endif
+    return PyString_FromString((knp == NULL) ? "" : knp);
+  }
 }
 
 static PyObject *