git.samba.org
/
abartlet
/
samba.git
/
.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
| inline |
side by side
(parent:
e05f7f0
)
s4:ldb Don't segfault if we somehow get an unknown extended dn element
author
Andrew Bartlett
<abartlet@samba.org>
Wed, 11 Nov 2009 08:24:48 +0000
(19:24 +1100)
committer
Andrew Bartlett
<abartlet@samba.org>
Wed, 11 Nov 2009 21:11:22 +0000
(08:11 +1100)
source4/lib/ldb/common/ldb_dn.c
patch
|
blob
|
history
diff --git
a/source4/lib/ldb/common/ldb_dn.c
b/source4/lib/ldb/common/ldb_dn.c
index 036f4a223e9d18751293388671fae3b6c6e3e2ce..9ac654973a4a6949cbea53d89efaf041d537c153 100644
(file)
--- 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) {