1
0
mirror of https://github.com/samba-team/samba.git synced 2025-06-22 07:17:05 +03:00

590 Commits

Author SHA1 Message Date
Andrew Tridgell
d103f2d346 s4-ldb: added support for general ldb hooks in modules
this allows a ldb module to register a hook function called at various
stages of processing. It will be initially used for ldb command line
hooks, but should work generally.

Pair-Programmed-With: Andrew Bartlett <abartlet@samba.org>
2010-11-01 18:55:19 +11:00
Andrew Tridgell
c74601e0b3 s4-ldb: added an override flag to ldb_register_backend()
this will be used to allow a system ldb build with an ldb backend to
have its ldap handler overridden by the s4 one
2010-11-01 18:55:19 +11:00
Andrew Tridgell
05b37385fc s4-ldb: it is not an error for the modules directory to not exist 2010-11-01 18:55:19 +11:00
Andrew Tridgell
6db57658a9 s4-ldb: removed the old ldb module loading style
this gets rid of some particularly obscure cpp macros for module lists
2010-11-01 18:55:19 +11:00
Andrew Tridgell
8b63ff52e2 s4-ldb: support a new type of ldb module loading
this supports module loading in ldb which uses the approach of "load
all modules in a directory". This is much more flexible than the
current module loading, as it will allow us to load modules for
command line parsing and authentication.

Modules are loaded from a colon separated path, in the environment
variable LDB_MODULES_PATH. If unset, it defaults to LDB_MODULESDIR.

Within each directory modules are loaded recursively (traversing down
the directory tree). The device/inode number of each module is
remembered to prevent us loading a module twice.

Each module is checked for a ldb_init_module() function with
dlsym(). If found, it is called with the ldb module version as an
argument.
2010-11-01 18:55:18 +11:00
Matthias Dieter Wallnöfer
f9a6ff482c s4/ldb:introduce the LDB_CONTROL_PROVISION_OID control
This control is exactly thought for the actions which previously were performed
using the RELAX one.

We agreed that the RELAX control will only remain for interactions with OpenLDAP.
2010-10-23 16:37:29 +02:00
Matthias Dieter Wallnöfer
89c42a96fc ldb:rename LDB_CONTROL_BYPASSOPERATIONAL_OID into LDB_CONTROL_BYPASS_OPERATIONAL_OID
It's nicer to have this consistent with "BYPASS_PASSWORD_HASH".
2010-10-23 16:37:29 +02:00
Matthias Dieter Wallnöfer
3c748714bb ldb:ldb_modules.c - "dlclose" could cause inference on "dlerror"
Autobuild-User: Matthias Dieter Wallnöfer <mdw@samba.org>
Autobuild-Date: Thu Oct 21 09:28:19 UTC 2010 on sn-devel-104
2010-10-21 09:28:19 +00:00
Andrew Tridgell
19f8dc9580 s4-ldb: make ldb_options_find() public
we need to make this symbol public to allow for -Wl,-no-undefined, as
otherwise the pyldb module can't find the symbol when it creates the
module
2010-10-21 19:03:27 +11:00
Matthias Dieter Wallnöfer
8044a20d8d ldb:ldb_modules.c - if we don't find the associated dynamic object then please close the handle
Autobuild-User: Matthias Dieter Wallnöfer <mdw@samba.org>
Autobuild-Date: Thu Oct 21 07:52:44 UTC 2010 on sn-devel-104
2010-10-21 07:52:43 +00:00
Matthias Dieter Wallnöfer
d652803c12 ldb:"ldb_schema_attribute_by_name_internal" - support the whole unsigned int range
Commit 8556602b048e825b35df314d6865f997823ec2bb wasn't quite right - it only
restored the functionality on the positive integer range.

This one however should now really support the whole unsigned range.

Autobuild-User: Matthias Dieter Wallnöfer <mdw@samba.org>
Autobuild-Date: Tue Oct 19 10:52:08 UTC 2010 on sn-devel-104
2010-10-19 10:52:08 +00:00
Andrew Tridgell
d16fe72585 s4-ldb: cope with NULL oid in controls
the ldap server will mark a control with a NULL oid in order to remove
it. This prevents a O(n^2) cost in control handling.

Pair-Programmed-With: Andrew Bartlett <abartlet@samba.org>
2010-10-19 11:22:35 +11:00
Andrew Tridgell
ff456cd100 s4-ldb: added ldb_req_mark_untrusted() and ldb_req_is_untrusted()
these will be used to determine if a ldb request comes from an
untrusted source. We want requests over ldap:// to be marked untrusted
so we can reject unregistered controls

Pair-Programmed-With: Andrew Bartlett <abartlet@samba.org>
2010-10-19 11:22:35 +11:00
Matthias Dieter Wallnöfer
8556602b04 ldb:"ldb_schema_attribute_by_name_internal" - switch back to 32bit counters
Use the signed counter for the binary search but use an unsigned one for
accessing the entry.

Autobuild-User: Matthias Dieter Wallnöfer <mdw@samba.org>
Autobuild-Date: Mon Oct 18 19:01:31 UTC 2010 on sn-devel-104
2010-10-18 19:01:31 +00:00
Matthias Dieter Wallnöfer
39d11a977d ldb:"ldb_dn_compare_base" - use "unsigned int" counters
Autobuild-User: Matthias Dieter Wallnöfer <mdw@samba.org>
Autobuild-Date: Sat Oct 16 13:54:13 UTC 2010 on sn-devel-104
2010-10-16 13:54:13 +00:00
Matthias Dieter Wallnöfer
531d7f569e ldb:"ldb_dn_add_child" - use "unsigned int" counters 2010-10-16 15:11:45 +02:00
Matthias Dieter Wallnöfer
1557acb44a ldb:"ldb_dn_remove_base_components" - use an "unsigned int" counter 2010-10-16 15:04:57 +02:00
Matthias Dieter Wallnöfer
19e94349b3 ldb:"ldb_dn_canonical" - use an "unsigned int" counter
Convert it to use an "unsigned int" counter which represents the exact length
of the DN components.
2010-10-16 14:57:52 +02:00
Matthias Dieter Wallnöfer
9bdea1b384 ldb:ldb_match.c - fix a counter type 2010-10-13 13:35:21 +00:00
Andrew Tridgell
180304516d s4-ldb: use operator_fn syntax function in ldb_match code
this also fixes error handling in case of bad syntax, memory error
etc, which was previously conidered as a mismatch, but should return
an error

Pair-Programmed-With: Andrew Bartlett <abartlet@samba.org>
2010-10-13 11:00:04 +00:00
Andrew Bartlett
13ba3464c0 ldb The use of a private event context isn't a hack
This is deliberate behaviour.

Andrew Bartlett

Autobuild-User: Andrew Bartlett <abartlet@samba.org>
Autobuild-Date: Mon Oct 11 13:45:14 UTC 2010 on sn-devel-104
2010-10-11 13:45:13 +00:00
Andrew Bartlett
1555d5acf5 s4-ldb Don't use talloc_autofree_context() in ldb
The private event context only needs to live as long as ldb itself.

Andrew Bartlett
2010-10-11 13:02:16 +00:00
Matthias Dieter Wallnöfer
933aef0bf4 s4:ldb_modules.c - fix a typo 2010-10-05 08:43:19 +00:00
Andrew Tridgell
c83775d524 ldb-dn: don't crash on NULL in ldb_binary_encode_string()
Thanks to Nadya for finding this one!
2010-09-28 19:25:51 -07:00
Nadezhda Ivanova
aeedd29d39 s4-ldb: Added ldb_request_replace_control
It is the same as ldb_request_add_control, except it will replace
an existing control.

Autobuild-User: Andrew Tridgell <tridge@samba.org>
Autobuild-Date: Mon Sep 27 19:00:38 UTC 2010 on sn-devel-104
2010-09-27 19:00:38 +00:00
Andrew Tridgell
f4893e7d33 ldb: added request location tracking
this is used to help debug async ldb requests. The ldb request handle
now contains a location string and the parent request pointer. This
allows us to print a backtrace of ldb requests in the dsdb modules.
2010-09-25 10:38:45 -07:00
Matthias Dieter Wallnöfer
9ca8214978 ldb:ldb_match.c - fix counter variable type
Signed-off-by: Andrew Bartlett <abartlet@samba.org>
2010-09-24 09:25:41 +10:00
Matthias Dieter Wallnöfer
0f163eb611 ldb:ldb_msg_add_linearized_dn - handle NULL DNs
Don't let the routine crash

Signed-off-by: Andrew Bartlett <abartlet@samba.org>
2010-09-24 09:25:41 +10:00
Andrew Tridgell
a662bdc024 s4-ldb: added support for rodc_control in ldb
this allows you to specify the RODC join control in python ldb calls
or on the command line

Pair-Programmed-With: Andrew Bartlett <abartlet@samba.org>
2010-08-20 20:34:11 +10:00
Andrew Tridgell
9e27201b24 s4-ldb: added LDB_FLAG_INTERNAL_MASK
This ensures that internal bits for the element flags in add/modify
requests are not set via the ldb API

Pair-Programmed-With: Andrew Bartlett <abartlet@samba.org>
2010-08-17 21:21:50 +10:00
Kamen Mazdrashki
88f1798100 s4-ldb: use TALLOC_CTX type instead of 'void' 2010-07-29 00:53:49 +03:00
Kamen Mazdrashki
31aeb841c9 s4-dsdb: use ldb_msg_normalize() in ldb_msg_difference()
Signed-off-by: Andrew Bartlett <abartlet@samba.org>
2010-07-19 17:33:35 +10:00
Kamen Mazdrashki
2ad701911e s4-dsdb: use ldb_msg_normalize() in source4/lib/ldb/common/ldb.c
Signed-off-by: Andrew Bartlett <abartlet@samba.org>
2010-07-19 17:33:34 +10:00
Kamen Mazdrashki
e5a9469a88 s4-ldb: Add ldb_msg_normalize() to accept a memory context from client
Previos implementation from ldb_msg_canonicalize()
was moved into this function and now ldb_msg_canonicalize()
is based on ldb_msg_normalize()

Signed-off-by: Andrew Bartlett <abartlet@samba.org>
2010-07-19 17:33:34 +10:00
Kamen Mazdrashki
48574ccc3f s4-ldb: Use _ldb_msg_add_el() in ldb_msg_add()
Previous implementation was 'leaking' attribute name
string, that is allocated by ldb_msg_add_empty()

Signed-off-by: Andrew Bartlett <abartlet@samba.org>
2010-07-19 17:33:34 +10:00
Kamen Mazdrashki
3944c81d08 s4-ldb: Use _ldb_msg_add_el() in ldb_msg_add_empty()
Signed-off-by: Andrew Bartlett <abartlet@samba.org>
2010-07-19 17:33:34 +10:00
Kamen Mazdrashki
8d523d46f5 s4-ldb: Add separate function to add empty element into ldb_msg
It just adds another element, nothing more.
Caller is responsible to fill-in the added element and
determine how to handle data allocation contexts.

Signed-off-by: Andrew Bartlett <abartlet@samba.org>
2010-07-19 17:33:34 +10:00
Kamen Mazdrashki
a95fd4ef64 s4-ldb: Write more explanatory comment for ldb_msg_add()
Signed-off-by: Andrew Bartlett <abartlet@samba.org>
2010-07-19 17:33:34 +10:00
Kamen Mazdrashki
65b967a706 s4-ldb: Implement ldb_msg_difference() function to accept a memory context from client
Old implementation from ldb_msg_diff() was moved into
this this function but with changed interface
so that a memory context may be passed.

ldb_msg_diff() function is now based on ldb_msg_difference(),
which fixes a hidden leak - internal ldb_msg object
(returned from ldb_msg_canonicalize) wasn't freed
and stays attached to ldb_context for the connection lifetime.

Signed-off-by: Andrew Bartlett <abartlet@samba.org>
2010-07-19 17:33:33 +10:00
Matthias Dieter Wallnöfer
514c596561 ldb:common/ldb_dn.c - "ldb_dn_get_parent" - no need to manipulate the real DN
Since the parent DN is a duplication of the passed DN parameter.
2010-07-09 09:02:44 +02:00
Kamen Mazdrashki
6a0d3665e2 s4: fix warning: unused variable ‘i’ 2010-07-09 07:01:26 +03:00
Andrew Tridgell
fc68558ab9 s4-ldb: added ldb_error() and ldb_operr()
These will be used to help avoid the problem we have with hundreds of
places that do "return LDB_ERR_OPERATIONS_ERROR" without an
explanation. It is very difficult to track down ldb errors which don't
have any explanation.

By replacing "return LDB_ERR_OPERATIONS_ERROR;" with "return ldb_operr(ldb);"
we at least get a file:line message in the ldb error string. It isn't
an ideal error message, but it is much better than just "operations
error"

This change also makes ldb_oom() return the error code
(LDB_ERR_OPERATIONS_ERROR) so you can do:

  return ldb_oom(ldb);

instead of:

  ldb_oom(ldb);
  return LDB_ERR_OPERATIONS_ERROR;
2010-07-07 20:14:55 +10:00
Andrew Tridgell
7f9153f7e8 s4-ldb: added ldb_options_find()
ldb_options_find() allows backends to find options in the options[]
array passed to the connect operation.

This will be used by the ldb_ldap bind code
2010-07-07 17:26:03 +10:00
Matthias Dieter Wallnöfer
8e9d7e84f6 ldb:ldb_modules.c - "ldb_dso_load_symbol" - remove unneeded caste before "dlsym" 2010-06-29 22:16:15 +02:00
Matthias Dieter Wallnöfer
657045ca9a s4:ldb - "ldb_dn_update_components" - fix free of invalid DN parts
Use "LDB_FREE" for such free operations and in addition wipe also the casefolded
DN out.
2010-06-29 22:13:05 +02:00
Matthias Dieter Wallnöfer
f1e92c91b2 ldb:ldb_dn.c - "ldb_dn_set_extended_component" - free the linearized string when the components change 2010-06-29 22:07:51 +02:00
Matthias Dieter Wallnöfer
0f0d9aa9b5 s4:ldb_dn.c - make the code parts which free extended components consistent
Cosmetic
2010-06-29 22:07:01 +02:00
Matthias Dieter Wallnöfer
1e04f49ddb ldb:ldb_dn - "ldb_dn_explode" - move the "dn->comp_num" initalisation upwards and use "LDB_FREE" for freeing "dn->components"
Mostly cosmetic - no behaviour change
2010-06-29 21:59:37 +02:00
Matthias Dieter Wallnöfer
ad5e19f29e ldb:controls - add the "TREE_DELETE" control for allowing subtree deletes 2010-06-20 18:52:29 +02:00
Matthieu Patou
3ebe560622 ldb: add a new control bypassioperationnal
Signed-off-by: Jelmer Vernooij <jelmer@samba.org>
2010-06-20 00:43:08 +02:00