3621 static PyObject*
3622 Keytab_setattr(PyObject *unself __UNUSED, PyObject *args)
3623 {
3624 char *name;
3625 PyObject *self, *value, *nameo, *tmp;
3626 PyInstanceObject *inst;
3627 krb5_context ctx = NULL;
3628 krb5_keytab keytab = NULL;
3629
3630 if(!PyArg_ParseTuple(args, "OO!O:__setattr__", &self, &PyString_Type, &nameo, &value))
when PyArg_ParseTuple() succeeds
taking False path
3631 return NULL;
3632 inst = (PyInstanceObject *)self;
3633
3634 name = PyString_AsString(nameo);
when PyString_AsString() succeeds
3635
3636 if(strcmp(name, "context") && strcmp(name, "_keytab"))
taking False path
when considering range: -0x80000000 <= value <= -1
taking True path
taking False path
when considering range: -0x80000000 <= value <= -1
taking True path
3637 {
3638 tmp = PyObject_GetAttrString(self, "context");
when PyObject_GetAttrString() succeeds
new ref from call to PyObject_GetAttrString allocated at: tmp = PyObject_GetAttrString(self, "context");
ob_refcnt is now refs: 1 + N where N >= 0
3639 if(tmp)
taking True path
3640 {
3641 tmp = PyObject_GetAttrString(tmp, "_ctx");
when PyObject_GetAttrString() succeeds
3642 if(tmp)
taking True path
3643 ctx = PyCObject_AsVoidPtr(tmp);
when PyCObject_AsVoidPtr() returns
3644 }
3645 tmp = PyObject_GetAttrString(self, "_keytab");
when PyObject_GetAttrString() succeeds
3646 if(tmp)
taking True path
3647 keytab = PyCObject_AsVoidPtr(tmp);
when PyCObject_AsVoidPtr() returns
3648 }
3649
3650 if((!strcmp(name, "context") && ctx)
taking False path
when considering value == (int)0 from krb5module.c:3650
taking True path
when treating unknown void * from krb5module.c:3643 as NULL
taking False path
3651 || (!strcmp(name, "_keytab") && keytab)
taking False path
when considering range: -0x80000000 <= value <= -1
taking False path
3652 || !strcmp(name, "name")
taking False path
when considering range: -0x80000000 <= value <= -1
taking False path
3653 )
3654 {
3655 PyErr_Format(PyExc_AttributeError, "You cannot set attribute '%.400s'", name);
3656 return NULL;
3657 }
3658 else
3659 PyDict_SetItem(inst->in_dict, nameo, value);
when treating unknown struct PyObject * from krb5module.c:3659 as non-NULL
when PyDict_SetItem() succeeds
3660
3661 Py_INCREF(Py_None);
3662 return Py_None;
3663 } /* KrbV.Keytab.__setattr__() */
ob_refcnt of new ref from call to PyObject_GetAttrString is 1 too high
was expecting final ob_refcnt to be N + 0 (for some unknown N)
but final ob_refcnt is N + 1
found 59 similar trace(s) to this