svn commit: samba r2884 - in branches/SAMBA_4_0/source/libcli/ldap:
.
metze at samba.org
metze at samba.org
Sat Oct 9 23:59:12 GMT 2004
Author: metze
Date: 2004-10-09 23:59:12 +0000 (Sat, 09 Oct 2004)
New Revision: 2884
WebSVN: http://websvn.samba.org/websvn/changeset.php?rep=samba&path=/branches/SAMBA_4_0/source/libcli/ldap&rev=2884&nolog=1
Log:
parse LDAP Control messages
metze
Modified:
branches/SAMBA_4_0/source/libcli/ldap/ldap.c
Changeset:
Modified: branches/SAMBA_4_0/source/libcli/ldap/ldap.c
===================================================================
--- branches/SAMBA_4_0/source/libcli/ldap/ldap.c 2004-10-09 23:58:11 UTC (rev 2883)
+++ branches/SAMBA_4_0/source/libcli/ldap/ldap.c 2004-10-09 23:59:12 UTC (rev 2884)
@@ -1162,6 +1162,47 @@
return False;
}
+ msg->num_controls = 0;
+ msg->controls = NULL;
+
+ if (asn1_peek_tag(data, ASN1_CONTEXT(0))) {
+ int i;
+ struct ldap_Control *ctrl = NULL;
+
+ asn1_start_tag(data, ASN1_CONTEXT(0));
+
+ for (i=0; asn1_peek_tag(data, ASN1_SEQUENCE(0)); i++) {
+ asn1_start_tag(data, ASN1_SEQUENCE(0));
+
+ ctrl = talloc_realloc_p(msg->mem_ctx, ctrl, struct ldap_Control, i+1);
+ if (!ctrl) {
+ return False;
+ }
+ ctrl[i].oid = NULL;
+ ctrl[i].critical = False;
+ ctrl[i].value = data_blob(NULL, 0);
+
+ asn1_read_OctetString_talloc(ctrl, data, &ctrl[i].oid);
+
+ if (asn1_peek_tag(data, ASN1_BOOLEAN)) {
+ asn1_read_BOOLEAN(data, &ctrl[i].critical);
+ }
+
+ if (asn1_peek_tag(data, ASN1_OCTET_STRING)) {
+ asn1_read_OctetString(data, &ctrl[i].value);
+ if (ctrl[i].value.data) {
+ talloc_steal(msg->mem_ctx, ctrl[i].value.data);
+ }
+ }
+
+ asn1_end_tag(data);
+ }
+ msg->num_controls = i;
+ msg->controls = ctrl;
+
+ asn1_end_tag(data);
+ }
+
asn1_end_tag(data);
return ((!data->has_error) && (data->nesting == NULL));
}
More information about the samba-cvs
mailing list