1
0
mirror of https://github.com/samba-team/samba.git synced 2024-12-25 23:21:54 +03:00
Commit Graph

287 Commits

Author SHA1 Message Date
Michael Adam
861f04bec0 s3:registry: implement regdb_store_values() with regdb_trans_do()
This adds the runtime check for changed regdb format version to store_values
2011-09-01 23:18:18 +02:00
Michael Adam
6832ae4c6d s3:registry: change regdb_store_values_internal() from bool to NTSTATUS return code 2011-09-01 23:18:18 +02:00
Michael Adam
e1d7cfb41b s3:registry: use the regdb_trans_do wrapper instead of using dbwrap_trans_do directly in the registry db code.
This verifies the regdb format version number before the corresponding write operations.
2011-09-01 23:18:18 +02:00
Michael Adam
9352a95bfd s3:registry: add regdb_trans_do(): a transaction wrapper that will check the regdb version
If the version has changed since initialization, the write will
fail with ACCESS_DENIED.
2011-09-01 23:18:18 +02:00
Michael Adam
5ef11737bc s3:registry: drop log level of unknown regdb version message in regdb_init() to 0 2011-09-01 23:18:17 +02:00
Michael Adam
1e09f12d1f s3:registry: fix the v2_to_v3 upgrade code so that it does not create value list security records for the INFO/version key ... 2011-08-25 23:55:06 +02:00
Michael Adam
9b46798b11 s3:registry: fix the v1_to_v2 upgrade code so that it does not normalize the INFO/version key ... 2011-08-25 23:55:06 +02:00
Michael Adam
b4cb969e40 s3:registry: define a constant REGDB_VERSION_KEYNAME for the key INFO/version (and use it) 2011-08-25 23:55:06 +02:00
Michael Adam
b1a94b66cc s3:registry: hand db context in to v2_to_v3 upgrade code via private_data
This also fixes the earlier faulty handing in of a useless stackframe
memory context via private_data.
2011-08-25 23:55:06 +02:00
Michael Adam
48f08011e5 s3:registry: fix broken use of dbwrap store record in v1_to_v2 upgrade code
This also fixes broken private_data parameter for the traverse function
(making use of it): Originally a memory context was handed in but was not used.
2011-08-25 23:55:06 +02:00
Michael Adam
32b7411104 s3:registry: fix regdb_key_exists: the record has to contain at least the 4-byte subkey counter
More precisley, we return false if the record does not match the required
structure of a leading 4-byte subkey counter followed by the corresponding
number zero-terminated strings.
2011-08-15 17:15:14 +02:00
Gregor Beck
356ed8644c s3:registry avoid updating keys which are going to be deleted in
reg_deletekey_recursive

this changes the complexity from O(n^2) to O(n) and reduces the time of
a 'net conf drop' with 10000 shares from 6min to 1.5s

Signed-off-by: Michael Adam <obnox@samba.org>
2011-08-08 15:27:07 +02:00
Michael Adam
0b5c4a601a s3:dbwrap: move all .c and .h files of dbwrap to lib/dbwrap/
Autobuild-User: Michael Adam <obnox@samba.org>
Autobuild-Date: Fri Jul 29 13:34:22 CEST 2011 on sn-devel-104
2011-07-29 13:34:22 +02:00
Michael Adam
1abdd9b2bb s3:dbwrap: move db_open() to a file dbwrap_open.c of its own.
Also start new folder lib/dbwrap/ where dbwrap_open.c is stored and
make the fallbacke implementation functoins non-static and create a
dbwrap_private.h header file that contains their prototypes.
2011-07-29 12:23:13 +02:00
Gregor Beck
5049e3e142 s3:registry avoid pruning the sequencenumber while flushing the regsubkey_ctr
Signed-off-by: Stefan Metzmacher <metze@samba.org>

Autobuild-User: Stefan Metzmacher <metze@samba.org>
Autobuild-Date: Fri Jul 15 08:34:47 CEST 2011 on sn-devel-104
2011-07-15 08:34:47 +02:00
Michael Adam
4af8615da8 s3:registry: update copyright for the registry db implementation 2011-07-06 12:55:25 +02:00
Michael Adam
399c0dba01 s3:registry: remove unused function regdb_key_is_base_key()
Autobuild-User: Michael Adam <obnox@samba.org>
Autobuild-Date: Mon Jul  4 21:11:32 CEST 2011 on sn-devel-104
2011-07-04 21:11:32 +02:00
Michael Adam
86f8eb98fe s3:registry: replace use of deprecated talloc_destroy by talloc_free. 2011-07-04 20:02:10 +02:00
Michael Adam
17b091b7c7 s3:registry: remove superfluous check for success of talloc_stackframe() 2011-07-04 20:02:10 +02:00
Michael Adam
cc384c1596 s3:registry: add debug-level-10 verbosity to regdb_upgrade_v2_v3_fn() 2011-07-04 20:02:10 +02:00
Michael Adam
340be35b9b s3:registry: adapt a debug message to be more systematic 2011-07-04 20:02:10 +02:00
Michael Adam
c8c5d8c89e s3:registry: set registry version to 3 and add upgrade code
Pair-Programmed-With: Gregor Beck <gbeck@sernet.de>
2011-07-04 20:02:09 +02:00
Michael Adam
f36ee63df2 s3:registry: add db_context argument to regdb_upgrade_v1_to_v2() 2011-07-04 20:02:09 +02:00
Michael Adam
1621aab139 s3:registry: wrap the whole db upgrade in one transaction
The purpose of this is to prepare for multiple upgrade steps
to be performed in a single transaction, so that no change
at all is made to that database if one step fails.

Pair-Programmed-With: Gregor Beck <gbeck@sernet.de>
2011-07-04 20:02:09 +02:00
Michael Adam
caf9c99969 s3:registry: change regdb_store_regdb_version() to take db_context argument. 2011-07-04 20:02:09 +02:00
Michael Adam
2273650ca8 s3:registry: fix a comment typo 2011-07-04 20:02:09 +02:00
Michael Adam
a8360712e1 s3:registry: remove unused regdb_delete_sorted_subkeys()
Pair-Programmed-With: Gregor Beck <gbeck@sernet.de>
2011-07-04 20:02:09 +02:00
Michael Adam
a0f83ecbb9 s3:registry: don't delete the unused subkeys cache record any more
Pair-Programmed-With: Gregor Beck <gbeck@sernet.de>
2011-07-04 20:02:09 +02:00
Michael Adam
50add4091a s3:registry: remove the code to create and search the sorted subkeys cache records
This is not needed any more.

Pair-Programmed-With: Gregor Beck <gbeck@sernet.de>
2011-07-04 20:02:09 +02:00
Michael Adam
18973fa109 s3:registry: adapt the comment explaining the definition of the existence of a key.
Pair-Programmed-With: Gregor Beck <gbeck@sernet.de>
2011-07-04 20:02:09 +02:00
Michael Adam
a255630358 s3:registry: regdb_key_exists now checks only for the list-of-subkeys-record
Pair-Programmed-With: Gregor Beck <gbeck@sernet.de>
2011-07-04 20:02:08 +02:00
Michael Adam
9e2b2c1fcc s3:registry: rewrite init_registry_key_internal
This rewrites init_registry_key_internal() to correctly also create
base keys. It makes use of the existing create functions instead of
duplicating the code.

Pair-Programmed-With: Gregor Beck <gbeck@sernet.de>
2011-07-04 20:02:08 +02:00
Michael Adam
747c67cf30 s3:registry: add regdb_create_basekey()
Function to create a base key in the registry db, i.e. one that
has no parent key.

Pair-Programmed-With: Gregor Beck <gbeck@sernet.de>
2011-07-04 20:02:08 +02:00
Michael Adam
144c8d77d8 s3:registry: add regdb_create_subkey_internal() taking additional db context argument
Pair-Programmed-With: Gregor Beck <gbeck@sernet.de>
2011-07-04 20:02:08 +02:00
Michael Adam
15a50ef8f8 s3:registry: add new mode to regdb_store_subkey_list() for handing in NULL parent key
Standard behaviour is to concatenate parent and key path (parent\key).
This new mode allows for storing subkey lists for base keys using a NULL
parent argument.

Pair-Programmed-With: Gregor Beck <gbeck@sernet.de>
2011-07-04 20:02:08 +02:00
Michael Adam
fc4d79d41a s3:registry: create the empty list of subkeys of the new key in regdb_create_subkey
Pair-Programmed-With: Gregor Beck <gbeck@sernet.de>
2011-07-04 20:02:08 +02:00
Michael Adam
322eaf1e9e s3:registry: refactor creation of subkey list out into regdb_store_subkey_list()
Pair-Programmed-With: Gregor Beck <gbeck@sernet.de>
2011-07-04 20:02:08 +02:00
Michael Adam
394ca1446e s3:registry: remove redundant write of zero-lentgh subkey list record
In this case, the zero-lenght list has already been written in step #2.

Pair-Programmed-With: Gregor Beck <gbeck@sernet.de>
2011-07-04 20:02:08 +02:00
Michael Adam
eb797bd206 s3:registry: don't update the sorted subkeys cache any more in regdb_store_keys_internal2()
Pair-Programmed-With: Gregor Beck <gbeck@sernet.de>
2011-07-04 20:02:08 +02:00
Michael Adam
5b01a34ad7 s3:registry: don't skip base key in existence check in regdb_store_keys_internal()
Pair-Programmed-With: Gregor Beck <gbeck@sernet.de>
2011-07-04 20:02:08 +02:00
Michael Adam
da2e64b63f s3:registry: don't skip base keys from existence check in regdb_create_subkey()
Pair-Programmed-With: Gregor Beck <gbeck@sernet.de>
2011-07-04 20:02:07 +02:00
Michael Adam
6b99aa496f s3:registry: don't skip base keys from existence check in regdb_delete_subkey()
Pair-Programmed-With: Gregor Beck <gbeck@sernet.de>
2011-07-04 20:02:07 +02:00
Michael Adam
1f72088633 s3:registry: when deleting the records for a key, also delete the sorted subkeys cache
This prevents orphaned empty sorted subkeys cache records from filling the database.

Pair-Programmed-With: Gregor Beck <gbeck@sernet.de>

Signed-off-by: Michael Adam <obnox@samba.org>
2011-06-30 15:41:23 +02:00
Michael Adam
2b162db6e9 s3:registry: add helper function regdb_delete_sorted_subkeys()
Pair-Programmed-With: Gregor Beck <gbeck@sernet.de>

Signed-off-by: Michael Adam <obnox@samba.org>
2011-06-30 15:41:22 +02:00
Rusty Russell
5a7874e119 tdb_traverse/tdb_traverse_read: check returns for negative, not -1.
TDB2 returns a negative error number on failure.  This is compatible
if we always check for < 0 instead of == -1.

Also, there's no tdb_traverse_read in TDB2: we don't try to make
traverse reliable any more, so there are no write locks anyway.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2011-06-20 11:18:35 +02:00
Andrew Bartlett
3d15137653 s3-talloc Change TALLOC_ARRAY() to talloc_array()
Using the standard macro makes it easier to move code into common, as
TALLOC_ARRAY isn't standard talloc.
2011-06-09 12:40:08 +02:00
Andrew Bartlett
381423b1bd libcli/security: move secdesc.c to the top level libcli/security
This code does not rely on lp_ or other source3 only functions, so can
be part of the common library.

Andrew Bartlett
2011-05-31 00:32:07 +02:00
Andrew Bartlett
c615ebed6e s3-lib Replace StrCaseCmp() with strcasecmp_m()
strcasecmp_m() never needs to call to talloc, and via next_codepoint()
still has an ASCII fast-path bypassing iconv() calls.

Andrew Bartlett
2011-05-18 16:12:08 +02:00
Michael Adam
26b6831164 s3:registry: add a warning debug message when the sorted subkeys is created from key_exists() 2011-05-12 11:48:30 +02:00
Michael Adam
daf5f29d49 s3:registry: recreate the sorted subkeys cache when storing keys
This is to avoid turning the next read operation into a write op.
2011-05-12 11:48:30 +02:00
Michael Adam
1a6ac6a944 s3:registry: add create_sorted_subkeys() to delete and recreate the sorted subkeys key
This is to be used from other places than the key_exists() code path.
2011-05-12 11:48:30 +02:00
Michael Adam
b1eac2daf3 s3:registry: turn create_sorted_subkeys_internal to NTSTATUS return type
(from bool)
2011-05-12 11:48:30 +02:00
Michael Adam
f5f9355ebe s3:registry: rename create_sorted_subkeys() to create_sorted_subkeys_internal() 2011-05-12 11:48:29 +02:00
Michael Adam
04f0a1cb7b s3:registry: fix a typo in a debug message 2011-05-12 11:48:29 +02:00
Günther Deschner
d8cfca3a9b s3: only include tdb headers where needed.
Guenther
2011-05-06 10:48:10 +02:00
Volker Lendecke
b48e22347d s3: Fix Coverity ID 2047, UNUSED_VALUE
Autobuild-User: Volker Lendecke <vlendec@samba.org>
Autobuild-Date: Fri Apr 22 10:53:24 CEST 2011 on sn-devel-104
2011-04-22 10:53:24 +02:00
Günther Deschner
0e771263ee s3-includes: only include system/filesys.h when needed.
Guenther
2011-03-30 01:13:07 +02:00
Michael Adam
14502c5458 s3:registry: fix comments in regdb_store_regdb_version() 2011-01-27 21:43:48 +01:00
Michael Adam
d91189727a s3:registry: improve debug messages about regdb refcount changes
Autobuild-User: Michael Adam <obnox@samba.org>
Autobuild-Date: Tue Dec  7 15:18:03 CET 2010 on sn-devel-104
2010-12-07 15:18:03 +01:00
Volker Lendecke
4b2e2f94bb s3: Streamline regdb_normalize_keynames_fn a bit
Autobuild-User: Volker Lendecke <vlendec@samba.org>
Autobuild-Date: Thu Oct 28 14:32:11 UTC 2010 on sn-devel-104
2010-10-28 14:32:11 +00:00
Volker Lendecke
8b87603de4 s3: Fix the registry upgrade code
The strings have the 0-terminator as part of the keys. The rest of the registry
code would not cope well without.
2010-10-28 15:50:14 +02:00
Michael Adam
cda2db5edf s3:registry: fix some trailing spaces in reg_backend_db
Autobuild-User: Michael Adam <obnox@samba.org>
Autobuild-Date: Tue Oct 12 14:15:42 UTC 2010 on sn-devel-104
2010-10-12 14:15:42 +00:00
Günther Deschner
7a05ca2c9c s3-build: use dbwrap.h only where needed.
Guenther
2010-08-26 00:25:55 +02:00
Günther Deschner
813fbbd68c s3-build: avoid to globally include printing and spoolss headers.
This shrinks precompiled headers by 3MB and will slightly speed up any build.

Guenther
2010-07-31 00:50:31 +02:00
Andreas Schneider
96c25cdad5 s3-spoolss: Create winprint print processor key.
Signed-off-by: Jim McDonough <jmcd@samba.org>
2010-07-27 10:27:14 -04:00
Andreas Schneider
65eb38bc00 s3-registry: Init all needed registry keys for printing.
Signed-off-by: Jim McDonough <jmcd@samba.org>
2010-07-27 10:27:06 -04:00
Günther Deschner
ddb8fae401 s3-registry: allow to read NULL entries (that we allow to store) back from the tdb.
Guenther
2010-07-02 10:50:21 +02:00
Michael Adam
6d973607c3 s3:registry: use regdb_store_regdb_version() in regdb_init(). 2010-06-25 18:13:06 +02:00
Michael Adam
2f44dcc96b s3:registry: use regdb_store_regdb_version() in regdb_upgrade_v1_to_v2() 2010-06-25 18:12:28 +02:00
Michael Adam
5641ee02fd s3:registry: add a function regdb_store_regdb_version() 2010-06-25 18:11:35 +02:00
Michael Adam
a9bec6b779 s3:registry: rename regdb_upgrade_to_version_2() -> regdb_upgrade_v1_to_v2() 2010-06-25 18:04:52 +02:00
Michael Adam
8e4f812823 s3:registry: improve logic of upgrade code in regdb_init()
Don't overwrite unknown versions (0 or > 2) of the registry.
2010-06-25 17:35:42 +02:00
Michael Adam
3703b79b11 s3:registry: fix some debug messages in regdb_ini() 2010-06-25 17:35:42 +02:00
Andreas Schneider
15bacaf3c5 s3-registry: Convert registry key delimiter from slash to backslash.
This is needed to support keynames containing a '/' like TCP/IP. Which
is used in serveral standard paths.

Signed-off-by: Michael Adam <obnox@samba.org>
2010-06-25 17:35:41 +02:00
Andreas Schneider
f540833632 s3-registry: Added a db upgrade function to normalize the key delimiter.
This converts the key delimiter from a slash to a blackslash. We need to
support keynames with a backslash.

Signed-off-by: Michael Adam <obnox@samba.org>
2010-06-25 17:35:41 +02:00
Michael Adam
5cac4e648c s3:registry: use normalize_reg_path() in regdb_set_secdesc()
instead of normalize_dbkey
2010-06-24 15:36:20 +02:00
Michael Adam
4c948251d9 s3:registry: use normalize_reg_path() in regdb_get_secdesc()
instead of normalize_dbkey.
2010-06-24 15:36:20 +02:00
Michael Adam
0fe1ff99a1 s3:registry: move reg_objects.h to registry/ and use it only where needed
Every place outside of registry/ where this is used, should probably
be changed to use pure reg_api.c code.
2010-05-25 10:35:31 +02:00
Michael Adam
a71dac4882 s3:registry: user regval_ctr/blob accessor functions in reg_backend_db.c 2010-05-25 10:35:28 +02:00
Michael Adam
773255ba50 s3:registry: rename reg_util.{c,h} to reg_util_internal.{c,h} 2010-05-25 10:35:27 +02:00
Michael Adam
d335f292ce s3:registry: extract the reg_backend_db prototypes into their own header.
And use them only where needed.
2010-05-25 10:35:25 +02:00
Michael Adam
9ccf66379a s3:registry: adapt callers of regval_ctr_addvalue to uint8 * instead of char * 2010-05-25 10:35:25 +02:00
Michael Adam
4ae77b2ef9 s3:registry: extract the reg_util prototypes into their own header.
And use them only where needed.
2010-05-25 10:35:25 +02:00
Gregor Beck
0a173444ac s3: registry: fix query empty valuenames
Remove a check introduced with commit 80c2446321
wich causes queries for values with empty name to fail. Empty valuenames are
used for the so called default value of a key.

Signed-off-by: Michael Adam <obnox@samba.org>
2010-05-21 00:22:45 +02:00
Günther Deschner
fe31b67d5e s3-registry: only include registry headers when really needed.
Guenther
2010-05-18 01:15:38 +02:00
Günther Deschner
3d5972c43f s3-libgpo: move group policy protos to where they belong.
Guenther
2010-05-17 21:07:17 +02:00
Andrew Tridgell
7cff685c7e s3: convert registry and printing code to TYPESAFE_QSORT() 2010-02-14 18:44:21 +11:00
Michael Adam
a752bbd10d s3:registry: eliminate race condition in creating/scanning sorted subkeys
Called, from key_exists, scan_sorted_subkeys re-creates the sorted
subkeys record of the given key and then searches through it.
The race is that between creation and parsing of the sorted subkey
record, another process that stores some other subkey of the same
parent key will delete the sorted subkey record, resulting in an
WERR_BADFILE of an operation that should actually succeed.

This patch fixes the issue by wrapping the creation and parsing
into a transaction.

Michael
2010-02-12 23:12:12 +01:00
Michael Adam
cc5b22a016 s3:registry: add an extra check for dsize==0 to regdb_fetch_keys_internal()
Don't only rely on dptr == NULL.
I stumbled over this one when rewriting some of the dbwrap_ctdb code.

Michael
2009-11-03 01:02:39 +01:00
Michael Adam
f6f2151a39 s3:registry: add safety check for return value of tdb_unpack to regdb_fetch_keys_internal()
Prevents segfaults in some situations.

(For a non existent or empty record, we sometimes rely on the fetch operation
 to return dsize==0 and sometimes we rely on dptr==NULL.)

Michael
2009-11-03 01:02:38 +01:00
Günther Deschner
1b0f3b7e3a s3-registry: use regval_ctr_addvalue_sz().
Greatly simplifies and cleanes up the code.

Guenther
2009-09-30 00:30:12 +02:00
Günther Deschner
2c11b73391 s3-registry: use push_reg_sz().
Guenther
2009-09-30 00:29:49 +02:00
Michael Adam
5a525f7f28 s3:registry: db backend: add my C
Michael
2009-07-15 14:01:58 +02:00
Michael Adam
78576117eb s3:registry: flush the provided subkey_ctr in regdb_fetch_keys_internal()
This way, we always return what has really been read from the db,
and not more. The callers assume exactly this, but one could hand
in an already pre-filled subkey container...

Michael
2009-07-15 14:01:58 +02:00
Michael Adam
dc0bcfa188 s3:registry: turn regdb_fetch_keys_internal() from int to WERROR return type
This way, more error information is propagated to the callers.

Michael
2009-07-15 14:01:57 +02:00
Michael Adam
c52dd1d5b8 s3:registry: use transaction wrapper in create_sorted_subkeys()
Michael
2009-07-15 14:01:56 +02:00
Michael Adam
109ea29b2c s3:registry: restructure logic of create_sorted_subkes() slightly
This makes it clearer to me, and it also makes it easier to
use the transaction retry wrapper in the next step.

Michael
2009-07-15 14:01:56 +02:00
Michael Adam
2d6dbcd0b1 s3:registry: use transaction wrapper in regdb_delete_subkey().
Michael
2009-07-15 14:01:55 +02:00
Michael Adam
a48d8353c7 s3:registry: add a comment header for the delete_subkey set of commands.
Michael
2009-07-15 14:01:55 +02:00
Michael Adam
5640598cbb s3:registry: add a comment header for the create_subkey set of functions
Michael
2009-07-15 14:01:54 +02:00