The branch, master has been updated
       via  39d11a9 ldb:"ldb_dn_compare_base" - use "unsigned int" counters
       via  531d7f5 ldb:"ldb_dn_add_child" - use "unsigned int" counters
       via  1557acb ldb:"ldb_dn_remove_base_components" - use an "unsigned int" 
counter
       via  19e9434 ldb:"ldb_dn_canonical" - use an "unsigned int" counter
       via  bc02948 s4:samldb LDB module - use appropriate fixed-length integer 
types where needed
       via  42d9978 s4:dsdb/samdb/ldb_modules/util.c - remove now unused 
functions which set integers
       via  a0bd529 s4:samba3sid LDB module - handle the RID as uint32_t
      from  d7ca757 s4:objectclass LDB module - implement the 
"isCriticalSystemObject" subtree delete protection

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


- Log -----------------------------------------------------------------
commit 39d11a977d0f326fe676b245fa55e63416350e81
Author: Matthias Dieter Wallnöfer <[email protected]>
Date:   Sat Oct 16 15:10:11 2010 +0200

    ldb:"ldb_dn_compare_base" - use "unsigned int" counters
    
    Autobuild-User: Matthias Dieter Wallnöfer <[email protected]>
    Autobuild-Date: Sat Oct 16 13:54:13 UTC 2010 on sn-devel-104

commit 531d7f569e2fc1c385fb294fe7fb81d9b3d371f9
Author: Matthias Dieter Wallnöfer <[email protected]>
Date:   Sat Oct 16 15:08:40 2010 +0200

    ldb:"ldb_dn_add_child" - use "unsigned int" counters

commit 1557acb44af8c43ceafa5516915f7107e169f190
Author: Matthias Dieter Wallnöfer <[email protected]>
Date:   Sat Oct 16 15:04:57 2010 +0200

    ldb:"ldb_dn_remove_base_components" - use an "unsigned int" counter

commit 19e94349b3bf3ba605cb5fde3fca9fe12bfe74d9
Author: Matthias Dieter Wallnöfer <[email protected]>
Date:   Sat Oct 16 14:47:42 2010 +0200

    ldb:"ldb_dn_canonical" - use an "unsigned int" counter
    
    Convert it to use an "unsigned int" counter which represents the exact 
length
    of the DN components.

commit bc0294814af8dd2756191c8df74bb8db0fe61319
Author: Matthias Dieter Wallnöfer <[email protected]>
Date:   Sat Oct 16 14:19:19 2010 +0200

    s4:samldb LDB module - use appropriate fixed-length integer types where 
needed
    
    - The "systemFlags" we interpret always as signed
    - Use "samdb_msg_add_int" where possible (much saver for integer storing 
than
      ldb_msg_add_fmt)

commit 42d9978cdd20c4f5a8cfee8e9db8e8d7b405b677
Author: Matthias Dieter Wallnöfer <[email protected]>
Date:   Sat Oct 16 11:00:12 2010 +0200

    s4:dsdb/samdb/ldb_modules/util.c - remove now unused functions which set 
integers
    
    Please do always use the functions which specifiy the appropriate integer
    length to not run into platform-specific issues. Therefore I'm removing 
these
    generic calls.

commit a0bd52975171b1a4d2407026b21df5cfe3d54dce
Author: Matthias Dieter Wallnöfer <[email protected]>
Date:   Sat Oct 16 10:59:30 2010 +0200

    s4:samba3sid LDB module - handle the RID as uint32_t
    
    - This is how we always deal with RIDs
    - Use an integer-length safe function for the RID update

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

Summary of changes:
 source4/dsdb/samdb/ldb_modules/samba3sid.c |   28 ++++++-----
 source4/dsdb/samdb/ldb_modules/samldb.c    |    9 ++--
 source4/dsdb/samdb/ldb_modules/util.c      |   74 ----------------------------
 source4/lib/ldb/common/ldb_dn.c            |   27 +++++-----
 4 files changed, 34 insertions(+), 104 deletions(-)


Changeset truncated at 500 lines:

diff --git a/source4/dsdb/samdb/ldb_modules/samba3sid.c 
b/source4/dsdb/samdb/ldb_modules/samba3sid.c
index 7492684..a5b3df1 100644
--- a/source4/dsdb/samdb/ldb_modules/samba3sid.c
+++ b/source4/dsdb/samdb/ldb_modules/samba3sid.c
@@ -46,9 +46,8 @@ static int samba3sid_next_sid(struct ldb_module *module,
                                "sambaNextGroupRid", "sambaSID", NULL };
        int ret;
        struct ldb_context *ldb = ldb_module_get_ctx(module);
-       int sambaNextRid, sambaNextGroupRid, sambaNextUserRid;
        struct ldb_message *msg;
-       int rid;
+       uint32_t sambaNextRid, sambaNextGroupRid, sambaNextUserRid, rid;
        const char *sambaSID;
 
        ret = dsdb_module_search(module, tmp_ctx, &res, NULL, LDB_SCOPE_SUBTREE,
@@ -75,9 +74,12 @@ static int samba3sid_next_sid(struct ldb_module *module,
        }
        msg = res->msgs[0];
 
-       sambaNextRid = ldb_msg_find_attr_as_uint(msg, "sambaNextRid", -1);
-       sambaNextUserRid = ldb_msg_find_attr_as_uint(msg, "sambaNextUserRid", 
-1);
-       sambaNextGroupRid = ldb_msg_find_attr_as_uint(msg, "sambaNextGroupRid", 
-1);
+       sambaNextRid = ldb_msg_find_attr_as_uint(msg, "sambaNextRid",
+                                                (uint32_t) -1);
+       sambaNextUserRid = ldb_msg_find_attr_as_uint(msg, "sambaNextUserRid",
+                                                    (uint32_t) -1);
+       sambaNextGroupRid = ldb_msg_find_attr_as_uint(msg, "sambaNextGroupRid",
+                                                     (uint32_t) -1);
        sambaSID = ldb_msg_find_attr_as_string(msg, "sambaSID", NULL);
 
        if (sambaSID == NULL) {
@@ -90,15 +92,15 @@ static int samba3sid_next_sid(struct ldb_module *module,
        }
 
        /* choose the highest of the 3 - see pdb_ldap.c for an
-        * explanation */
+        * explaination */
        rid = sambaNextRid;
-       if (sambaNextUserRid > rid) {
+       if ((sambaNextUserRid != (uint32_t) -1) && (sambaNextUserRid > rid)) {
                rid = sambaNextUserRid;
        }
-       if (sambaNextGroupRid > rid) {
+       if ((sambaNextGroupRid != (uint32_t) -1) && (sambaNextGroupRid > rid)) {
                rid = sambaNextGroupRid;
        }
-       if (rid == -1) {
+       if (rid == (uint32_t) -1) {
                ldb_asprintf_errstring(ldb,
                                       __location__
                                       ": No sambaNextRid in %s",
@@ -110,15 +112,15 @@ static int samba3sid_next_sid(struct ldb_module *module,
        /* sambaNextRid is actually the previous RID .... */
        rid += 1;
 
-       (*sid) = talloc_asprintf(tmp_ctx, "%s-%d", sambaSID, rid);
+       (*sid) = talloc_asprintf(tmp_ctx, "%s-%u", sambaSID, rid);
        if (!*sid) {
                talloc_free(tmp_ctx);
                return ldb_module_oom(module);
        }
 
-       ret = dsdb_module_constrainted_update_integer(module, msg->dn,
-                                                     "sambaNextRid",
-                                                     sambaNextRid, rid);
+       ret = dsdb_module_constrainted_update_uint32(module, msg->dn,
+                                                    "sambaNextRid",
+                                                    &sambaNextRid, &rid);
        if (ret != LDB_SUCCESS) {
                ldb_asprintf_errstring(ldb,
                                       __location__
diff --git a/source4/dsdb/samdb/ldb_modules/samldb.c 
b/source4/dsdb/samdb/ldb_modules/samldb.c
index 9d4f3b8..3a971e8 100644
--- a/source4/dsdb/samdb/ldb_modules/samldb.c
+++ b/source4/dsdb/samdb/ldb_modules/samldb.c
@@ -259,7 +259,7 @@ static bool samldb_krbtgtnumber_available(struct samldb_ctx 
*ac, unsigned krbtgt
 static int samldb_rodc_add(struct samldb_ctx *ac)
 {
        struct ldb_context *ldb = ldb_module_get_ctx(ac->module);
-       unsigned krbtgt_number, i_start, i;
+       uint32_t krbtgt_number, i_start, i;
        int ret;
        char *newpass;
 
@@ -359,7 +359,7 @@ static int samldb_add_handle_msDS_IntId(struct samldb_ctx 
*ac)
        int ret;
        bool id_exists;
        uint32_t msds_intid;
-       uint32_t system_flags;
+       int32_t system_flags;
        struct ldb_context *ldb;
        struct ldb_result *ldb_res;
        struct ldb_dn *schema_dn;
@@ -389,7 +389,7 @@ static int samldb_add_handle_msDS_IntId(struct samldb_ctx 
*ac)
        }
 
        /* check systemFlags for SCHEMA_BASE_OBJECT flag */
-       system_flags = ldb_msg_find_attr_as_uint(ac->msg, "systemFlags", 0);
+       system_flags = ldb_msg_find_attr_as_int(ac->msg, "systemFlags", 0);
        if (system_flags & SYSTEM_FLAG_SCHEMA_BASE_OBJECT) {
                return LDB_SUCCESS;
        }
@@ -423,7 +423,8 @@ static int samldb_add_handle_msDS_IntId(struct samldb_ctx 
*ac)
                talloc_free(ldb_res);
        } while(id_exists);
 
-       return ldb_msg_add_fmt(ac->msg, "msDS-IntId", "%d", msds_intid);
+       return samdb_msg_add_int(ldb, ac->msg, ac->msg, "msDS-IntId",
+                                msds_intid);
 }
 
 
diff --git a/source4/dsdb/samdb/ldb_modules/util.c 
b/source4/dsdb/samdb/ldb_modules/util.c
index 2380e02..e550630 100644
--- a/source4/dsdb/samdb/ldb_modules/util.c
+++ b/source4/dsdb/samdb/ldb_modules/util.c
@@ -616,55 +616,6 @@ int dsdb_module_rid_manager_dn(struct ldb_module *module, 
TALLOC_CTX *mem_ctx, s
                                        "rIDManagerReference", dn);
 }
 
-
-/*
-  update an integer attribute safely via a constrained delete/add
- */
-int dsdb_module_constrainted_update_integer(struct ldb_module *module, struct 
ldb_dn *dn,
-                                           const char *attr, uint64_t old_val, 
uint64_t new_val)
-{
-       struct ldb_message *msg;
-       struct ldb_message_element *el;
-       struct ldb_val v1, v2;
-       int ret;
-       char *vstring;
-
-       msg = ldb_msg_new(module);
-       msg->dn = dn;
-
-       ret = ldb_msg_add_empty(msg, attr, LDB_FLAG_MOD_DELETE, &el);
-       if (ret != LDB_SUCCESS) {
-               talloc_free(msg);
-               return ret;
-       }
-       el->num_values = 1;
-       el->values = &v1;
-       vstring = talloc_asprintf(msg, "%llu", (unsigned long long)old_val);
-       if (!vstring) {
-               talloc_free(msg);
-               return ldb_module_oom(module);
-       }
-       v1 = data_blob_string_const(vstring);
-
-       ret = ldb_msg_add_empty(msg, attr, LDB_FLAG_MOD_ADD, &el);
-       if (ret != LDB_SUCCESS) {
-               talloc_free(msg);
-               return ret;
-       }
-       el->num_values = 1;
-       el->values = &v2;
-       vstring = talloc_asprintf(msg, "%llu", (unsigned long long)new_val);
-       if (!vstring) {
-               talloc_free(msg);
-               return ldb_module_oom(module);
-       }
-       v2 = data_blob_string_const(vstring);
-
-       ret = dsdb_module_modify(module, msg, DSDB_FLAG_NEXT_MODULE);
-       talloc_free(msg);
-       return ret;
-}
-
 /*
   used to chain to the callers callback
  */
@@ -676,31 +627,6 @@ int dsdb_next_callback(struct ldb_request *req, struct 
ldb_reply *ares)
        return up_req->callback(up_req, ares);
 }
 
-
-/*
-  set an integer attribute
- */
-int dsdb_module_set_integer(struct ldb_module *module, struct ldb_dn *dn,
-                           const char *attr, uint64_t new_val)
-{
-       struct ldb_message *msg;
-       int ret;
-
-       msg = ldb_msg_new(module);
-       msg->dn = dn;
-
-       ret = ldb_msg_add_fmt(msg, attr, "%llu", (unsigned long long)new_val);
-       if (ret != LDB_SUCCESS) {
-               talloc_free(msg);
-               return ret;
-       }
-       msg->elements[0].flags = LDB_FLAG_MOD_REPLACE;
-
-       ret = dsdb_module_modify(module, msg, DSDB_FLAG_NEXT_MODULE);
-       talloc_free(msg);
-       return ret;
-}
-
 /*
   load the uSNHighest and the uSNUrgent attributes from the @REPLCHANGED
   object for a partition
diff --git a/source4/lib/ldb/common/ldb_dn.c b/source4/lib/ldb/common/ldb_dn.c
index 9bbefdd..69018b7 100644
--- a/source4/lib/ldb/common/ldb_dn.c
+++ b/source4/lib/ldb/common/ldb_dn.c
@@ -1029,7 +1029,7 @@ char *ldb_dn_alloc_casefold(TALLOC_CTX *mem_ctx, struct 
ldb_dn *dn)
 int ldb_dn_compare_base(struct ldb_dn *base, struct ldb_dn *dn)
 {
        int ret;
-       long long int n_base, n_dn;
+       unsigned int n_base, n_dn;
 
        if ( ! base || base->invalid) return 1;
        if ( ! dn || dn->invalid) return -1;
@@ -1080,7 +1080,7 @@ int ldb_dn_compare_base(struct ldb_dn *base, struct 
ldb_dn *dn)
        n_base = base->comp_num - 1;
        n_dn = dn->comp_num - 1;
 
-       while (n_base >= 0) {
+       while (n_base != (unsigned int) -1) {
                char *b_name = base->components[n_base].cf_name;
                char *dn_name = dn->components[n_dn].cf_name;
 
@@ -1486,7 +1486,7 @@ bool ldb_dn_add_child(struct ldb_dn *dn, struct ldb_dn 
*child)
 
        if (dn->components) {
                unsigned int n;
-               long long int i, j;
+               unsigned int i, j;
 
                if (dn->comp_num == 0) {
                        return false;
@@ -1514,7 +1514,8 @@ bool ldb_dn_add_child(struct ldb_dn *dn, struct ldb_dn 
*child)
                        return false;
                }
 
-               for (i = dn->comp_num - 1, j = n - 1; i >= 0; i--, j--) {
+               for (i = dn->comp_num - 1, j = n - 1; i != (unsigned int) -1;
+                    i--, j--) {
                        dn->components[j] = dn->components[i];
                }
 
@@ -1600,7 +1601,7 @@ bool ldb_dn_add_child_fmt(struct ldb_dn *dn, const char 
*child_fmt, ...)
 
 bool ldb_dn_remove_base_components(struct ldb_dn *dn, unsigned int num)
 {
-       long long int i;
+       unsigned int i;
 
        if ( ! ldb_dn_validate(dn)) {
                return false;
@@ -1611,11 +1612,11 @@ bool ldb_dn_remove_base_components(struct ldb_dn *dn, 
unsigned int num)
        }
 
        /* free components */
-       for (i = num; i > 0; i--) {
-               LDB_FREE(dn->components[dn->comp_num - i].name);
-               LDB_FREE(dn->components[dn->comp_num - i].value.data);
-               LDB_FREE(dn->components[dn->comp_num - i].cf_name);
-               LDB_FREE(dn->components[dn->comp_num - i].cf_value.data);
+       for (i = dn->comp_num - num; i < dn->comp_num; i++) {
+               LDB_FREE(dn->components[i].name);
+               LDB_FREE(dn->components[i].value.data);
+               LDB_FREE(dn->components[i].cf_name);
+               LDB_FREE(dn->components[i].cf_value.data);
        }
 
        dn->comp_num -= num;
@@ -1711,7 +1712,7 @@ struct ldb_dn *ldb_dn_get_parent(TALLOC_CTX *mem_ctx, 
struct ldb_dn *dn)
 
 */
 static char *ldb_dn_canonical(TALLOC_CTX *mem_ctx, struct ldb_dn *dn, int 
ex_format) {
-       long long int i;
+       unsigned int i;
        TALLOC_CTX *tmpctx;
        char *cracked = NULL;
        const char *format = (ex_format ? "\n" : "/" );
@@ -1723,7 +1724,7 @@ static char *ldb_dn_canonical(TALLOC_CTX *mem_ctx, struct 
ldb_dn *dn, int ex_for
        tmpctx = talloc_new(mem_ctx);
 
        /* Walk backwards down the DN, grabbing 'dc' components at first */
-       for (i = dn->comp_num - 1; i >= 0; i--) {
+       for (i = dn->comp_num - 1; i != (unsigned int) -1; i--) {
                if (ldb_attr_cmp(dn->components[i].name, "dc") != 0) {
                        break;
                }
@@ -1742,7 +1743,7 @@ static char *ldb_dn_canonical(TALLOC_CTX *mem_ctx, struct 
ldb_dn *dn, int ex_for
        }
 
        /* Only domain components?  Finish here */
-       if (i < 0) {
+       if (i == (unsigned int) -1) {
                cracked = talloc_strdup_append_buffer(cracked, format);
                talloc_steal(mem_ctx, cracked);
                goto done;


-- 
Samba Shared Repository

Reply via email to