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