[SCM] Samba Shared Repository - branch master updated
Matthias Dieter Wallnöfer
mdw at samba.org
Mon May 31 14:56:20 MDT 2010
The branch, master has been updated
via 8378898... s4:samldb LDB module - start on a sequential trigger implementation
via a8788ce... ldb:ldb_msg_add_steal_string - prevent also there the addition of strings with length 0
via 0fce829... s4:dsdb_load_udv_v1 - "uint32_t" counter type fits better than "unsigned int"
from 0fddbe4... s3-waf: Check if compiler supports LL suffix
http://gitweb.samba.org/?p=samba.git;a=shortlog;h=master
- Log -----------------------------------------------------------------
commit 83788988cbd879789108e8119fa3527ceeb47fe4
Author: Matthias Dieter Wallnöfer <mdw at samba.org>
Date: Mon May 31 13:58:27 2010 +0200
s4:samldb LDB module - start on a sequential trigger implementation
This is a start to allow the triggers to be called sequentially.
commit a8788ce5236a4fbc1c8096a0eed48638b5a03dd8
Author: Matthias Dieter Wallnöfer <mdw at samba.org>
Date: Mon May 31 22:22:37 2010 +0200
ldb:ldb_msg_add_steal_string - prevent also there the addition of strings with length 0
commit 0fce829de46995d474053bd581555dd40e549ff1
Author: Matthias Dieter Wallnöfer <mdw at samba.org>
Date: Mon May 31 22:04:29 2010 +0200
s4:dsdb_load_udv_v1 - "uint32_t" counter type fits better than "unsigned int"
-----------------------------------------------------------------------
Summary of changes:
source4/dsdb/common/util.c | 2 +-
source4/dsdb/samdb/ldb_modules/samldb.c | 36 ++++++++++++++++++++++--------
source4/lib/ldb/common/ldb_msg.c | 5 ++++
3 files changed, 32 insertions(+), 11 deletions(-)
Changeset truncated at 500 lines:
diff --git a/source4/dsdb/common/util.c b/source4/dsdb/common/util.c
index 9329e61..408a959 100644
--- a/source4/dsdb/common/util.c
+++ b/source4/dsdb/common/util.c
@@ -3310,7 +3310,7 @@ int dsdb_load_udv_v1(struct ldb_context *samdb, struct ldb_dn *dn, TALLOC_CTX *m
struct drsuapi_DsReplicaCursor **cursors, uint32_t *count)
{
struct drsuapi_DsReplicaCursor2 *v2;
- unsigned int i;
+ uint32_t i;
int ret;
ret = dsdb_load_udv_v2(samdb, dn, mem_ctx, &v2, count);
diff --git a/source4/dsdb/samdb/ldb_modules/samldb.c b/source4/dsdb/samdb/ldb_modules/samldb.c
index d7ce48f..a068a29 100644
--- a/source4/dsdb/samdb/ldb_modules/samldb.c
+++ b/source4/dsdb/samdb/ldb_modules/samldb.c
@@ -1168,7 +1168,7 @@ static int samldb_prim_group_change(struct samldb_ctx *ac)
rid = samdb_result_uint(ac->msg, "primaryGroupID", (uint32_t) -1);
if (rid == (uint32_t) -1) {
/* we aren't affected of any primary group change */
- return ldb_next_request(ac->module, ac->req);
+ return LDB_SUCCESS;
}
sid = dom_sid_add_rid(ac, samdb_domain_sid(ldb), rid);
@@ -1225,7 +1225,7 @@ static int samldb_prim_group_change(struct samldb_ctx *ac)
}
}
- return ldb_next_request(ac->module, ac->req);
+ return LDB_SUCCESS;
}
@@ -1241,6 +1241,11 @@ static int samldb_member_check(struct samldb_ctx *ac)
ldb = ldb_module_get_ctx(ac->module);
el = ldb_msg_find_element(ac->msg, "member");
+ if (el == NULL) {
+ /* we aren't affected */
+ return LDB_SUCCESS;
+ }
+
for (i = 0; i < el->num_values; i++) {
/* Denies to add "member"s to groups which are primary ones
* for them */
@@ -1275,7 +1280,7 @@ static int samldb_member_check(struct samldb_ctx *ac)
}
}
- return ldb_next_request(ac->module, ac->req);
+ return LDB_SUCCESS;
}
@@ -1294,7 +1299,7 @@ static int samldb_prim_group_users_check(struct samldb_ctx *ac)
NULL);
if (sid == NULL) {
/* No SID - it might not be a SAM object - therefore ok */
- return ldb_next_request(ac->module, ac->req);
+ return LDB_SUCCESS;
}
status = dom_sid_split_rid(ac, sid, NULL, &rid);
if (!NT_STATUS_IS_OK(status)) {
@@ -1302,7 +1307,7 @@ static int samldb_prim_group_users_check(struct samldb_ctx *ac)
}
if (rid == 0) {
/* Special object (security principal?) */
- return ldb_next_request(ac->module, ac->req);
+ return LDB_SUCCESS;
}
/* Deny delete requests from groups which are primary ones */
@@ -1316,7 +1321,7 @@ static int samldb_prim_group_users_check(struct samldb_ctx *ac)
return LDB_ERR_ENTRY_ALREADY_EXISTS;
}
- return ldb_next_request(ac->module, ac->req);
+ return LDB_SUCCESS;
}
@@ -1507,7 +1512,10 @@ static int samldb_modify(struct ldb_module *module, struct ldb_request *req)
req->op.mod.message = ac->msg = ldb_msg_copy_shallow(req,
req->op.mod.message);
- return samldb_prim_group_change(ac);
+ ret = samldb_prim_group_change(ac);
+ if (ret != LDB_SUCCESS) {
+ return ret;
+ }
}
if (el && (el->flags == LDB_FLAG_MOD_DELETE)) {
return LDB_ERR_UNWILLING_TO_PERFORM;
@@ -1568,10 +1576,12 @@ static int samldb_modify(struct ldb_module *module, struct ldb_request *req)
req->op.mod.message = ac->msg = ldb_msg_copy_shallow(req,
req->op.mod.message);
- return samldb_member_check(ac);
+ ret = samldb_member_check(ac);
+ if (ret != LDB_SUCCESS) {
+ return ret;
+ }
}
- /* nothing matched, go on */
return ldb_next_request(module, req);
}
@@ -1579,6 +1589,7 @@ static int samldb_modify(struct ldb_module *module, struct ldb_request *req)
static int samldb_delete(struct ldb_module *module, struct ldb_request *req)
{
struct samldb_ctx *ac;
+ int ret;
if (ldb_dn_is_special(req->op.del.dn)) {
/* do not manipulate our control entries */
@@ -1589,7 +1600,12 @@ static int samldb_delete(struct ldb_module *module, struct ldb_request *req)
if (ac == NULL)
return LDB_ERR_OPERATIONS_ERROR;
- return samldb_prim_group_users_check(ac);
+ ret = samldb_prim_group_users_check(ac);
+ if (ret != LDB_SUCCESS) {
+ return ret;
+ }
+
+ return ldb_next_request(module, req);
}
static int samldb_extended_allocate_rid_pool(struct ldb_module *module, struct ldb_request *req)
diff --git a/source4/lib/ldb/common/ldb_msg.c b/source4/lib/ldb/common/ldb_msg.c
index 0322446..2cfc449 100644
--- a/source4/lib/ldb/common/ldb_msg.c
+++ b/source4/lib/ldb/common/ldb_msg.c
@@ -255,6 +255,11 @@ int ldb_msg_add_steal_string(struct ldb_message *msg,
val.data = (uint8_t *)str;
val.length = strlen(str);
+ if (val.length == 0) {
+ /* allow empty strings as non-existent attributes */
+ return LDB_SUCCESS;
+ }
+
return ldb_msg_add_steal_value(msg, attr_name, &val);
}
--
Samba Shared Repository
More information about the samba-cvs
mailing list