Volker Lendecke
a13f065bad
Fix a O(n^2) algorithm in regdb_fetch_keys()
2009-02-19 20:06:29 +01:00
Volker Lendecke
d0ee90ace9
Fix a buffer handling bug when adding lots of registry keys
...
This is *ancient*... From 2002, and nobody noticed until someone added lots of
shares using net conf... :-)
2009-02-19 14:26:50 +01:00
Jelmer Vernooij
ddcab787c4
Rename dos_errstr() to win_errstr() for consistency with Samba 4.
2008-11-01 17:19:26 +01:00
Andrew Tridgell
0f41961e4f
first cut at adding full transactions for ctdb to samba3
...
(This used to be commit f91a3e0f7b
)
2008-08-13 11:54:08 +02:00
Michael Adam
6e16022d62
registry: use _bystring wrappers to dbwrap_trans_(store|delete).
...
Michael
(This used to be commit 103ce6c9e9
)
2008-08-05 23:40:26 +02:00
Michael Adam
a8ae5228f5
registry: bump debug level to 1 in regdb_init() if storing version string fails.
...
Higher level callers should take care of level 0 messages.
Michael
(This used to be commit b5829e04ea
)
2008-07-15 14:25:00 +02:00
Michael Adam
0586d981a7
registry: bump debug level to 1 in regdb_init() if opening the registry fails.
...
Higher level callers take care of level 0 messages or more drastic measures.
Michael
(This used to be commit 111d802b5c
)
2008-07-15 14:22:55 +02:00
Michael Adam
f587e0310c
registry: fix logic in deleting subkeys record in regdb_fetch_keys().
...
Don't cancel on NT_STATUS_NOT_FOUND error from dbwrap_delete_bystring().
So deletion of an "incomlete" registry key, i.e. one with an entry in
the list of subkeys of its parent key but not a subkey list of its own,
works again.
Michael
(This used to be commit 75be2116ac
)
2008-07-09 10:43:25 +02:00
Michael Adam
ad2e1757e7
registry: improve logic for deleting value records in regdb_store_keys().
...
Don't ignore all errors from dbwrap_delete_bystring() but
only NT_STATUS_NOT_FOUND.
Michael
(This used to be commit d7ec9b2d52
)
2008-07-09 10:43:25 +02:00
Michael Adam
70d8e57c17
registry: fetch regdb_fetch_keys() when a key exists but not its subkey-record.
...
According to the new policy a key (that is not a base key) exists,
iff it exists in the subkey list of its parent key.
Usually this subkeylist is present, but in a transaction-less
dbwrap backend (ctdb), a failing write can leave an "incomplete"
key without its own subkeylist-record. (Otherwise such an
incomplete key can be generated with e.g. tdbtool.)
For such a key net registry enumerate (e.g.) would fail.
This commit fixes this behaviour of regdb_fetch_keys().
Michael
(This used to be commit f329aaf045
)
2008-07-08 17:10:01 +02:00
Michael Adam
f7d39653f5
registry: add removal of secdesc of a key to regdb_store_keys().
...
Michael
(This used to be commit a01d8fe5e8
)
2008-05-08 18:29:10 +02:00
Michael Adam
1f279f866f
registry: add comments to removing lists in regdb_store_keys().
...
Michael
(This used to be commit 3e89217e7e
)
2008-05-08 18:29:10 +02:00
Michael Adam
9f7653bfa1
registry: change order of deleting value and subkey lists in store_keys().
...
Next step in the plan to make store_keys safer without transactions.
Michael
(This used to be commit f7c8718dea
)
2008-05-08 18:29:10 +02:00
Michael Adam
453141b395
registry: adapt comment to first step in regdb_store_keys().
...
Michael
(This used to be commit 97592db08a
)
2008-05-08 18:29:10 +02:00
Michael Adam
8c2b976208
registry: adapt comment of last step in regdb_store_keys().
...
adding number (3) ....
Michael
(This used to be commit a03a17365d
)
2008-05-08 18:29:10 +02:00
Michael Adam
315c7b7824
registry: regdb_store_keys: move storing the subkey list down after removing values.
...
Michael
(This used to be commit 986030cdda
)
2008-05-08 18:29:10 +02:00
Michael Adam
01e640f6ea
registry: add comment explaining workflow to make store_keys safe w/o transactions
...
/*
* Make the store operation as safe as possible without transactions:
*
* (1) For each subkey removed from ctr compared with old_subkeys:
*
* (a) First delete the value db entry.
*
* (b) Next delete the secdesc db record.
*
* (c) Then delete the subkey list entry.
*
* (2) Now write the list of subkeys of the parent key,
* deleting removed entries and adding new ones.
*
* (3) Finally create the subkey list entries for the added keys.
*
* This way if we crash half-way in between deleting the subkeys
* and storing the parent's list of subkeys, no old data can pop up
* out of the blue when re-adding keys later on.
*/
The workflow is going to be modified to meet this agendain the next commits.
Michael
(This used to be commit 55dd9bdd14
)
2008-05-08 18:29:10 +02:00
Michael Adam
7fa4cd2421
registry: check for existence of non base key in regdb_store_keys() before proceeding.
...
Michael
(This used to be commit 52413c94fc
)
2008-05-08 18:29:09 +02:00
Michael Adam
8e21d223f7
registry: add a function regdb_key_is_base_key() to check whether is composite.
...
This partly duplicates code from regdb_key_exists(). Maybe refactor later.
Michael
(This used to be commit c27d03bba8
)
2008-05-08 18:29:09 +02:00
Michael Adam
4095b008ee
registry: check for existence of key in regdb_set_secdesc() before proceeding.
...
Michael
(This used to be commit 347bab7f4a
)
2008-05-08 18:29:09 +02:00
Michael Adam
7d35d4e2a4
registry: check for existence of key in regdb_get_secdesc() before proceeding.
...
Michael
(This used to be commit 727e5a87c0
)
2008-05-08 18:29:09 +02:00
Michael Adam
ba94ab2ed8
registry: check for existence of key in regdb_store_values() before proceeding.
...
Michael
(This used to be commit 8a2c9d965d
)
2008-05-08 18:29:09 +02:00
Michael Adam
4394c2dafb
registry: check for existence of key in regdb_fetch_keys() before proceeding.
...
Michael
(This used to be commit cf653e101d
)
2008-05-08 18:29:09 +02:00
Michael Adam
00ce73850d
registry: check for existence of key in regdb_fetch_values() first.
...
This uses the new semantics for existence of a key.
Michael
(This used to be commit 56a58690d3
)
2008-05-08 18:29:09 +02:00
Michael Adam
284bab74a7
registry: free talloc context on error path in regdb_fetch_values().
...
Michael
(This used to be commit 978aef3a86
)
2008-05-08 18:29:09 +02:00
Michael Adam
a26880c372
registry: Implement new semantics for existence of registry key in tdb.
...
Existence of a key is defined as follows:
* If the key is a base key (without separator), the key exists
iff the corresponding entry exist in the registry tdb.
* If the key is not a base key, the key exists, iff it exists
in the list of subkeys of it's parent keyname's tdb entry.
Michael
(This used to be commit 477008367f
)
2008-05-08 18:29:09 +02:00
Michael Adam
120aacfac5
registry: free temporary data in regdb_fetch_key_internal().
...
Michael
(This used to be commit 2b25f480ba
)
2008-05-08 18:29:08 +02:00
Michael Adam
79a009b876
registry: change order of arguments of regdb_fetch_key_internal()
...
list talloc context first.
Michael
(This used to be commit 23d7002b22
)
2008-05-08 18:29:08 +02:00
Michael Adam
f50002b491
registry: skip writes of existing keys in init_registry_data().
...
Michael
(This used to be commit 37dabf9317
)
2008-04-30 12:42:33 +02:00
Michael Adam
9fe870affa
registry: save writes in init_registry_data() if data does already exist.
...
This is done by first checking if all data (keys and values) exists
(using new regdb_key_exists()) and kompletely skipping all writes if it does.
Michael
(This used to be commit 7c5f1583cb
)
2008-04-30 12:42:32 +02:00
Michael Adam
ed6a9edb1e
registry: check for existence of key init_registry_key and possibly save a write.
...
Michael
(This used to be commit 3ab5a2f1b3
)
2008-04-30 12:42:32 +02:00
Michael Adam
6ec4c8631a
registry: add function regdb_key_exists() to check for existence of a key.
...
The existence of the registry key entry (and not the values entry!) is
taken as the criterion for existence.
Michael
(This used to be commit 207a0ece45
)
2008-04-30 12:42:32 +02:00
Michael Adam
167d54cc67
registry: use regdb_fetch_key_internal() in regdb_fetch_values().
...
Michael
(This used to be commit 3316541ac9
)
2008-04-30 12:42:32 +02:00
Michael Adam
6b4ed4b8f3
registry: use regdb_fetch_key_internal() in regdb_fetch_keys().
...
Michael
(This used to be commit 78f924ca05
)
2008-04-30 12:42:32 +02:00
Michael Adam
5379dda0cd
registry: add a function for fetching a tdb record for a given keystring
...
regdb_fetch_key_internal()
Michael
(This used to be commit 97bed9a236
)
2008-04-30 12:42:32 +02:00
Michael Adam
411ae73283
registry: combine talloc_strdup() and normalize_reg_path() in regdb_fetch_keys().
...
the talloc_strdup() call is just and extra allocation here.
Michael
(This used to be commit 217233349b
)
2008-04-30 12:42:32 +02:00
Michael Adam
dba75c0831
registry: use normalize_reg_path() in regdb_fetch_keys()
...
instead of handcrafting normalization.
Michael
(This used to be commit 1e4d2310d0
)
2008-04-30 12:42:31 +02:00
Michael Adam
caba2d3a64
registry: use dbwrap_fetch_bystring() in regdb_fetch_values().
...
Michael
(This used to be commit 569f9844e9
)
2008-04-30 12:42:31 +02:00
Michael Adam
9d933dedf9
registry: use dbwrap_fetch_bystring() in regdb_fetch_keys().
...
instead of using regdb->fetch and constructing tdb data
from the registry key string by hand.
Michael
(This used to be commit 87a58140f0
)
2008-04-30 12:42:31 +02:00
Michael Adam
86d189dad1
registry: honour the WERROR that regsubkey_ctr_addkey gives in regdb_fetch_keys.
...
Michael
(This used to be commit 7dd7471da7
)
2008-04-13 15:41:07 +02:00
Michael Adam
26a5652f6d
registry: change init_registry_key() and init_registry_data() to return WERR
...
Michael
(This used to be commit e0718f04a7
)
2008-04-13 15:33:47 +02:00
Michael Adam
6b85938f27
registry: change regdb_init() to return WERROR instead of bool.
...
Michael
(This used to be commit c312852abc
)
2008-04-13 15:33:47 +02:00
Volker Lendecke
16198dc51e
Convert dbwrap_trans_delete to NTSTATUS
...
Signed-off-by: Stefan Metzmacher <metze@samba.org>
(This used to be commit dead193f46
)
2008-04-01 14:04:22 +02:00
Volker Lendecke
fcdfff1cc8
Convert dbwrap_trans_store to NTSTATUS
...
Signed-off-by: Stefan Metzmacher <metze@samba.org>
(This used to be commit 5f4de856af
)
2008-04-01 14:04:22 +02:00
Stefan Metzmacher
b8dcade819
regdb: let regdb_fetch_keys() handle NULL and failure cases in the same way and return -1
...
metze
(This used to be commit 983fd58805
)
2008-04-01 14:04:20 +02:00
Stefan Metzmacher
b55942a763
regdb: get the seqnum before the record, to not miss something
...
metze
(This used to be commit c214107bd9
)
2008-04-01 14:04:20 +02:00
Stefan Metzmacher
2b21b02c6a
regdb: use dbwrap->fetch() instead of fetch_locked() for readonly access"
...
This is the fixed version of commit 5c28c74aa0
.
metze
(This used to be commit 924acd7f69
)
2008-04-01 14:04:20 +02:00
Michael Adam
ce0bbc82fd
Revert "regdb: use dbwrap->fetch() instead of fetch_locked() for readonly access"
...
This reverts commit 4e2be189e9
.
Metze, this broke the registry (reg_api layer), but I don't yet know
exactly how and why. By the way, the locks there had the purpose of
fetching the seqnum that really matches the data.
This needs some more thought / debugging. But I wanted to have
the tree in a working state again.
Michael
(This used to be commit 5c28c74aa0
)
2008-03-30 03:05:34 +02:00
Michael Adam
f8fdc36fdb
regdb: use == 0 (instead of != -1) as indicator for success of dbwrap_trans_[delete|store]()
...
Michael
(This used to be commit 7dcd0c1e53
)
2008-03-27 18:14:57 +01:00
Michael Adam
c86d10ae83
regdb: use != 0 instead of == -1 check for transaction_[commit|cancel]
...
Michael
(This used to be commit b6ceeaabae
)
2008-03-27 18:14:57 +01:00
Stefan Metzmacher
5439f5f710
regdb: use db_open_trans()
...
metze
Signed-off-by: Stefan Metzmacher <metze@samba.org>
(This used to be commit a77b5b91dd
)
2008-03-27 18:14:56 +01:00
Stefan Metzmacher
618f22409a
regdb: use regdb->transaction_start(regdb) != 0 consistent
...
metze
Signed-off-by: Stefan Metzmacher <metze@samba.org>
(This used to be commit 093c3bced9
)
2008-03-27 18:14:56 +01:00
Stefan Metzmacher
2a95f3f874
regdb: use dbwrap->fetch() instead of fetch_locked() for readonly access
...
metze
Signed-off-by: Stefan Metzmacher <metze@samba.org>
(This used to be commit 4e2be189e9
)
2008-03-27 18:14:56 +01:00
Stefan Metzmacher
d9de61341c
regdb: use dbwrap_trans_store_int32
...
metze
Signed-off-by: Stefan Metzmacher <metze@samba.org>
(This used to be commit 9620696083
)
2008-03-27 18:14:56 +01:00
Michael Adam
060f554adc
registry: use available string constant in debug statement.
...
Michael
(This used to be commit 6bac03a2ec
)
2008-03-20 15:01:52 +01:00
Michael Adam
cef4e1bd9e
registry: in regdb_init, not only complain about INFO/version, store it...
...
Michael
(This used to be commit 27d67365ad
)
2008-03-20 15:01:52 +01:00
Michael Adam
4bac0e505f
registry: reformat regdb_init() slightly, breaking long lines.
...
Michael
(This used to be commit 11da885f1e
)
2008-03-20 15:01:52 +01:00
Michael Adam
13b894b01e
registry: untangle assignment and if-statement in regdb_init().
...
Michael
(This used to be commit 504058df97
)
2008-03-20 15:01:52 +01:00
Michael Adam
2f01e055cf
registry: separate initialization of registry data from regdb_init().
...
Leave this to the users (currently registry_init_smbconf() and
init_registry()) to initialize as much of preliminary registry data
as needed.
Michael
(This used to be commit 59fdd30c78
)
2008-03-20 15:01:52 +01:00
Michael Adam
8880111466
registry: add a transaction wrapper to init_registry_key_internal().
...
Michael
(This used to be commit 8b9cff84d5
)
2008-03-20 15:01:52 +01:00
Michael Adam
1f3139df25
registry: refactor creation of subkeys out of init_registry_data().
...
Michael
(This used to be commit 55233f875e
)
2008-03-20 15:01:51 +01:00
Günther Deschner
e8bd75ec73
Bind Group Policy processing closer to the samba registry.
...
Guenther
(This used to be commit e9c56250eb
)
2008-03-18 21:31:24 +01:00
Michael Adam
6a2a76bc92
registry: untangle assignment and if-clause in init_registry_data().
...
Michael
(This used to be commit 64664d25cf
)
2008-03-17 13:12:47 +01:00
Michael Adam
cc2e3f180b
registry: convert regdb REGISTRY_OPS to named struct initializers.
...
Michael
(This used to be commit 3ea0a0beb4
)
2008-03-17 08:22:33 +01:00
Michael Adam
9741e07140
registry: use talloc instead of malloc and provide common exit point
...
in regdb_get_secdesc().
Michael
(This used to be commit df848d8eee
)
2008-03-17 08:22:33 +01:00
Michael Adam
647432a40c
registry: remove an unused variable from regdb_set_secdesc().
...
Michael
(This used to be commit 76dad05e4c
)
2008-03-17 08:22:33 +01:00
Michael Adam
18a407de8c
registry: untangle assignments and if statements in regdb_set_secdesc().
...
Michael
(This used to be commit d553b5d725
)
2008-03-17 08:22:33 +01:00
Michael Adam
40e6ec16ee
registry: use talloc_stackframe instead of hand crafted temporary context.
...
Michael
(This used to be commit e4f2c856ec
)
2008-03-17 08:22:33 +01:00
Michael Adam
2ce3d4b918
registry: use talloc instead of malloc for tdb data in regdb_store_values().
...
Michael
(This used to be commit 860316cbe7
)
2008-03-17 08:22:33 +01:00
Michael Adam
ae7f7e44ff
registry: don't use talloc_stackframe() instead of talloc_tos() als temp ctx
...
in regdb_store_values(). Also provide common exit path for
freeing memory.
Michael
(This used to be commit 7454e426f2
)
2008-03-17 08:22:33 +01:00
Michael Adam
ecd7479be2
registry: don't leak to talloc stack in regdb_fetch_keys().
...
Michael
(This used to be commit 3a1d79116b
)
2008-03-17 08:22:33 +01:00
Michael Adam
3b250d17d9
registry: explicitly use talloc context instead of talloc_tos()
...
in regdb_fetch_keys().
Michael
(This used to be commit 93ea27a3e2
)
2008-03-17 08:22:33 +01:00
Michael Adam
46ea0d333e
registry: don't leak on success path in regdb_store_keys().
...
Michael
(This used to be commit 331d7fd2ea
)
2008-03-17 08:22:33 +01:00
Michael Adam
a0d4c1e127
registry: allocate tempory data in talloc stack in regdb_store_keys().
...
Michael
(This used to be commit a99b51159a
)
2008-03-17 08:22:33 +01:00
Michael Adam
78adf71669
registry: separate cancel and failur exit paths in regdb_store_keys().
...
Michael
(This used to be commit e1d4a2fa5b
)
2008-03-17 08:22:33 +01:00
Michael Adam
e64825e620
registry: don't leak memory on transaction fail in regdb_store_keys().
...
Michael
(This used to be commit 9315de4048
)
2008-03-17 08:22:33 +01:00
Michael Adam
ba8607acc1
registry: don't leak (to talloc_tos()) in regdb_store_keys().
...
use talloc_stackframe() and free on error path.
Michael
(This used to be commit 95525772f2
)
2008-03-17 08:22:33 +01:00
Michael Adam
a37811727a
registry: reformat regdb_store_keys_internal(), killing long lines.
...
Michael
(This used to be commit 966b2414cb
)
2008-03-17 08:22:32 +01:00
Michael Adam
a446378e7a
registry: don't leak (to talloc_tos()) in regdb_store_keys_internal().
...
Michael
(This used to be commit 76e4cdc25f
)
2008-03-17 08:22:32 +01:00
Michael Adam
8432f7f8cf
registry: reformat init_registry_data() some, killing long lines.
...
Michael
(This used to be commit f357b1ddd3
)
2008-03-17 08:22:32 +01:00
Michael Adam
0a98b3ce1d
registry: explicitly use talloc context instead of talloc_tos()
...
in init_registry_data().
Michael
(This used to be commit 8b0dd1e758
)
2008-03-17 08:22:32 +01:00
Michael Adam
0ca465f054
registry: don't leak (to talloc_tos()) in init_registry_data().
...
Michael
(This used to be commit 7fd0ae3edc
)
2008-03-17 08:22:32 +01:00
Michael Adam
7c6de9b0bd
registry: rename tdb_refcount to regdb_refcount after change to dbwrap.
...
Michael
(This used to be commit d39957e2c9
)
2008-03-17 08:22:32 +01:00
Michael Adam
62556cd6f0
registry: rename tdb_reg to regdb after change to dbwrap.
...
Michael
(This used to be commit 79f37d4765
)
2008-03-17 08:22:32 +01:00
Michael Adam
178f3afe41
registry: migrate tdb registry backend to dbwrap.
...
Michael
(This used to be commit 3c42d8ee16
)
2008-03-17 08:22:32 +01:00
Günther Deschner
87222d3f11
Fix init_registry_data for subkeyless top-level keys.
...
On a fresh install with no existing registry.tdb, make sure we are able to
create our initial top-level entries.
Michael, Volker, please check.
Guenther
(This used to be commit 956bc60206
)
2008-03-01 01:02:15 +01:00
Michael Adam
9e9cd40a7d
Make regdb_init() behave like regdb_open() when registry is already opened.
...
I.e. increment the refcounter.
Michael
(This used to be commit 951d3fae2c
)
2008-02-19 09:09:04 +01:00
Michael Adam
b5666ceefb
Rename reg_db.c to reg_backend_db.c
...
Michael
(This used to be commit c3f695d3b1
)
2008-01-21 08:49:12 +01:00