summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Tridgell <tridge@samba.org>2011-08-02 17:16:44 +1000
committerAndrew Tridgell <tridge@samba.org>2011-08-04 16:17:25 +1000
commit849d042dd88e8e7de2748524b054b350af06a859 (patch)
tree1becf591e4a25e2b419c788100e8dc277f19cca0
parente07ca09a7bac30b99b0033a59746ba166e429aec (diff)
downloadsamba-849d042dd88e8e7de2748524b054b350af06a859.tar.gz
ldb: added a new always-fail ldap extended match OID
this is used when rewriting filter rules to replace a filter rule with one that is guaranteed not to match Pair-Programmed-With: Andrew Bartlett <abartlet@samba.org>
-rw-r--r--lib/ldb/common/ldb_match.c13
-rw-r--r--lib/ldb/include/ldb_module.h2
-rw-r--r--source4/setup/schema_samba4.ldif8
3 files changed, 22 insertions, 1 deletions
diff --git a/lib/ldb/common/ldb_match.c b/lib/ldb/common/ldb_match.c
index c23e80478af..5eee02dea31 100644
--- a/lib/ldb/common/ldb_match.c
+++ b/lib/ldb/common/ldb_match.c
@@ -380,6 +380,16 @@ static int ldb_comparator_bitmask(const char *oid, const struct ldb_val *v1, con
return LDB_SUCCESS;
}
+/*
+ always return false
+*/
+static int ldb_comparator_false(const char *oid, const struct ldb_val *v1, const struct ldb_val *v2,
+ bool *matched)
+{
+ *matched = false;
+ return LDB_SUCCESS;
+}
+
/*
extended match, handles things like bitops
@@ -395,7 +405,8 @@ static int ldb_match_extended(struct ldb_context *ldb,
int (*comparator)(const char *, const struct ldb_val *, const struct ldb_val *, bool *);
} rules[] = {
{ LDB_OID_COMPARATOR_AND, ldb_comparator_bitmask},
- { LDB_OID_COMPARATOR_OR, ldb_comparator_bitmask}
+ { LDB_OID_COMPARATOR_OR, ldb_comparator_bitmask},
+ { SAMBA_LDAP_MATCH_ALWAYS_FALSE, ldb_comparator_false}
};
int (*comp)(const char *,const struct ldb_val *, const struct ldb_val *, bool *) = NULL;
struct ldb_message_element *el;
diff --git a/lib/ldb/include/ldb_module.h b/lib/ldb/include/ldb_module.h
index fecf0c7ede9..2acd8f364be 100644
--- a/lib/ldb/include/ldb_module.h
+++ b/lib/ldb/include/ldb_module.h
@@ -52,6 +52,8 @@ struct ldb_module;
/* force single value checking on this attribute */
#define LDB_FLAG_INTERNAL_FORCE_SINGLE_VALUE_CHECK 0x80
+/* an extended match rule that always fails to match */
+#define SAMBA_LDAP_MATCH_ALWAYS_FALSE "1.3.6.1.4.1.7165.4.5.1"
/*
these function pointers define the operations that a ldb module can intercept
diff --git a/source4/setup/schema_samba4.ldif b/source4/setup/schema_samba4.ldif
index 986f0f0f205..1102fcd8d4e 100644
--- a/source4/setup/schema_samba4.ldif
+++ b/source4/setup/schema_samba4.ldif
@@ -12,6 +12,8 @@
## 1.3.6.1.4.1.7165.4.4.x - LDB/LDAP Extended Operations
### see dsdb/samdb/samdb.h
+## 1.3.6.1.4.1.7165.4.5.x - ldap extended matches
+
## 1.3.6.1.4.1.7165.4.255.x - mapped OIDs due to conflicts between AD and standards-track
#
#
@@ -197,6 +199,12 @@
#Allocated: DSDB_EXTENDED_CREATE_PARTITION_OID 1.3.6.1.4.1.7165.4.4.4
#Allocated: DSDB_EXTENDED_ALLOCATE_RID_POOL 1.3.6.1.4.1.7165.4.4.5
+
+############
+# ldap extended matches
+#Allocated: SAMBA_LDAP_MATCH_ALWAYS_FALSE 1.3.6.1.4.1.7165.4.5.1
+
+
#Allocated: (middleName) attributeID: 1.3.6.1.4.1.7165.4.255.1
#Allocated: (defaultGroup) attributeID: 1.3.6.1.4.1.7165.4.255.2