diff Objects/object.c @ 12991:1a40f00a48bf legacy-trunk

raise TypeError when PyObject_Get/SetAttr called with non-string name
author Jeremy Hylton <jeremy@alum.mit.edu>
date Fri, 23 Jun 2000 14:36:32 +0000
parents 752aa8dff520
children bf1ebe869878
line wrap: on
line diff
--- a/Objects/object.c	Fri Jun 23 14:18:11 2000 +0000
+++ b/Objects/object.c	Fri Jun 23 14:36:32 2000 +0000
@@ -600,8 +600,13 @@
 {
 	if (v->ob_type->tp_getattro != NULL)
 		return (*v->ob_type->tp_getattro)(v, name);
-	else
-		return PyObject_GetAttrString(v, PyString_AsString(name));
+
+	if (!PyString_Check(name)) {
+		PyErr_SetString(PyExc_TypeError,
+				"attribute name must be string");
+		return NULL;
+	}
+	return PyObject_GetAttrString(v, PyString_AS_STRING(name));
 }
 
 int
@@ -626,12 +631,19 @@
 {
 	int err;
 	Py_INCREF(name);
-	PyString_InternInPlace(&name);
+	if (PyString_Check(name))
+		PyString_InternInPlace(&name);
 	if (v->ob_type->tp_setattro != NULL)
 		err = (*v->ob_type->tp_setattro)(v, name, value);
-	else
+	else if (PyString_Check(name)) {
 		err = PyObject_SetAttrString(
-			v, PyString_AsString(name), value);
+			v, PyString_AS_STRING(name), value);
+	}
+	else {
+		PyErr_SetString(PyExc_TypeError,
+				"attribute name must be string");
+		err = -1;
+	}
 	Py_DECREF(name);
 	return err;
 }