svn commit: samba r7720 - in branches/SAMBA_4_0/source: ldap_server libcli/ldap libcli/util

tridge at samba.org tridge at samba.org
Sat Jun 18 10:38:06 GMT 2005


Author: tridge
Date: 2005-06-18 10:38:06 +0000 (Sat, 18 Jun 2005)
New Revision: 7720

WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=samba&rev=7720

Log:
- simplify the asn1 decode of ldap_search() a lot, taking advantage of
  the fact that the ldap data structures now use ldb_message_element.

- fixed null termination of elements in ildap



Modified:
   branches/SAMBA_4_0/source/ldap_server/ldap_rootdse.c
   branches/SAMBA_4_0/source/libcli/ldap/ldap.c
   branches/SAMBA_4_0/source/libcli/ldap/ldap_msg.c
   branches/SAMBA_4_0/source/libcli/util/asn1.c


Changeset:
Modified: branches/SAMBA_4_0/source/ldap_server/ldap_rootdse.c
===================================================================
--- branches/SAMBA_4_0/source/ldap_server/ldap_rootdse.c	2005-06-18 09:48:17 UTC (rev 7719)
+++ branches/SAMBA_4_0/source/ldap_server/ldap_rootdse.c	2005-06-18 10:38:06 UTC (rev 7720)
@@ -309,28 +309,16 @@
 			goto queue_reply;
 		}
 		ent->num_attributes = res[0]->num_elements;
-		ent->attributes = talloc_array(ent_r, struct ldb_message_element, ent->num_attributes);
-		NT_STATUS_HAVE_NO_MEMORY(ent->attributes);
+		ent->attributes = talloc_steal(ent_r, res[0]->elements);
+
 		for (j=0; j < ent->num_attributes; j++) {
-			ent->attributes[j].name = talloc_steal(ent->attributes, res[0]->elements[j].name);
-			ent->attributes[j].num_values = 0;
-			ent->attributes[j].values = NULL;
-			ent->attributes[j].num_values = res[0]->elements[j].num_values;
 			if (ent->attributes[j].num_values == 1 &&
-				strncmp(res[0]->elements[j].values[0].data, "_DYNAMIC_", 9) == 0) {
+			    ent->attributes[j].values[0].length >= 9 &&
+			    strncmp(ent->attributes[j].values[0].data, "_DYNAMIC_", 9) == 0) {
 				status = fill_dynamic_values(ent->attributes, &(ent->attributes[j]));
 				if (!NT_STATUS_IS_OK(status)) {
 					return status;
 				}
-			} else {
-				ent->attributes[j].values = talloc_array(ent->attributes,
-								DATA_BLOB, ent->attributes[j].num_values);
-				NT_STATUS_HAVE_NO_MEMORY(ent->attributes[j].values);
-				for (y=0; y < ent->attributes[j].num_values; y++) {
-					ent->attributes[j].values[y].length = res[0]->elements[j].values[y].length;
-					ent->attributes[j].values[y].data = talloc_steal(ent->attributes[j].values,
-										res[0]->elements[j].values[y].data);
-				}
 			}
 		}
 queue_reply:

Modified: branches/SAMBA_4_0/source/libcli/ldap/ldap.c
===================================================================
--- branches/SAMBA_4_0/source/libcli/ldap/ldap.c	2005-06-18 09:48:17 UTC (rev 7719)
+++ branches/SAMBA_4_0/source/libcli/ldap/ldap.c	2005-06-18 10:38:06 UTC (rev 7720)
@@ -98,6 +98,9 @@
 		asn1_pop_tag(data);
 		break;
 
+	case LDB_OP_NOT:
+		#warning "OP_NOT missing"
+
 	default:
 		return False;
 	}
@@ -605,7 +608,6 @@
 		DATA_BLOB blob;
 		asn1_read_OctetString(data, &blob);
 		add_value_to_attrib(mem_ctx, &blob, attrib);
-		data_blob_free(&blob);
 	}
 	asn1_end_tag(data);
 	asn1_end_tag(data);

Modified: branches/SAMBA_4_0/source/libcli/ldap/ldap_msg.c
===================================================================
--- branches/SAMBA_4_0/source/libcli/ldap/ldap_msg.c	2005-06-18 09:48:17 UTC (rev 7719)
+++ branches/SAMBA_4_0/source/libcli/ldap/ldap_msg.c	2005-06-18 10:38:06 UTC (rev 7720)
@@ -43,8 +43,9 @@
 	if (attrib->values == NULL)
 		return False;
 
-	attrib->values[attrib->num_values] =
-		data_blob_talloc(attrib->values, value->data, value->length);
+	attrib->values[attrib->num_values].data = talloc_steal(attrib->values, 
+							       value->data);
+	attrib->values[attrib->num_values].length = value->length;
 	attrib->num_values += 1;
 	return True;
 }

Modified: branches/SAMBA_4_0/source/libcli/util/asn1.c
===================================================================
--- branches/SAMBA_4_0/source/libcli/util/asn1.c	2005-06-18 09:48:17 UTC (rev 7719)
+++ branches/SAMBA_4_0/source/libcli/util/asn1.c	2005-06-18 10:38:06 UTC (rev 7720)
@@ -576,7 +576,6 @@
 	if (!asn1_start_tag(data, ASN1_INTEGER)) return False;
 	if (!asn1_read_implicit_Integer(data, i)) return False;
 	return asn1_end_tag(data);	
-	
 }
 
 /* read an interger */



More information about the samba-cvs mailing list