diff options
author | Garming Sam <garming@catalyst.net.nz> | 2017-01-30 11:08:07 +1300 |
---|---|---|
committer | Garming Sam <garming@samba.org> | 2017-02-22 04:23:05 +0100 |
commit | bed19f3744a4193bed1ea99debfb6263feb78b6c (patch) | |
tree | 23f84a9709f334c8e7bb483da356dc63cdfe4e98 /lib/ldb/tools | |
parent | 16ea6e1308a7d94a501d002ed53529f6d754e940 (diff) | |
download | samba-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.c | 10 |
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)); |