739 static PyObject *
740 l_ldap_compare_ext( LDAPObject* self, PyObject *args )
741 {
742 char *dn, *attr;
743 PyObject *serverctrls = Py_None;
744 PyObject *clientctrls = Py_None;
745 LDAPControl** server_ldcs = NULL;
746 LDAPControl** client_ldcs = NULL;
747
748 int msgid;
749 int ldaperror;
750 Py_ssize_t value_len;
751 struct berval value;
752
753 if (!PyArg_ParseTuple( args, "sss#|OO", &dn, &attr, &value.bv_val, &value_len, &serverctrls, &clientctrls )) return NULL;
when _PyArg_ParseTuple_SizeT() succeeds
taking False path
754 value.bv_len = (ber_len_t) value_len;
755
756 if (not_valid(self)) return NULL;
when considering value == (int)0 from Modules/LDAPObject.c:756
taking False path
757
758 if (!PyNone_Check(serverctrls)) {
taking True path
759 if (!LDAPControls_from_object(serverctrls, &server_ldcs))
when considering range: 1 <= value <= 0x7fffffff
taking False path
760 return NULL;
761 }
762
763 if (!PyNone_Check(clientctrls)) {
taking True path
764 if (!LDAPControls_from_object(clientctrls, &client_ldcs))
when considering value == (int)0 from Modules/LDAPObject.c:764
taking True path
765 return NULL;
766 }
767
768 LDAP_BEGIN_ALLOW_THREADS( self );
769 ldaperror = ldap_compare_ext( self->ldap, dn, attr, &value, server_ldcs, client_ldcs, &msgid );
770 LDAP_END_ALLOW_THREADS( self );
771
772 LDAPControl_List_DEL( server_ldcs );
773 LDAPControl_List_DEL( client_ldcs );
774
775 if ( ldaperror!=LDAP_SUCCESS )
776 return LDAPerror( self->ldap, "ldap_compare_ext" );
777
778 return PyInt_FromLong( msgid );
779 }
returning (PyObject*)NULL without setting an exception
found 3 similar trace(s) to this