--- Orig/fcntlmodule.c 2003-06-29 20:54:04.000000000 -0500 +++ fcntlmodule.c 2006-02-16 16:11:23.000000000 -0600 @@ -157,12 +157,13 @@ PyErr_Clear(); if (PyArg_ParseTuple(args, "O&is#:ioctl", conv_descriptor, &fd, &code, &str, &len)) { - if (len > sizeof buf) { + if (len > (sizeof buf - 1)) { PyErr_SetString(PyExc_ValueError, "ioctl string arg too long"); return NULL; } memcpy(buf, str, len); + buf[len] = '\0'; Py_BEGIN_ALLOW_THREADS ret = ioctl(fd, code, buf); Py_END_ALLOW_THREADS