diff options
author | Matthias Dieter Wallnöfer <mdw@samba.org> | 2010-11-03 16:25:17 +0100 |
---|---|---|
committer | Matthias Dieter Wallnöfer <mdw@samba.org> | 2010-11-03 16:36:50 +0100 |
commit | d873fb72bc3f7b410a66f98b5045101292718717 (patch) | |
tree | 681ed173b3126e863e82f787f5cfd06b83a036cc /source4/dsdb | |
parent | b841d12a138a4b9a73f159a7056b0efd64de1289 (diff) | |
download | samba-d873fb72bc3f7b410a66f98b5045101292718717.tar.gz samba-d873fb72bc3f7b410a66f98b5045101292718717.tar.bz2 samba-d873fb72bc3f7b410a66f98b5045101292718717.zip |
s4:objectclass_attrs LDB module - refactor the "dSHeuristics" checker
The checks are done when there are more than 0 values. The other checks should
be performed by the other parts of the module.
Diffstat (limited to 'source4/dsdb')
-rw-r--r-- | source4/dsdb/samdb/ldb_modules/objectclass_attrs.c | 21 |
1 files changed, 9 insertions, 12 deletions
diff --git a/source4/dsdb/samdb/ldb_modules/objectclass_attrs.c b/source4/dsdb/samdb/ldb_modules/objectclass_attrs.c index f609e9210b..bd4e0be646 100644 --- a/source4/dsdb/samdb/ldb_modules/objectclass_attrs.c +++ b/source4/dsdb/samdb/ldb_modules/objectclass_attrs.c @@ -72,21 +72,18 @@ static int oc_op_callback(struct ldb_request *req, struct ldb_reply *ares); /* checks correctness of dSHeuristics attribute * as described in MS-ADTS 7.1.1.2.4.1.2 dSHeuristics */ - static int oc_validate_dsheuristics(struct ldb_message_element *el) { - if (LDB_FLAG_MOD_TYPE(el->flags) == LDB_FLAG_MOD_DELETE || - el->num_values < 1) { - return LDB_SUCCESS; - } - if (el->values[0].length > DS_HR_LDAP_BYPASS_UPPER_LIMIT_BOUNDS) { - return LDB_ERR_CONSTRAINT_VIOLATION; - } else if (el->values[0].length >= DS_HR_TENTH_CHAR - && el->values[0].data[DS_HR_TENTH_CHAR-1] != '1') { - return LDB_ERR_CONSTRAINT_VIOLATION; - } else { - return LDB_SUCCESS; + if (el->num_values > 0) { + if (el->values[0].length > DS_HR_LDAP_BYPASS_UPPER_LIMIT_BOUNDS) { + return LDB_ERR_CONSTRAINT_VIOLATION; + } else if (el->values[0].length >= DS_HR_TENTH_CHAR + && el->values[0].data[DS_HR_TENTH_CHAR-1] != '1') { + return LDB_ERR_CONSTRAINT_VIOLATION; + } } + + return LDB_SUCCESS; } static int attr_handler(struct oc_context *ac) |