1208 static PyObject *
1209 l_ldap_passwd( LDAPObject* self, PyObject *args )
1210 {
1211 struct berval user;
1212 Py_ssize_t user_len;
1213 struct berval oldpw;
1214 Py_ssize_t oldpw_len;
1215 struct berval newpw;
1216 Py_ssize_t newpw_len;
1217 PyObject *serverctrls = Py_None;
1218 PyObject *clientctrls = Py_None;
1219 LDAPControl** server_ldcs = NULL;
1220 LDAPControl** client_ldcs = NULL;
1221
1222 int msgid;
1223 int ldaperror;
1224
1225 if (!PyArg_ParseTuple( args, "z#z#z#|OO", &user.bv_val, &user_len, &oldpw.bv_val, &oldpw_len, &newpw.bv_val, &newpw_len, &serverctrls, &clientctrls ))
when _PyArg_ParseTuple_SizeT() succeeds
taking False path
1226 return NULL;
1227
1228 user.bv_len = (ber_len_t) user_len;
1229 oldpw.bv_len = (ber_len_t) oldpw_len;
1230 newpw.bv_len = (ber_len_t) newpw_len;
1231
1232 if (not_valid(self)) return NULL;
when considering range: -0x80000000 <= value <= -1
taking True path
1233
1234 if (!PyNone_Check(serverctrls)) {
1235 if (!LDAPControls_from_object(serverctrls, &server_ldcs))
1236 return NULL;
1237 }
1238
1239 if (!PyNone_Check(clientctrls)) {
1240 if (!LDAPControls_from_object(clientctrls, &client_ldcs))
1241 return NULL;
1242 }
1243
1244 LDAP_BEGIN_ALLOW_THREADS( self );
1245 ldaperror = ldap_passwd( self->ldap,
1246 user.bv_val != NULL ? &user : NULL,
1247 oldpw.bv_val != NULL ? &oldpw : NULL,
1248 newpw.bv_val != NULL ? &newpw : NULL,
1249 server_ldcs,
1250 client_ldcs,
1251 &msgid );
1252 LDAP_END_ALLOW_THREADS( self );
1253
1254 LDAPControl_List_DEL( server_ldcs );
1255 LDAPControl_List_DEL( client_ldcs );
1256
1257 if ( ldaperror!=LDAP_SUCCESS )
1258 return LDAPerror( self->ldap, "ldap_passwd" );
1259
1260 return PyInt_FromLong( msgid );
1261 }
returning (PyObject*)NULL without setting an exception