svn commit: samba r19109 - in branches/SAMBA_4_0_RELEASE/source/lib/ldb: common ldb_ldap ldb_tdb

abartlet at samba.org abartlet at samba.org
Fri Oct 6 03:40:48 GMT 2006


Author: abartlet
Date: 2006-10-06 03:40:45 +0000 (Fri, 06 Oct 2006)
New Revision: 19109

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

Log:
Merge fixes to ldb made since the TP3 release snapshot was taken.

Andrew Bartlett

Modified:
   branches/SAMBA_4_0_RELEASE/source/lib/ldb/common/ldb_dn.c
   branches/SAMBA_4_0_RELEASE/source/lib/ldb/common/ldb_utf8.c
   branches/SAMBA_4_0_RELEASE/source/lib/ldb/ldb_ldap/ldb_ldap.c
   branches/SAMBA_4_0_RELEASE/source/lib/ldb/ldb_tdb/ldb_cache.c


Changeset:
Modified: branches/SAMBA_4_0_RELEASE/source/lib/ldb/common/ldb_dn.c
===================================================================
--- branches/SAMBA_4_0_RELEASE/source/lib/ldb/common/ldb_dn.c	2006-10-06 03:39:00 UTC (rev 19108)
+++ branches/SAMBA_4_0_RELEASE/source/lib/ldb/common/ldb_dn.c	2006-10-06 03:40:45 UTC (rev 19109)
@@ -345,6 +345,10 @@
 
 	/* Allocate a structure to hold the exploded DN */
 	edn = ldb_dn_new(mem_ctx);
+	if (edn == NULL) {
+		return NULL;
+	}
+
 	pdn = NULL;
 
 	/* Empty DNs */
@@ -670,6 +674,7 @@
 	dst.name = talloc_strdup(mem_ctx, src->name);
 	if (dst.name == NULL) {
 		talloc_free(dst.value.data);
+		dst.value.data = NULL;
 	}
 
 	return dst;
@@ -693,6 +698,7 @@
 	newdn->comp_num = num_el;
 	n = newdn->comp_num - 1;
 	newdn->components = talloc_array(newdn, struct ldb_dn_component, newdn->comp_num);
+	if (newdn->components == NULL) goto failed;
 
 	if (dn->comp_num == 0) return newdn;
 	e = dn->comp_num - 1;
@@ -813,6 +819,7 @@
 		int comp_num = dn2->comp_num;
 		if (dn1 != NULL) comp_num += dn1->comp_num;
 		newdn = ldb_dn_copy_partial(mem_ctx, dn2, comp_num);
+		LDB_DN_NULL_FAILED(newdn);
 	}
 
 	if (dn1 == NULL) {
@@ -822,6 +829,9 @@
 	for (i = 0; i < dn1->comp_num; i++) {
 		newdn->components[i] = ldb_dn_copy_component(newdn->components,
 							   &(dn1->components[i]));
+		if (newdn->components[i].value.data == NULL) {
+			goto failed;
+		}
 	}
 
 	return newdn;

Modified: branches/SAMBA_4_0_RELEASE/source/lib/ldb/common/ldb_utf8.c
===================================================================
--- branches/SAMBA_4_0_RELEASE/source/lib/ldb/common/ldb_utf8.c	2006-10-06 03:39:00 UTC (rev 19108)
+++ branches/SAMBA_4_0_RELEASE/source/lib/ldb/common/ldb_utf8.c	2006-10-06 03:40:45 UTC (rev 19109)
@@ -126,7 +126,7 @@
 {
 	int i;
 	char *ret = talloc_strdup(mem_ctx, s);
-	if (!s) {
+	if (!ret) {
 		errno = ENOMEM;
 		return NULL;
 	}

Modified: branches/SAMBA_4_0_RELEASE/source/lib/ldb/ldb_ldap/ldb_ldap.c
===================================================================
--- branches/SAMBA_4_0_RELEASE/source/lib/ldb/ldb_ldap/ldb_ldap.c	2006-10-06 03:39:00 UTC (rev 19108)
+++ branches/SAMBA_4_0_RELEASE/source/lib/ldb/ldb_ldap/ldb_ldap.c	2006-10-06 03:40:45 UTC (rev 19109)
@@ -210,10 +210,15 @@
 	}
 
 	for (i=0;i<count;i++) {
-		el->values[i].data = talloc_memdup(el->values, bval[i]->bv_val, bval[i]->bv_len);
+		/* we have to ensure this is null terminated so that
+		   ldb_msg_find_attr_as_string() can work */
+		el->values[i].data = talloc_size(el->values, bval[i]->bv_len+1);
 		if (!el->values[i].data) {
+			errno = ENOMEM;
 			return -1;
 		}
+		memcpy(el->values[i].data, bval[i]->bv_val, bval[i]->bv_len);
+		el->values[i].data[bval[i]->bv_len] = 0;
 		el->values[i].length = bval[i]->bv_len;
 		el->num_values++;
 	}

Modified: branches/SAMBA_4_0_RELEASE/source/lib/ldb/ldb_tdb/ldb_cache.c
===================================================================
--- branches/SAMBA_4_0_RELEASE/source/lib/ldb/ldb_tdb/ldb_cache.c	2006-10-06 03:39:00 UTC (rev 19108)
+++ branches/SAMBA_4_0_RELEASE/source/lib/ldb/ldb_tdb/ldb_cache.c	2006-10-06 03:40:45 UTC (rev 19109)
@@ -318,7 +318,7 @@
 	struct ltdb_private *ltdb = module->private_data;
 	struct ldb_dn *baseinfo_dn = NULL;
 	struct ldb_dn *indexlist_dn = NULL;
-	double seq;
+	uint64_t seq;
 
 	if (ltdb->cache == NULL) {
 		ltdb->cache = talloc_zero(ltdb, struct ltdb_cache);
@@ -356,7 +356,7 @@
 
 	/* if the current internal sequence number is the same as the one
 	   in the database then assume the rest of the cache is OK */
-	seq = ldb_msg_find_attr_as_double(ltdb->cache->baseinfo, LTDB_SEQUENCE_NUMBER, 0);
+	seq = ldb_msg_find_attr_as_uint64(ltdb->cache->baseinfo, LTDB_SEQUENCE_NUMBER, 0);
 	if (seq == ltdb->sequence_number) {
 		goto done;
 	}



More information about the samba-cvs mailing list