The branch, master has been updated via 1667ff7 s4-ldb_ldif: Take into account LDB_FLG_SHOW_BINARY via fb0df53 s4-ldb_ldif: Don't check for LDB_FLG_SHOW_BINARY in ldb_should_b64_encode from 622ef6a s4-provision: Fixed owner/group for hard-coded Sites descriptor.
http://gitweb.samba.org/?p=samba.git;a=shortlog;h=master - Log ----------------------------------------------------------------- commit 1667ff79caa91d6bd97df127fb4a3b3d0fa5c3a1 Author: Kamen Mazdrashki <kame...@samba.org> Date: Tue Jan 18 00:51:30 2011 +0200 s4-ldb_ldif: Take into account LDB_FLG_SHOW_BINARY when user requires binary data to be displayed using samba user-friendly ldif handlers Found using following test search: bin/ldbsearch -H st/dc/private/sam.ldb -b "CN=Deleted Objects,DC=samba,DC=example,DC=com" \ "(objectGUID=97b52eac-6d89-434d-b935-1e5f2e086ffc)" replPropertyMetaData --show-deleted --show-binary Autobuild-User: Kamen Mazdrashki <kame...@samba.org> Autobuild-Date: Tue Jan 18 00:40:01 CET 2011 on sn-devel-104 commit fb0df534f46ccee8d541d5512abbcc9cd8247e53 Author: Kamen Mazdrashki <kame...@samba.org> Date: Tue Jan 18 00:49:17 2011 +0200 s4-ldb_ldif: Don't check for LDB_FLG_SHOW_BINARY in ldb_should_b64_encode LDB_FLG_SHOW_BINARY is data representation flag and should not modify behavior of data checking functions. This lead to a bug in lib/ldb/ldb_tdb/ldb_index.c as ltdb_index_key() function relies on ldb_should_b64_encode function to determine how to process index keys. Found using following test search: bin/ldbsearch -H st/dc/private/sam.ldb -b "CN=Deleted Objects,DC=samba,DC=example,DC=com" \ "(objectGUID=97b52eac-6d89-434d-b935-1e5f2e086ffc)" replPropertyMetaData --show-deleted --show-binary ----------------------------------------------------------------------- Summary of changes: source4/lib/ldb/common/ldb_ldif.c | 9 ++++----- 1 files changed, 4 insertions(+), 5 deletions(-) Changeset truncated at 500 lines: diff --git a/source4/lib/ldb/common/ldb_ldif.c b/source4/lib/ldb/common/ldb_ldif.c index 2628d4d..f837012 100644 --- a/source4/lib/ldb/common/ldb_ldif.c +++ b/source4/lib/ldb/common/ldb_ldif.c @@ -190,10 +190,6 @@ int ldb_should_b64_encode(struct ldb_context *ldb, const struct ldb_val *val) unsigned int i; uint8_t *p = val->data; - if (ldb->flags & LDB_FLG_SHOW_BINARY) { - return 0; - } - if (val->length == 0) { return 0; } @@ -333,11 +329,14 @@ int ldb_ldif_write(struct ldb_context *ldb, for (j=0;j<msg->elements[i].num_values;j++) { struct ldb_val v; + bool use_b64_encode; ret = a->syntax->ldif_write_fn(ldb, mem_ctx, &msg->elements[i].values[j], &v); if (ret != LDB_SUCCESS) { v = msg->elements[i].values[j]; } - if (ret != LDB_SUCCESS || ldb_should_b64_encode(ldb, &v)) { + use_b64_encode = !(ldb->flags & LDB_FLG_SHOW_BINARY) + && ldb_should_b64_encode(ldb, &v); + if (ret != LDB_SUCCESS || use_b64_encode) { ret = fprintf_fn(private_data, "%s:: ", msg->elements[i].name); CHECK_RET; -- Samba Shared Repository