Print unconvertable ldb element values as base64.
authorAndrew Bartlett <abartlet@samba.org>
Thu, 13 Nov 2008 22:40:02 +0000 (09:40 +1100)
committerAndrew Bartlett <abartlet@samba.org>
Sun, 16 Nov 2008 23:06:58 +0000 (10:06 +1100)
If an LDB element cannot be converted into a printable form, we should
still print it, just with safety applied.

Andrew Bartlett

source4/lib/ldb/common/ldb_ldif.c

index 538ff8feaabb2ecffd46a7579dd85585905788d3..69490e670bf98be466d2061f098e08534c3a6b92 100644 (file)
@@ -328,8 +328,10 @@ int ldb_ldif_write(struct ldb_context *ldb,
                for (j=0;j<msg->elements[i].num_values;j++) {
                        struct ldb_val v;
                        ret = a->syntax->ldif_write_fn(ldb, mem_ctx, &msg->elements[i].values[j], &v);
                for (j=0;j<msg->elements[i].num_values;j++) {
                        struct ldb_val v;
                        ret = a->syntax->ldif_write_fn(ldb, mem_ctx, &msg->elements[i].values[j], &v);
-                       CHECK_RET;
-                       if (ldb_should_b64_encode(&v)) {
+                       if (ret != LDB_SUCCESS) {
+                               v = msg->elements[i].values[j];
+                       }
+                       if (ret != LDB_SUCCESS || ldb_should_b64_encode(&v)) {
                                ret = fprintf_fn(private_data, "%s:: ", 
                                                 msg->elements[i].name);
                                CHECK_RET;
                                ret = fprintf_fn(private_data, "%s:: ", 
                                                 msg->elements[i].name);
                                CHECK_RET;