summaryrefslogtreecommitdiff
path: root/lib/ldb/tools
diff options
context:
space:
mode:
authorGarming Sam <garming@catalyst.net.nz>2017-01-30 11:08:07 +1300
committerGarming Sam <garming@samba.org>2017-02-22 04:23:05 +0100
commitbed19f3744a4193bed1ea99debfb6263feb78b6c (patch)
tree23f84a9709f334c8e7bb483da356dc63cdfe4e98 /lib/ldb/tools
parent16ea6e1308a7d94a501d002ed53529f6d754e940 (diff)
downloadsamba-bed19f3744a4193bed1ea99debfb6263feb78b6c.tar.gz
ldbedit: Prevent the use of the reveal internals control
This is almost certainly not what you want to do. Providing the output of reveal as the input of modify will necessarily revivify all dead linked attributes (regardless of --extended-dn or not). This is extremely unexpected behaviour, so we prevent this from happening. Signed-off-by: Garming Sam <garming@catalyst.net.nz> Reviewed-by: Andrew Bartlett <abartlet@samba.org> BUG: https://bugzilla.samba.org/show_bug.cgi?id=12596 Autobuild-User(master): Garming Sam <garming@samba.org> Autobuild-Date(master): Wed Feb 22 04:23:05 CET 2017 on sn-devel-144
Diffstat (limited to 'lib/ldb/tools')
-rw-r--r--lib/ldb/tools/ldbedit.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/lib/ldb/tools/ldbedit.c b/lib/ldb/tools/ldbedit.c
index cf4ab3f8ec1..5b837834482 100644
--- a/lib/ldb/tools/ldbedit.c
+++ b/lib/ldb/tools/ldbedit.c
@@ -320,6 +320,7 @@ int main(int argc, const char **argv)
const char * const * attrs = NULL;
TALLOC_CTX *mem_ctx = talloc_new(NULL);
struct ldb_control **req_ctrls;
+ unsigned int i;
ldb = ldb_init(mem_ctx, NULL);
if (ldb == NULL) {
@@ -347,6 +348,15 @@ int main(int argc, const char **argv)
}
}
+ for (i = 0; options->controls != NULL && options->controls[i] != NULL; i++) {
+ if (strncmp(options->controls[i], "reveal_internals:", 17) == 0) {
+ printf("Using reveal internals has unintended consequences.\n");
+ printf("If this is your intent, manually perform the search,"
+ " and use ldbmodify directly.\n");
+ return LDB_ERR_OPERATIONS_ERROR;
+ }
+ }
+
req_ctrls = ldb_parse_control_strings(ldb, ldb, (const char **)options->controls);
if (options->controls != NULL && req_ctrls== NULL) {
printf("parsing controls failed: %s\n", ldb_errstring(ldb));