#include "includes.h"
#include "tldap.h"
+#include "../lib/util/asn1.h"
+#include "../lib/tsocket/tsocket.h"
+#include "../lib/util/tevent_unix.h"
+
+static int tldap_simple_recv(struct tevent_req *req);
bool tevent_req_is_ldap_error(struct tevent_req *req, int *perr)
{
struct tldap_ctx_attribute *tmp, *attr;
char *tmpname;
int num_attrs;
- void **pptr = (void **)_pptr;
+ void **pptr = (void **)discard_const_p(void,_pptr);
attr = tldap_context_findattr(ld, name);
if (attr != NULL) {
* No NULL check here, we're shrinking by sizeof(void *), and
* talloc_realloc just adjusts the size for this.
*/
- ld->pending = talloc_realloc(NULL, ld->pending, struct tevent_req *,
+ ld->pending = talloc_realloc(ld, ld->pending, struct tevent_req *,
num_pending - 1);
return;
}
}
if (!tldap_msg_set_pending(req)) {
- tevent_req_nomem(NULL, req);
+ tevent_req_oom(req);
return;
}
}
subreq, struct tldap_context);
struct tevent_req *req;
struct tldap_msg_state *state;
- struct tevent_context *ev;
struct asn1_data *data;
uint8_t *inbuf;
ssize_t received;
state->inbuf = talloc_move(state, &inbuf);
state->data = talloc_move(state, &data);
- ev = state->ev;
-
talloc_set_destructor(req, NULL);
tldap_msg_unset_pending(req);
num_pending = talloc_array_length(ld->pending);
int tldap_sasl_bind_recv(struct tevent_req *req)
{
- int err;
-
- if (tevent_req_is_ldap_error(req, &err)) {
- return err;
- }
- return TLDAP_SUCCESS;
+ return tldap_simple_recv(req);
}
int tldap_sasl_bind(struct tldap_context *ld,
DATA_BLOB cred;
if (passwd != NULL) {
- cred.data = (uint8_t *)passwd;
+ cred.data = discard_const_p(uint8_t, passwd);
cred.length = strlen(passwd);
} else {
- cred.data = (uint8_t *)"";
+ cred.data = discard_const_p(uint8_t, "");
cred.length = 0;
}
return tldap_sasl_bind_send(mem_ctx, ev, ld, dn, NULL, &cred, NULL, 0,
DATA_BLOB cred;
if (passwd != NULL) {
- cred.data = (uint8_t *)passwd;
+ cred.data = discard_const_p(uint8_t, passwd);
cred.length = strlen(passwd);
} else {
- cred.data = (uint8_t *)"";
+ cred.data = discard_const_p(uint8_t, "");
cred.length = 0;
}
return tldap_sasl_bind(ld, dn, NULL, &cred, NULL, 0, NULL, 0);
return false;
}
- if (StrnCaseCmp(dn, "dn:", 3) != 0) {
+ if (strncasecmp_m(dn, "dn:", 3) != 0) {
if (rule == e) {
rule = dn;
dn = NULL;
switch (state->result->type) {
case TLDAP_RES_SEARCH_ENTRY:
case TLDAP_RES_SEARCH_REFERENCE:
- tevent_req_notify_callback(req);
if (!tldap_msg_set_pending(subreq)) {
- tevent_req_nomem(NULL, req);
+ tevent_req_oom(req);
return;
}
+ tevent_req_notify_callback(req);
break;
case TLDAP_RES_SEARCH_RESULT:
TALLOC_FREE(subreq);
return true;
}
-bool tldap_entry_attributes(struct tldap_message *msg, int *num_attributes,
- struct tldap_attribute **attributes)
+bool tldap_entry_attributes(struct tldap_message *msg,
+ struct tldap_attribute **attributes,
+ int *num_attributes)
{
if ((msg->dn == NULL) && (!tldap_parse_search_entry(msg))) {
return false;