Errors seen in LOGS/python-ldap-2.4.6-2.fc17

This is a summary of errors seen when compiling with an experimental static analysis tool

Raw build logs can be seen here

Reference leaks

Code paths in which the reference count of an object is left too high, leading to memory leaks

Modules/ldapcontrol.c Tuple_to_LDAPControl ob_refcnt of new ref from call to _Py_BuildValue_SizeT is 1 too high
Modules/LDAPObject.c attrs_from_List ob_refcnt of new ref from call to _Py_BuildValue_SizeT is 1 too high
Modules/LDAPObject.c List_to_LDAPMods ob_refcnt of new ref from call to _Py_BuildValue_SizeT is 1 too high
Modules/LDAPObject.c interaction ob_refcnt of '*result' is 1 too high
Modules/ldapcontrol.c LDAPControls_from_object ob_refcnt of new ref from call to _Py_BuildValue_SizeT is 1 too high
Modules/LDAPObject.c Tuple_to_LDAPMod ob_refcnt of new ref from call to _Py_BuildValue_SizeT is 1 too high

Possible reference leaks

Code paths in which the reference count of an object might too large - but in which the reference in question came from a function not known to the analyzer.

The analyzer assumes such references are new references, but if the function returns a borrowed reference instead, it's probably not a bug

Modules/ldapcontrol.c encode_rfc3876 ob_refcnt of new ref from (unknown) LDAPerr is 1 too high
Modules/ldapcontrol.c encode_rfc2696 ob_refcnt of new ref from (unknown) LDAPerr is 1 too high

Returning (PyObject*)NULL without setting an exception

These messages are often false-positives: the analysis tool has no knowledge about internal API calls that can lead to an exception being set
Modules/LDAPObject.c l_ldap_whoami_s returning (PyObject*)NULL without setting an exception
Modules/LDAPObject.c l_ldap_sasl_interactive_bind_s returning (PyObject*)NULL without setting an exception
Modules/LDAPObject.c l_ldap_delete_ext returning (PyObject*)NULL without setting an exception
Modules/ldapcontrol.c encode_rfc3876 returning (PyObject*)NULL without setting an exception
Modules/LDAPObject.c l_ldap_extended_operation returning (PyObject*)NULL without setting an exception
Modules/ldapcontrol.c encode_rfc2696 returning (PyObject*)NULL without setting an exception
Modules/LDAPObject.c l_ldap_compare_ext returning (PyObject*)NULL without setting an exception
Modules/LDAPObject.c l_ldap_rename returning (PyObject*)NULL without setting an exception
Modules/LDAPObject.c l_ldap_modify_ext returning (PyObject*)NULL without setting an exception
Modules/LDAPObject.c l_ldap_cancel returning (PyObject*)NULL without setting an exception
Modules/LDAPObject.c l_ldap_passwd returning (PyObject*)NULL without setting an exception
Modules/LDAPObject.c l_ldap_set_option returning (PyObject*)NULL without setting an exception
Modules/LDAPObject.c l_ldap_start_tls_s returning (PyObject*)NULL without setting an exception
Modules/LDAPObject.c l_ldap_abandon_ext returning (PyObject*)NULL without setting an exception
Modules/LDAPObject.c l_ldap_result4 returning (PyObject*)NULL without setting an exception
Modules/LDAPObject.c l_ldap_simple_bind returning (PyObject*)NULL without setting an exception
Modules/LDAPObject.c l_ldap_add_ext returning (PyObject*)NULL without setting an exception
Modules/LDAPObject.c l_ldap_unbind_ext returning (PyObject*)NULL without setting an exception
Modules/LDAPObject.c l_ldap_search_ext returning (PyObject*)NULL without setting an exception