The branch, master has been updated via b28afd2... s4:ldb_dn: fix an uninitialized variable (found by make valgrindtest) via 47fafe8... s4:ldb_dn: remove dn->ext_linearized when ext_components is modified. via c7432e4... s4:ldb_dn: reset dn->ext_comp_num in ldb_dn_explode() via 4bad696... s4:dsdb/schema: fix validation of DNs from 2caa2a0... s4:provision.zone - fix port of "_ldap._tcp.gc._msdcs"
http://gitweb.samba.org/?p=samba.git;a=shortlog;h=master - Log ----------------------------------------------------------------- commit b28afd2bcc825e9fef415f3a256e39e4af1ae84e Author: Stefan Metzmacher <me...@samba.org> Date: Fri Feb 26 10:53:06 2010 +0100 s4:ldb_dn: fix an uninitialized variable (found by make valgrindtest) metze commit 47fafe801b5a4a054dcde301b892cda9c0ababb0 Author: Stefan Metzmacher <me...@samba.org> Date: Fri Feb 26 15:48:02 2010 +0100 s4:ldb_dn: remove dn->ext_linearized when ext_components is modified. metze commit c7432e49506561316f42bf0a26dd21de563c8eda Author: Stefan Metzmacher <me...@samba.org> Date: Thu Feb 25 23:19:53 2010 +0100 s4:ldb_dn: reset dn->ext_comp_num in ldb_dn_explode() metze commit 4bad696f9ef3bdc3a1a9dc6b98a58d7071b994d7 Author: Stefan Metzmacher <me...@samba.org> Date: Fri Feb 26 16:48:09 2010 +0100 s4:dsdb/schema: fix validation of DNs ldb_dn_extended_filter() removes all but the listed components, I didn't noticed that when writting the code. Doing a ldb_dn_remove_extended_components(dn2) is wrong. This was hidden by some bugs in the ldb_dn code. metze ----------------------------------------------------------------------- Summary of changes: source4/dsdb/schema/schema_syntax.c | 1 - source4/lib/ldb/common/ldb_dn.c | 13 +++++++------ 2 files changed, 7 insertions(+), 7 deletions(-) Changeset truncated at 500 lines: diff --git a/source4/dsdb/schema/schema_syntax.c b/source4/dsdb/schema/schema_syntax.c index 877200b..bdd22f8 100644 --- a/source4/dsdb/schema/schema_syntax.c +++ b/source4/dsdb/schema/schema_syntax.c @@ -1742,7 +1742,6 @@ static WERROR dsdb_syntax_DN_validate_one_val(struct ldb_context *ldb, * one. */ ldb_dn_extended_filter(dn, extended_list); - ldb_dn_remove_extended_components(dn2); dn_str = ldb_dn_get_extended_linearized(tmp_ctx, dn, 0); if (dn_str == NULL) { diff --git a/source4/lib/ldb/common/ldb_dn.c b/source4/lib/ldb/common/ldb_dn.c index c395be2..04e769f 100644 --- a/source4/lib/ldb/common/ldb_dn.c +++ b/source4/lib/ldb/common/ldb_dn.c @@ -333,8 +333,8 @@ static bool ldb_dn_explode(struct ldb_dn *dn) /* make sure we free this if alloced previously before replacing */ talloc_free(dn->components); - talloc_free(dn->ext_components); - dn->ext_components = NULL; + LDB_FREE(dn->ext_components); + dn->ext_comp_num = 0; /* in the common case we have 3 or more components */ /* make sure all components are zeroed, other functions depend on it */ @@ -805,7 +805,7 @@ static int ldb_dn_extended_component_compare(const void *p1, const void *p2) char *ldb_dn_get_extended_linearized(void *mem_ctx, struct ldb_dn *dn, int mode) { const char *linearized = ldb_dn_get_linearized(dn); - char *p; + char *p = NULL; int i; if (!linearized) { @@ -894,6 +894,7 @@ void ldb_dn_extended_filter(struct ldb_dn *dn, const char * const *accept) i--; } } + LDB_FREE(dn->ext_linearized); } @@ -1424,9 +1425,7 @@ bool ldb_dn_add_base(struct ldb_dn *dn, struct ldb_dn *base) /* Wipe the ext_linearized DN, * the GUID and SID are almost certainly no longer valid */ - if (dn->ext_linearized) { - LDB_FREE(dn->ext_linearized); - } + LDB_FREE(dn->ext_linearized); LDB_FREE(dn->ext_components); dn->ext_comp_num = 0; @@ -1935,6 +1934,7 @@ int ldb_dn_set_extended_component(struct ldb_dn *dn, } return LDB_SUCCESS; } + LDB_FREE(dn->ext_linearized); } } @@ -1972,6 +1972,7 @@ void ldb_dn_remove_extended_components(struct ldb_dn *dn) { dn->ext_comp_num = 0; LDB_FREE(dn->ext_components); + LDB_FREE(dn->ext_linearized); } bool ldb_dn_is_valid(struct ldb_dn *dn) -- Samba Shared Repository