summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGuido van Rossum <guido@python.org>2007-08-27 23:24:46 (GMT)
committerGuido van Rossum <guido@python.org>2007-08-27 23:24:46 (GMT)
commit7d5baac81ce7617bc70f721b0ad90e95391063bb (patch)
tree7a3ed5e848ecd0a50d2cdb151a84e22c40d047f6
parent26d95c3d07eb0893c7867d935d61a0fb7be43f2d (diff)
downloadcpython-7d5baac81ce7617bc70f721b0ad90e95391063bb.zip
cpython-7d5baac81ce7617bc70f721b0ad90e95391063bb.tar.gz
cpython-7d5baac81ce7617bc70f721b0ad90e95391063bb.tar.bz2
posix.confname(): enforce that names as str instances.
-rw-r--r--Modules/posixmodule.c10
1 files changed, 7 insertions, 3 deletions
diff --git a/Modules/posixmodule.c b/Modules/posixmodule.c
index 98b125c..4e6e0c5 100644
--- a/Modules/posixmodule.c
+++ b/Modules/posixmodule.c
@@ -5441,7 +5441,7 @@ struct constdef {
static int
conv_confname(PyObject *arg, int *valuep, struct constdef *table,
- size_t tablesize)
+ size_t tablesize)
{
if (PyInt_Check(arg)) {
*valuep = PyInt_AS_LONG(arg);
@@ -5450,16 +5450,20 @@ conv_confname(PyObject *arg, int *valuep, struct constdef *table,
else {
/* look up the value in the table using a binary search */
size_t lo = 0;
- size_t mid;
+ size_t mid;
size_t hi = tablesize;
int cmp;
const char *confname;
Py_ssize_t namelen;
- if (PyObject_AsCharBuffer(arg, &confname, &namelen) < 0) {
+ if (!PyUnicode_Check(arg)) {
PyErr_SetString(PyExc_TypeError,
"configuration names must be strings or integers");
return 0;
}
+ confname = PyUnicode_AsString(arg);
+ if (confname == NULL)
+ return 0;
+ namelen = strlen(confname);
while (lo < hi) {
mid = (lo + hi) / 2;
cmp = strcmp(confname, table[mid].name);