[SCM] Samba Shared Repository - branch master updated

Simo Sorce idra at samba.org
Sat Jan 30 00:58:28 MST 2010


The branch, master has been updated
       via  772d808... s4:ldb Fix check made conditional by mistake
      from  df7be03... s4:ldb add support for permissive modify control

http://gitweb.samba.org/?p=samba.git;a=shortlog;h=master


- Log -----------------------------------------------------------------
commit 772d808ac862862330dd792ba8e83ba2b3c785b3
Author: Simo Sorce <idra at samba.org>
Date:   Sat Jan 30 02:57:33 2010 -0500

    s4:ldb Fix check made conditional by mistake

-----------------------------------------------------------------------

Summary of changes:
 source4/lib/ldb/ldb_tdb/ldb_tdb.c |   18 +++++++++++-------
 1 files changed, 11 insertions(+), 7 deletions(-)


Changeset truncated at 500 lines:

diff --git a/source4/lib/ldb/ldb_tdb/ldb_tdb.c b/source4/lib/ldb/ldb_tdb/ldb_tdb.c
index 568fc2a..edc0215 100644
--- a/source4/lib/ldb/ldb_tdb/ldb_tdb.c
+++ b/source4/lib/ldb/ldb_tdb/ldb_tdb.c
@@ -659,6 +659,13 @@ int ltdb_modify_internal(struct ldb_module *module,
 		switch (msg->elements[i].flags & LDB_FLAG_MOD_MASK) {
 		case LDB_FLAG_MOD_ADD:
 
+			if (el->num_values == 0) {
+				ldb_asprintf_errstring(ldb, "attribute %s on %s specified, but with 0 values (illigal)",
+						       el->name, ldb_dn_get_linearized(msg2->dn));
+				ret = LDB_ERR_CONSTRAINT_VIOLATION;
+				goto done;
+			}
+
 			/* make a copy of the array so that a permissive
 			 * control can remove duplicates without changing the
 			 * original values, but do not copy data as we do not
@@ -673,16 +680,13 @@ int ltdb_modify_internal(struct ldb_module *module,
 				el->name = msg->elements[i].name;
 				el->num_values = msg->elements[i].num_values;
 				el->values = talloc_array(el, struct ldb_val, el->num_values);
+				if (el->values == NULL) {
+					ret = LDB_ERR_OTHER;
+					goto done;
+				}
 				for (j = 0; j < el->num_values; j++) {
 					el->values[j] = msg->elements[i].values[j];
 				}
-
-				if (el->num_values == 0) {
-					ldb_asprintf_errstring(ldb, "attribute %s on %s specified, but with 0 values (illigal)",
-							       el->name, ldb_dn_get_linearized(msg2->dn));
-					ret = LDB_ERR_CONSTRAINT_VIOLATION;
-					goto done;
-				}
 			}
 
 			if (a && a->flags & LDB_ATTR_FLAG_SINGLE_VALUE) {


-- 
Samba Shared Repository


More information about the samba-cvs mailing list