summaryrefslogtreecommitdiff
path: root/source4/lib/ldb/common
diff options
context:
space:
mode:
authorAndrew Bartlett <abartlet@samba.org>2009-11-11 19:24:48 +1100
committerAndrew Bartlett <abartlet@samba.org>2009-11-12 16:34:14 +1100
commit5940ca60e23d142e4d3d0b2ce12f191663147d03 (patch)
tree401d9b942265d4f5dcce418e64d2796cc1e98250 /source4/lib/ldb/common
parent716bba545729dbb46631bf233c1023576de54926 (diff)
downloadsamba-5940ca60e23d142e4d3d0b2ce12f191663147d03.tar.gz
samba-5940ca60e23d142e4d3d0b2ce12f191663147d03.tar.bz2
samba-5940ca60e23d142e4d3d0b2ce12f191663147d03.zip
s4:ldb Don't segfault if we somehow get an unknown extended dn element
Diffstat (limited to 'source4/lib/ldb/common')
-rw-r--r--source4/lib/ldb/common/ldb_dn.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/source4/lib/ldb/common/ldb_dn.c b/source4/lib/ldb/common/ldb_dn.c
index 036f4a223e..9ac654973a 100644
--- a/source4/lib/ldb/common/ldb_dn.c
+++ b/source4/lib/ldb/common/ldb_dn.c
@@ -781,6 +781,9 @@ char *ldb_dn_get_extended_linearized(void *mem_ctx, struct ldb_dn *dn, int mode)
int ret;
ext_syntax = ldb_dn_extended_syntax_by_name(dn->ldb, name);
+ if (!ext_syntax) {
+ return NULL;
+ }
if (mode == 1) {
ret = ext_syntax->write_clear_fn(dn->ldb, mem_ctx,
@@ -1823,6 +1826,11 @@ int ldb_dn_set_extended_component(struct ldb_dn *dn,
return LDB_ERR_OTHER;
}
+ if (!ldb_dn_extended_syntax_by_name(dn->ldb, name)) {
+ /* We don't know how to handle this type of thing */
+ return LDB_ERR_INVALID_DN_SYNTAX;
+ }
+
for (i=0; i < dn->ext_comp_num; i++) {
if (ldb_attr_cmp(dn->ext_components[i].name, name) == 0) {
if (val) {