summaryrefslogtreecommitdiff
path: root/Modules/_cursesmodule.c
diff options
context:
space:
mode:
authorAndrew M. Kuchling <amk@amk.ca>2009-09-25 22:23:54 +0000
committerAndrew M. Kuchling <amk@amk.ca>2009-09-25 22:23:54 +0000
commitb49e53ee16eba81fb9548843d24d1cc328f2095a (patch)
treea507805bd930a95bf0798bc6de3d9441f3414179 /Modules/_cursesmodule.c
parenta9a7611fb6b1a69d0ab9474da2b9cf9e8b294b54 (diff)
downloadcpython-git-b49e53ee16eba81fb9548843d24d1cc328f2095a.tar.gz
#6243: fix segfault when keyname() returns a NULL pointer.
Bug noted by Trundle, patched by Trundle and Jerry Chen.
Diffstat (limited to 'Modules/_cursesmodule.c')
-rw-r--r--Modules/_cursesmodule.c11
1 files changed, 7 insertions, 4 deletions
diff --git a/Modules/_cursesmodule.c b/Modules/_cursesmodule.c
index cd143a4ae1..53fa432dc0 100644
--- a/Modules/_cursesmodule.c
+++ b/Modules/_cursesmodule.c
@@ -882,14 +882,17 @@ PyCursesWindow_GetKey(PyCursesWindowObject *self, PyObject *args)
/* 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 *