-/*
+/*
ldb database library
Copyright (C) Andrew Tridgell 2004
** NOTE! The following LGPL license applies to the ldb
** library. This does NOT imply that all of Samba is released
** under the LGPL
-
+
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
#include "system/locale.h"
/*
-
+
*/
static int ldb_read_data_file(TALLOC_CTX *mem_ctx, struct ldb_val *value)
{
encode as base64 to a file
*/
static int base64_encode_f(struct ldb_context *ldb,
- int (*fprintf_fn)(void *, const char *, ...),
+ int (*fprintf_fn)(void *, const char *, ...),
void *private_data,
const char *buf, int len, int start_pos)
{
write to ldif, using a caller supplied write method, and only printing secrets if we are not in a trace
*/
static int ldb_ldif_write_trace(struct ldb_context *ldb,
- int (*fprintf_fn)(void *, const char *, ...),
+ int (*fprintf_fn)(void *, const char *, ...),
void *private_data,
- const struct ldb_ldif *ldif,
+ const struct ldb_ldif *ldif,
bool in_trace)
{
TALLOC_CTX *mem_ctx;
if (ldif->changetype == LDB_CHANGETYPE_MODIFY) {
switch (msg->elements[i].flags & LDB_FLAG_MOD_MASK) {
case LDB_FLAG_MOD_ADD:
- fprintf_fn(private_data, "add: %s\n",
+ fprintf_fn(private_data, "add: %s\n",
msg->elements[i].name);
break;
case LDB_FLAG_MOD_DELETE:
- fprintf_fn(private_data, "delete: %s\n",
+ fprintf_fn(private_data, "delete: %s\n",
msg->elements[i].name);
break;
case LDB_FLAG_MOD_REPLACE:
- fprintf_fn(private_data, "replace: %s\n",
+ fprintf_fn(private_data, "replace: %s\n",
msg->elements[i].name);
break;
}
}
-
+
if (in_trace && secret_attributes && ldb_attr_in_list(secret_attributes, msg->elements[i].name)) {
/* Deliberatly skip printing this password */
ret = fprintf_fn(private_data, "# %s::: REDACTED SECRET ATTRIBUTE\n",
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:: ",
+ ret = fprintf_fn(private_data, "%s:: ",
msg->elements[i].name);
CHECK_RET;
- ret = base64_encode_f(ldb, fprintf_fn, private_data,
+ ret = base64_encode_f(ldb, fprintf_fn, private_data,
(char *)v.data, v.length,
strlen(msg->elements[i].name)+3);
CHECK_RET;
ret = fprintf_fn(private_data, "%s: ", msg->elements[i].name);
CHECK_RET;
if (ldb->flags & LDB_FLG_SHOW_BINARY) {
- ret = fprintf_fn(private_data, "%*.*s",
+ ret = fprintf_fn(private_data, "%*.*s",
v.length, v.length, (char *)v.data);
} else {
ret = fold_string(fprintf_fn, private_data,
write to ldif, using a caller supplied write method
*/
int ldb_ldif_write(struct ldb_context *ldb,
- int (*fprintf_fn)(void *, const char *, ...),
+ int (*fprintf_fn)(void *, const char *, ...),
void *private_data,
const struct ldb_ldif *ldif)
{
caller frees
*/
-static char *next_chunk(struct ldb_context *ldb,
+static char *next_chunk(struct ldb_context *ldb,
int (*fgetc_fn)(void *), void *private_data)
{
size_t alloc_size=0, chunk_size = 0;
if (c == '\n') {
in_comment = 0;
}
- continue;
+ continue;
}
-
+
/* handle continuation lines - see RFC2849 */
if (c == ' ' && chunk_size > 1 && chunk[chunk_size-1] == '\n') {
chunk_size--;
continue;
}
-
+
/* chunks are terminated by a double line-feed */
if (c == '\n' && chunk_size > 0 && chunk[chunk_size-1] == '\n') {
chunk[chunk_size-1] = 0;
if (next_attr(ldif, &s, &attr, &value) != 0) {
goto failed;
}
-
+
/* first line must be a dn */
if (ldb_attr_cmp(attr, "dn") != 0) {
ldb_debug(ldb, LDB_DEBUG_ERROR, "Error: First line of ldif must be a dn not '%s'",
}
continue;
}
-
+
el = &msg->elements[msg->num_elements-1];
a = ldb_schema_attribute_by_name(ldb, attr);
if (msg->num_elements > 0 && ldb_attr_cmp(attr, el->name) == 0 &&
flags == el->flags) {
/* its a continuation */
- el->values =
- talloc_realloc(msg->elements, el->values,
+ el->values =
+ talloc_realloc(msg->elements, el->values,
struct ldb_val, el->num_values+1);
if (!el->values) {
goto failed;
el->num_values++;
} else {
/* its a new attribute */
- msg->elements = talloc_realloc(msg, msg->elements,
- struct ldb_message_element,
+ msg->elements = talloc_realloc(msg, msg->elements,
+ struct ldb_message_element,
msg->num_elements+1);
if (!msg->elements) {
goto failed;
return c;
}
-struct ldb_ldif *ldb_ldif_read_file_state(struct ldb_context *ldb,
+struct ldb_ldif *ldb_ldif_read_file_state(struct ldb_context *ldb,
struct ldif_read_file_state *state)
{
return ldb_ldif_read(ldb, fgetc_file, state);
va_list ap;
size_t oldlen = talloc_get_size(state->string);
va_start(ap, fmt);
-
+
state->string = talloc_vasprintf_append(state->string, fmt, ap);
va_end(ap);
if (!state->string) {
return talloc_get_size(state->string) - oldlen;
}
-char *ldb_ldif_write_redacted_trace_string(struct ldb_context *ldb, TALLOC_CTX *mem_ctx,
+char *ldb_ldif_write_redacted_trace_string(struct ldb_context *ldb, TALLOC_CTX *mem_ctx,
const struct ldb_ldif *ldif)
{
struct ldif_write_string_state state;
return state.string;
}
-char *ldb_ldif_write_string(struct ldb_context *ldb, TALLOC_CTX *mem_ctx,
+char *ldb_ldif_write_string(struct ldb_context *ldb, TALLOC_CTX *mem_ctx,
const struct ldb_ldif *ldif)
{
struct ldif_write_string_state state;
convenient function to turn a ldb_message into a string. Useful for
debugging
*/
-char *ldb_ldif_message_string(struct ldb_context *ldb, TALLOC_CTX *mem_ctx,
+char *ldb_ldif_message_string(struct ldb_context *ldb, TALLOC_CTX *mem_ctx,
enum ldb_changetype changetype,
const struct ldb_message *msg)
{