File: | src/python/pyhbac.c |
Function: | HbacRule_new |
Error: | ob_refcnt of new ref from (unknown) sss_python_unicode_from_string is 1 too low |
636 static PyObject *
637 HbacRule_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
638 {
639 HbacRuleObject *self;
640
641 self = (HbacRuleObject *) type->tp_alloc(type, 0);
when call succeeds
642 if (self == NULL) {
taking False path
643 PyErr_NoMemory();
644 return NULL;
645 }
646
647 self->name = sss_python_unicode_from_string("");
when sss_python_unicode_from_string() succeeds
new ref from (unknown) sss_python_unicode_from_string allocated at: self->name = sss_python_unicode_from_string("");
ob_refcnt is now refs: 1 + N where N >= 0
new ref from (unknown) sss_python_unicode_from_string is now referenced by 1 non-stack value(s): new ref from call through function pointer.name
648 if (self->name == NULL) {
taking False path
649 Py_DECREF(self);
650 PyErr_NoMemory();
651 return NULL;
652 }
653
654 self->enabled = false;
655
656 self->services = (HbacRuleElement *) HbacRuleElement_new(
when HbacRuleElement_new() succeeds
657 &pyhbac_hbacrule_element_type,
658 NULL, NULL);
659 self->users = (HbacRuleElement *) HbacRuleElement_new(
when HbacRuleElement_new() succeeds
660 &pyhbac_hbacrule_element_type,
661 NULL, NULL);
662 self->targethosts = (HbacRuleElement *) HbacRuleElement_new(
when HbacRuleElement_new() succeeds
663 &pyhbac_hbacrule_element_type,
664 NULL, NULL);
665 self->srchosts = (HbacRuleElement *) HbacRuleElement_new(
when HbacRuleElement_new() fails
666 &pyhbac_hbacrule_element_type,
667 NULL, NULL);
668 if (self->services == NULL || self->users == NULL ||
taking False path
taking False path
taking False path
669 self->targethosts == NULL || self->srchosts == NULL) {
taking True path
670 Py_XDECREF(self->services);
taking False path
when taking True path
671 Py_XDECREF(self->users);
taking False path
when taking False path
calling tp_dealloc on new ref from (unknown) HbacRuleElement_new allocated at src/python/pyhbac.c:659
672 Py_XDECREF(self->targethosts);
taking False path
when taking False path
calling tp_dealloc on new ref from (unknown) HbacRuleElement_new allocated at src/python/pyhbac.c:662
673 Py_XDECREF(self->srchosts);
taking True path
674 Py_DECREF(self->name);
when taking True path
ob_refcnt is now refs: 0 + N where N >= 0
675 Py_DECREF(self);
when taking True path
676 PyErr_NoMemory();
PyErr_NoMemory() returns NULL, raising MemoryError
677 return NULL;
678 }
679
680 return (PyObject *) self;
681 }
ob_refcnt of new ref from (unknown) sss_python_unicode_from_string is 1 too low
was expecting final ob_refcnt to be N + 1 (for some unknown N)
due to object being referenced by: new ref from call through function pointer.name
but final ob_refcnt is N + 0
found 3 similar trace(s) to this
File: | src/python/pyhbac.c |
Function: | HbacRule_new |
Error: | ob_refcnt of new ref from (unknown) HbacRuleElement_new is 1 too low |
636 static PyObject *
637 HbacRule_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
638 {
639 HbacRuleObject *self;
640
641 self = (HbacRuleObject *) type->tp_alloc(type, 0);
when call succeeds
642 if (self == NULL) {
taking False path
643 PyErr_NoMemory();
644 return NULL;
645 }
646
647 self->name = sss_python_unicode_from_string("");
when sss_python_unicode_from_string() succeeds
648 if (self->name == NULL) {
taking False path
649 Py_DECREF(self);
650 PyErr_NoMemory();
651 return NULL;
652 }
653
654 self->enabled = false;
655
656 self->services = (HbacRuleElement *) HbacRuleElement_new(
when HbacRuleElement_new() succeeds
new ref from (unknown) HbacRuleElement_new allocated at: self->services = (HbacRuleElement *) HbacRuleElement_new(
ob_refcnt is now refs: 1 + N where N >= 0
new ref from (unknown) HbacRuleElement_new is now referenced by 1 non-stack value(s): new ref from call through function pointer.services
657 &pyhbac_hbacrule_element_type,
658 NULL, NULL);
659 self->users = (HbacRuleElement *) HbacRuleElement_new(
when HbacRuleElement_new() succeeds
660 &pyhbac_hbacrule_element_type,
661 NULL, NULL);
662 self->targethosts = (HbacRuleElement *) HbacRuleElement_new(
when HbacRuleElement_new() succeeds
663 &pyhbac_hbacrule_element_type,
664 NULL, NULL);
665 self->srchosts = (HbacRuleElement *) HbacRuleElement_new(
when HbacRuleElement_new() fails
666 &pyhbac_hbacrule_element_type,
667 NULL, NULL);
668 if (self->services == NULL || self->users == NULL ||
taking False path
taking False path
taking False path
669 self->targethosts == NULL || self->srchosts == NULL) {
taking True path
670 Py_XDECREF(self->services);
taking False path
when taking True path
ob_refcnt is now refs: 0 + N where N >= 0
671 Py_XDECREF(self->users);
taking False path
when taking False path
calling tp_dealloc on new ref from (unknown) HbacRuleElement_new allocated at src/python/pyhbac.c:659
672 Py_XDECREF(self->targethosts);
taking False path
when taking False path
calling tp_dealloc on new ref from (unknown) HbacRuleElement_new allocated at src/python/pyhbac.c:662
673 Py_XDECREF(self->srchosts);
taking True path
674 Py_DECREF(self->name);
when taking True path
675 Py_DECREF(self);
when taking True path
676 PyErr_NoMemory();
PyErr_NoMemory() returns NULL, raising MemoryError
677 return NULL;
678 }
679
680 return (PyObject *) self;
681 }
ob_refcnt of new ref from (unknown) HbacRuleElement_new is 1 too low
was expecting final ob_refcnt to be N + 1 (for some unknown N)
due to object being referenced by: new ref from call through function pointer.services
but final ob_refcnt is N + 0
found 14 similar trace(s) to this