File: krb5module.c
Function: Principal_getitem
Error: ob_refcnt of new ref from call to PyObject_GetAttrString is 1 too high
2394 static PyObject*
2395 Principal_getitem(PyObject *unself __UNUSED, PyObject *args)
2396 {
2397   PyObject *self, *tmp, *retval;
2398   krb5_context ctx = NULL;
2399   krb5_principal princ = NULL;
2400   int index;
2401   krb5_data *d;
2402 
2403   if(!PyArg_ParseTuple(args, "Oi:__getitem__", &self, &index))
when PyArg_ParseTuple() succeeds
taking False path
2404     return NULL;
2405 
2406   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
2407   if(tmp)
taking True path
2408     {
2409       tmp = PyObject_GetAttrString(tmp, "_ctx");
when PyObject_GetAttrString() succeeds
2410       if(tmp)
taking True path
2411 	ctx = PyCObject_AsVoidPtr(tmp);
when PyCObject_AsVoidPtr() returns
2412       else
2413 	return NULL;
2414     }
2415   else
2416     return NULL;
2417   tmp = PyObject_GetAttrString(self, "_princ");
when PyObject_GetAttrString() succeeds
2418   if(tmp)
taking True path
2419     princ = PyCObject_AsVoidPtr(tmp);
when PyCObject_AsVoidPtr() returns
2420   else
2421     return NULL;
2422 
2423   if(index >= krb5_princ_size(ctx, princ))
when treating unknown void * from krb5module.c:2419 as non-NULL
when taking True path
2424     {
2425       PyErr_Format(PyExc_IndexError, "index out of range");
PyErr_Format()
2426       return NULL;
2427     }
2428 
2429   d = krb5_princ_component(ctx, princ, index);
2430   retval = PyString_FromStringAndSize(d->data, d->length);
2431 
2432   return retval;
2433 } /* KrbV.Principal.__getitem__() */
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 10 similar trace(s) to this

File: krb5module.c
Function: Principal_getitem
Error: dereferencing NULL (d->length) at krb5module.c:2430
2394 static PyObject*
2395 Principal_getitem(PyObject *unself __UNUSED, PyObject *args)
2396 {
2397   PyObject *self, *tmp, *retval;
2398   krb5_context ctx = NULL;
2399   krb5_principal princ = NULL;
2400   int index;
2401   krb5_data *d;
2402 
2403   if(!PyArg_ParseTuple(args, "Oi:__getitem__", &self, &index))
when PyArg_ParseTuple() succeeds
taking False path
2404     return NULL;
2405 
2406   tmp = PyObject_GetAttrString(self, "context");
when PyObject_GetAttrString() succeeds
2407   if(tmp)
taking True path
2408     {
2409       tmp = PyObject_GetAttrString(tmp, "_ctx");
when PyObject_GetAttrString() succeeds
2410       if(tmp)
taking True path
2411 	ctx = PyCObject_AsVoidPtr(tmp);
when PyCObject_AsVoidPtr() returns
2412       else
2413 	return NULL;
2414     }
2415   else
2416     return NULL;
2417   tmp = PyObject_GetAttrString(self, "_princ");
when PyObject_GetAttrString() succeeds
2418   if(tmp)
taking True path
2419     princ = PyCObject_AsVoidPtr(tmp);
when PyCObject_AsVoidPtr() returns
2420   else
2421     return NULL;
2422 
2423   if(index >= krb5_princ_size(ctx, princ))
when treating unknown void * from krb5module.c:2419 as non-NULL
when taking False path
2424     {
2425       PyErr_Format(PyExc_IndexError, "index out of range");
2426       return NULL;
2427     }
2428 
2429   d = krb5_princ_component(ctx, princ, index);
when taking False path
2430   retval = PyString_FromStringAndSize(d->data, d->length);
dereferencing NULL (d->length) at krb5module.c:2430
2431 
2432   return retval;
2433 } /* KrbV.Principal.__getitem__() */

File: krb5module.c
Function: Principal_getitem
Error: ob_refcnt of '*tmp' is 1 too high
2394 static PyObject*
2395 Principal_getitem(PyObject *unself __UNUSED, PyObject *args)
2396 {
2397   PyObject *self, *tmp, *retval;
2398   krb5_context ctx = NULL;
2399   krb5_principal princ = NULL;
2400   int index;
2401   krb5_data *d;
2402 
2403   if(!PyArg_ParseTuple(args, "Oi:__getitem__", &self, &index))
when PyArg_ParseTuple() succeeds
taking False path
2404     return NULL;
2405 
2406   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
2407   if(tmp)
taking True path
2408     {
2409       tmp = PyObject_GetAttrString(tmp, "_ctx");
when PyObject_GetAttrString() fails
2410       if(tmp)
taking False path
2411 	ctx = PyCObject_AsVoidPtr(tmp);
2412       else
2413 	return NULL;
2414     }
2415   else
2416     return NULL;
2417   tmp = PyObject_GetAttrString(self, "_princ");
2418   if(tmp)
2419     princ = PyCObject_AsVoidPtr(tmp);
2420   else
2421     return NULL;
2422 
2423   if(index >= krb5_princ_size(ctx, princ))
2424     {
2425       PyErr_Format(PyExc_IndexError, "index out of range");
2426       return NULL;
2427     }
2428 
2429   d = krb5_princ_component(ctx, princ, index);
2430   retval = PyString_FromStringAndSize(d->data, d->length);
2431 
2432   return retval;
2433 } /* KrbV.Principal.__getitem__() */
ob_refcnt of '*tmp' is 1 too high
was expecting final ob_refcnt to be N + 0 (for some unknown N)
but final ob_refcnt is N + 1