Index: Modules/dbmmodule.c =================================================================== --- Modules/dbmmodule.c (revision 84317) +++ Modules/dbmmodule.c (working copy) @@ -168,12 +168,18 @@ dbm_contains(register dbmobject *dp, PyObject *v) { datum key, val; + Py_ssize_t dsize; - if (PyString_AsStringAndSize(v, (char **)&key.dptr, - (Py_ssize_t *)&key.dsize)) { + if (PyString_AsStringAndSize(v, (char **)&key.dptr, &dsize)) { return -1; } + /* Coerce from Py_ssize_t down to int: */ + if (dsize > INT_MAX) { + return -1; + } + key.dsize = dsize; + /* Expand check_dbmobject_open to return -1 */ if (dp->di_dbm == NULL) { PyErr_SetString(DbmError, "DBM object has already been closed");