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 <i...@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

Reply via email to