File: krb5module.c
Function: Keytab_getattr
Error: ob_refcnt of new ref from call to PyObject_GetAttrString is 1 too high
3562 static PyObject*
3563 Keytab_getattr(PyObject *unself __UNUSED, PyObject *args)
3564 {
3565   char *name;
3566   PyObject *retval = NULL, *self, *tmp;
3567   krb5_context ctx = NULL;
3568   krb5_keytab keytab = NULL;
3569   krb5_error_code rc;
3570 
3571   if(!PyArg_ParseTuple(args, "Os:__getattr__", &self, &name))
when PyArg_ParseTuple() succeeds
taking False path
3572     return NULL;
3573 
3574   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
3575     {
3576       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
3577       if(tmp)
taking True path
3578 	{
3579 	  tmp = PyObject_GetAttrString(tmp, "_ctx");
when PyObject_GetAttrString() fails
3580 	  if(tmp)
taking False path
3581 	    ctx = PyCObject_AsVoidPtr(tmp);
3582 	}
3583       tmp = PyObject_GetAttrString(self, "_keytab");
when PyObject_GetAttrString() succeeds
3584       if(tmp)
taking True path
3585 	keytab = PyCObject_AsVoidPtr(tmp);
when PyCObject_AsVoidPtr() returns
3586     }
3587 
3588   if(!strcmp(name, "name"))
taking False path
when considering range: -0x80000000 <= value <= -1
taking False path
3589     {
3590       char nombuf[64];
3591 
3592       rc = krb5_kt_get_name(ctx, keytab, nombuf, sizeof(nombuf));
3593       if(rc)
3594 	return pk_error(rc);
3595       retval = PyString_FromString(nombuf);
3596     }
3597   else
3598     {
3599       PyErr_Format(PyExc_AttributeError, "%.50s instance has no attribute '%.400s'",
PyErr_Format()
3600 		   PyString_AS_STRING(((PyInstanceObject *)self)->in_class->cl_name), name);
when treating unknown struct PyClassObject * from krb5module.c:3600 as non-NULL
when treating unknown struct PyObject * from krb5module.c:3600 as non-NULL
3601       retval = NULL;
3602     }
3603 
3604   return retval;
3605 } /* KrbV.Keytab.__getattr__() */
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 55 similar trace(s) to this