diff options
author | Andrew Tridgell <tridge@samba.org> | 2011-02-14 10:08:24 +1100 |
---|---|---|
committer | Andrew Tridgell <tridge@samba.org> | 2011-02-14 17:55:08 +1100 |
commit | c2ccd24ebf91125394e4aa369945cc689152ff5f (patch) | |
tree | 674a58a851a119233fb5fa290acd0f2c8e0bfdae | |
parent | a48328a8282d116d17515cfe681c1b41f6541d39 (diff) | |
download | samba-c2ccd24ebf91125394e4aa369945cc689152ff5f.tar.gz samba-c2ccd24ebf91125394e4aa369945cc689152ff5f.tar.bz2 samba-c2ccd24ebf91125394e4aa369945cc689152ff5f.zip |
s4-ldb: added LDB_FLAG_INTERNAL_FORCE_SINGLE_VALUE_CHECK
this allows a ldb module to force an element as single valued
-rw-r--r-- | source4/lib/ldb/include/ldb_module.h | 3 | ||||
-rw-r--r-- | source4/lib/ldb/ldb_tdb/ldb_tdb.c | 8 |
2 files changed, 11 insertions, 0 deletions
diff --git a/source4/lib/ldb/include/ldb_module.h b/source4/lib/ldb/include/ldb_module.h index a793525b7c..0f2a080763 100644 --- a/source4/lib/ldb/include/ldb_module.h +++ b/source4/lib/ldb/include/ldb_module.h @@ -49,6 +49,9 @@ struct ldb_module; /* attribute has failed access check and must not be exposed */ #define LDB_FLAG_INTERNAL_INACCESSIBLE_ATTRIBUTE 0x40 +/* force single value checking on this attribute */ +#define LDB_FLAG_INTERNAL_FORCE_SINGLE_VALUE_CHECK 0x80 + /* these function pointers define the operations that a ldb module can intercept diff --git a/source4/lib/ldb/ldb_tdb/ldb_tdb.c b/source4/lib/ldb/ldb_tdb/ldb_tdb.c index 5c1dd1bdce..831361c547 100644 --- a/source4/lib/ldb/ldb_tdb/ldb_tdb.c +++ b/source4/lib/ldb/ldb_tdb/ldb_tdb.c @@ -284,6 +284,14 @@ static bool ldb_tdb_single_valued(const struct ldb_schema_attribute *a, { if (!a) return false; if (el != NULL) { + if (el->flags & LDB_FLAG_INTERNAL_FORCE_SINGLE_VALUE_CHECK) { + /* override from a ldb module, for example + used for the description field, which is + marked multi-valued in the schema but which + should not actually accept multiple + values */ + return true; + } if (el->flags & LDB_FLAG_INTERNAL_DISABLE_SINGLE_VALUE_CHECK) { /* override from a ldb module, for example used for deleted linked attribute entries */ |