s4:ldb Don't segfault if we somehow get an unknown extended dn element
authorAndrew Bartlett <abartlet@samba.org>
Wed, 11 Nov 2009 08:24:48 +0000 (19:24 +1100)
committerAndrew Bartlett <abartlet@samba.org>
Wed, 11 Nov 2009 21:11:22 +0000 (08:11 +1100)
source4/lib/ldb/common/ldb_dn.c

index 036f4a223e9d18751293388671fae3b6c6e3e2ce..9ac654973a4a6949cbea53d89efaf041d537c153 100644 (file)
@@ -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) {