diff options
author | Matthias Dieter Wallnöfer <mdw@samba.org> | 2010-11-10 16:05:16 +0100 |
---|---|---|
committer | Matthias Dieter Wallnöfer <mdw@samba.org> | 2010-11-11 10:03:40 +0100 |
commit | feb00fe7cc238a78b3832c116cb4634936597735 (patch) | |
tree | fc4a62bfa07e55d15a7e18f9de960e31b47ed9a4 /source4/dsdb/samdb/ldb_modules/repl_meta_data.c | |
parent | 4fe63d927e5e684d3e2bec9642a1e77b056ab2ed (diff) | |
download | samba-feb00fe7cc238a78b3832c116cb4634936597735.tar.gz samba-feb00fe7cc238a78b3832c116cb4634936597735.tar.bz2 samba-feb00fe7cc238a78b3832c116cb4634936597735.zip |
s4:dsdb - proof against empty RDN values where expected
This should prevent crashes as pointed out on the mailing list.
Diffstat (limited to 'source4/dsdb/samdb/ldb_modules/repl_meta_data.c')
-rw-r--r-- | source4/dsdb/samdb/ldb_modules/repl_meta_data.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/source4/dsdb/samdb/ldb_modules/repl_meta_data.c b/source4/dsdb/samdb/ldb_modules/repl_meta_data.c index 7838b65fdf..b2d5292a14 100644 --- a/source4/dsdb/samdb/ldb_modules/repl_meta_data.c +++ b/source4/dsdb/samdb/ldb_modules/repl_meta_data.c @@ -2561,6 +2561,10 @@ static int replmd_delete(struct ldb_module *module, struct ldb_request *req) rdn_name = ldb_dn_get_rdn_name(old_dn); rdn_value = ldb_dn_get_rdn_val(old_dn); + if ((rdn_name == NULL) || (rdn_value == NULL)) { + talloc_free(tmp_ctx); + return ldb_operr(ldb); + } msg = ldb_msg_new(tmp_ctx); if (msg == NULL) { @@ -2753,6 +2757,10 @@ static int replmd_delete(struct ldb_module *module, struct ldb_request *req) /* work out what the new rdn value is, for updating the rDN and name fields */ new_rdn_value = ldb_dn_get_rdn_val(new_dn); + if (new_rdn_value == NULL) { + talloc_free(tmp_ctx); + return ldb_operr(ldb); + } sa = dsdb_attribute_by_lDAPDisplayName(schema, rdn_name); if (!sa) { |