s4-ldb_ldif: Take into account LDB_FLG_SHOW_BINARY
authorKamen Mazdrashki <kamenim@samba.org>
Mon, 17 Jan 2011 22:51:30 +0000 (00:51 +0200)
committerKamen Mazdrashki <kamenim@samba.org>
Mon, 17 Jan 2011 23:40:01 +0000 (00:40 +0100)
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 <kamenim@samba.org>
Autobuild-Date: Tue Jan 18 00:40:01 CET 2011 on sn-devel-104

source4/lib/ldb/common/ldb_ldif.c

index 9be49fb73b63f0942de804da7c7540f6e402f083..f837012e69eff74fb4314b3e9f11313bd963c2f3 100644 (file)
@@ -329,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;