diff options
author | Jelmer Vernooij <jelmer@samba.org> | 2005-08-30 00:43:26 +0000 |
---|---|---|
committer | Gerald (Jerry) Carter <jerry@samba.org> | 2007-10-10 13:34:59 -0500 |
commit | c0293aa7159c8b5c9f1a1b13f64af08e5a55ad6a (patch) | |
tree | e0169e5c93e4d7aaca99124b95dfb02ff250b207 /source4 | |
parent | 7be4cf8c1ded42daf7e86ecd2c0dbfeeed312b22 (diff) | |
download | samba-c0293aa7159c8b5c9f1a1b13f64af08e5a55ad6a.tar.gz samba-c0293aa7159c8b5c9f1a1b13f64af08e5a55ad6a.tar.xz samba-c0293aa7159c8b5c9f1a1b13f64af08e5a55ad6a.zip |
r9771: - Prevent ldb crash when a invalid DN is added
- Don't silently drop records with empty attributes
tridge/simo: Could you please verify this patch is correct?
(This used to be commit 505c9b1d3d39475da141d3b3c156a7e5ba06790c)
Diffstat (limited to 'source4')
-rw-r--r-- | source4/lib/ldb/common/ldb_attributes.c | 2 | ||||
-rw-r--r-- | source4/lib/ldb/common/ldb_ldif.c | 6 | ||||
-rw-r--r-- | source4/lib/ldb/common/ldb_msg.c | 2 |
3 files changed, 8 insertions, 2 deletions
diff --git a/source4/lib/ldb/common/ldb_attributes.c b/source4/lib/ldb/common/ldb_attributes.c index a915666d781..3973fc515c5 100644 --- a/source4/lib/ldb/common/ldb_attributes.c +++ b/source4/lib/ldb/common/ldb_attributes.c @@ -66,7 +66,7 @@ static int ldb_default_copy(struct ldb_context *ldb, { *out = ldb_val_dup(mem_ctx, in); - if (out->length == 0) { + if (out->data == NULL && in->data != NULL) { return -1; } diff --git a/source4/lib/ldb/common/ldb_ldif.c b/source4/lib/ldb/common/ldb_ldif.c index 38866d70313..a5768b97965 100644 --- a/source4/lib/ldb/common/ldb_ldif.c +++ b/source4/lib/ldb/common/ldb_ldif.c @@ -590,6 +590,12 @@ struct ldb_ldif *ldb_ldif_read(struct ldb_context *ldb, msg->dn = ldb_dn_explode(msg, value.data); + if (msg->dn == NULL) { + ldb_debug(ldb, LDB_DEBUG_ERROR, "Error: Unable to parse dn '%s'\n", + value.data); + goto failed; + } + while (next_attr(ldif, &s, &attr, &value) == 0) { const struct ldb_attrib_handler *h; struct ldb_message_element *el; diff --git a/source4/lib/ldb/common/ldb_msg.c b/source4/lib/ldb/common/ldb_msg.c index 197c42ddb5b..f65c944eab9 100644 --- a/source4/lib/ldb/common/ldb_msg.c +++ b/source4/lib/ldb/common/ldb_msg.c @@ -99,7 +99,7 @@ struct ldb_val ldb_val_dup(void *mem_ctx, const struct ldb_val *v) { struct ldb_val v2; v2.length = v->length; - if (v->length == 0) { + if (v->data == NULL) { v2.data = NULL; return v2; } |