453 static PyObject*
454 l_ldap_simple_bind( LDAPObject* self, PyObject* args )
455 {
456 char *who;
457 int msgid;
458 int ldaperror;
459 Py_ssize_t cred_len;
460 PyObject *serverctrls = Py_None;
461 PyObject *clientctrls = Py_None;
462 LDAPControl** server_ldcs = NULL;
463 LDAPControl** client_ldcs = NULL;
464 struct berval cred;
465
466 if (!PyArg_ParseTuple( args, "ss#|OO", &who, &cred.bv_val, &cred_len, &serverctrls, &clientctrls )) return NULL;
when _PyArg_ParseTuple_SizeT() succeeds
taking False path
467 cred.bv_len = (ber_len_t) cred_len;
468
469 if (not_valid(self)) return NULL;
when considering value == (int)0 from Modules/LDAPObject.c:469
taking False path
470
471 if (!PyNone_Check(serverctrls)) {
taking True path
472 if (!LDAPControls_from_object(serverctrls, &server_ldcs))
when considering range: 1 <= value <= 0x7fffffff
taking False path
473 return NULL;
474 }
475
476 if (!PyNone_Check(clientctrls)) {
taking True path
477 if (!LDAPControls_from_object(clientctrls, &client_ldcs))
when considering value == (int)0 from Modules/LDAPObject.c:477
taking True path
478 return NULL;
479 }
480
481 LDAP_BEGIN_ALLOW_THREADS( self );
482 ldaperror = ldap_sasl_bind( self->ldap, who, LDAP_SASL_SIMPLE, &cred, server_ldcs, client_ldcs, &msgid);
483 LDAP_END_ALLOW_THREADS( self );
484
485 LDAPControl_List_DEL( server_ldcs );
486 LDAPControl_List_DEL( client_ldcs );
487
488 if ( ldaperror!=LDAP_SUCCESS )
489 return LDAPerror( self->ldap, "ldap_simple_bind" );
490
491 return PyInt_FromLong( msgid );
492 }
returning (PyObject*)NULL without setting an exception
found 3 similar trace(s) to this