summaryrefslogtreecommitdiff
path: root/source3/registry/reg_backend_db.c
AgeCommit message (Collapse)AuthorFilesLines
2010-02-14s3: convert registry and printing code to TYPESAFE_QSORT()Andrew Tridgell1-3/+3
2010-02-12s3:registry: eliminate race condition in creating/scanning sorted subkeysMichael Adam1-0/+17
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
2009-11-03s3:registry: add an extra check for dsize==0 to regdb_fetch_keys_internal()Michael Adam1-1/+1
Don't only rely on dptr == NULL. I stumbled over this one when rewriting some of the dbwrap_ctdb code. Michael
2009-11-03s3:registry: add safety check for return value of tdb_unpack to ↵Michael Adam1-0/+4
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-09-30s3-registry: use regval_ctr_addvalue_sz().Günther Deschner1-6/+2
Greatly simplifies and cleanes up the code. Guenther
2009-09-30s3-registry: use push_reg_sz().Günther Deschner1-4/+4
Guenther
2009-07-15s3:registry: db backend: add my CMichael Adam1-0/+1
Michael
2009-07-15s3:registry: flush the provided subkey_ctr in regdb_fetch_keys_internal()Michael Adam1-0/+3
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-15s3:registry: turn regdb_fetch_keys_internal() from int to WERROR return typeMichael Adam1-32/+53
This way, more error information is propagated to the callers. Michael
2009-07-15s3:registry: use transaction wrapper in create_sorted_subkeys()Michael Adam1-48/+51
Michael
2009-07-15s3:registry: restructure logic of create_sorted_subkes() slightlyMichael Adam1-14/+19
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-15s3:registry: use transaction wrapper in regdb_delete_subkey().Michael Adam1-37/+49
Michael
2009-07-15s3:registry: add a comment header for the delete_subkey set of commands.Michael Adam1-0/+4
Michael
2009-07-15s3:registry: add a comment header for the create_subkey set of functionsMichael Adam1-0/+4
Michael
2009-07-15s3:registry: use transaction wrapper in regdb_create_subkey()Michael Adam1-31/+42
Michael
2009-07-15s3:registry: use transaction wrapper in regdb_store_keys_internal().Michael Adam1-96/+102
Michael
2009-07-15s3:registry: don't leak to talloc_stack in regdb_store_keys_internal2()Michael Adam1-2/+9
and catch one potential talloc failure. Michael
2009-07-15s3:registry: unify exit logic and remove leaking to talloc_stack in ↵Michael Adam1-10/+13
regdb_store_keys_internal() Michael
2009-07-15s3:registry: change regdb_store_keys_internal2() to return WERRORMichael Adam1-30/+41
instead of bool for better error propagation. Michael
2009-07-15s3:registry: refactor adding of builtin reg values outMichael Adam1-27/+27
into regdb_ctr_add_value(). For readability. Michael
2009-07-15s3:registry: use transaction wrapper in init_registry_data()Michael Adam1-72/+69
Michael
2009-07-15s3:registry: add regdb_store_values_internal() that takes a db_context argumentMichael Adam1-6/+15
Michael
2009-07-15s3:registry: add a regdb_fetch_values_internal() that takes a db_context ↵Michael Adam1-6/+18
argument Michael
2009-07-15s3:registry: use transaction wrapper in init_registry_key().Michael Adam1-23/+19
Michael
2009-07-15s3:registry: add db_context argument to init_registry_key_internal()Michael Adam1-5/+7
Michael
2009-07-15s3:registry: panic upon error at transaction_cancel in create_sorted_subkeysMichael Adam1-2/+2
Michael
2009-07-15s3:registry: fix a comment in create_sorted_subkeys()Michael Adam1-1/+1
Michael
2009-07-15s3:registry: don't loop transaction_commit in create_sorted_subkeys() upon errorMichael Adam1-1/+1
This would try to commit a higher level transaction upon commit-error. Michael
2009-07-15s3:registry: in regdb_delete_subkey(), don't use the transaction wrappers.Michael Adam1-9/+9
This way, the db handle gets used explicitly and the core of the function can be abstracted. Michael
2009-07-15s3:registry: in regdb_delete_subkey(), panic if transaction_cancel failsMichael Adam1-2/+1
Michael
2009-07-15s3:registry: panic upon failed transaction_cancel in regdb_create_subkey()Michael Adam1-2/+1
Michael
2009-07-15s3:registry: don't use exported transaction wrappers in regdb_create_subkey()Michael Adam1-10/+10
So that the regdb handle is again explicit and the core of the function can be abstracted. Michael
2009-07-15s3:registry: create regdb_store_keys_internal() with db_context argumentMichael Adam1-13/+21
and let exported regdb_store_keys() just call regdb_store_keys_internal() with regdb as an argument. Internally, in reg_backend_db.c, always use the _internal version. Michael
2009-07-15s3:registry: rename regdb_store_keys_internal() to regdb_store_keys_internal2()Michael Adam1-9/+9
Michael
2009-07-15s3:registry: create regdb_fetch_keys_internal() with db_context argumentMichael Adam1-27/+35
and let exported regdb_fetch_keys() just call regdb_fetch_keys_internal() with regdb as an argument. Internally, in reg_backend_db.c, always use the _internal version. Michael
2009-07-15s3:registry: add db_context argument to scan_parent_subkeys()Michael Adam1-6/+7
Michael
2009-07-15s3:registry: add db_context argument to regdb_fetch_key_internal()Michael Adam1-5/+6
Michael
2009-07-15s3:registry: add db_context argument to regdb_store_keys_internal()Michael Adam1-8/+10
Michael
2009-07-15s3:registry: add db_context argument to regdb_delete_key_lists()Michael Adam1-6/+6
Michael
2009-07-15s3:registry: add db_context argument to regdb_delete_subkeylist()Michael Adam1-3/+3
Michael
2009-07-15s3:registry: add db_context argument to regdb_delete_secdesc()Michael Adam1-3/+3
Michael
2009-07-15s3:registry: add db_context argument to regdb_delete_values()Michael Adam1-3/+3
Michael
2009-07-15s3:registry: add db_context argument to regdb_delete_key_with_prefix()Michael Adam1-5/+6
Michael
2009-04-27s3:registry: replace typedef REGISTRY_OPS by struct registry_opsMichael Adam1-1/+1
Michael
2009-04-27s3:registry: replace typedef REGISTRY_VALUE by struct regval_blobMichael Adam1-1/+1
Michael
2009-04-27s3:registry: replace typedef REGVAL_CTR by struct regval_ctr.Michael Adam1-8/+8
This paves the way for hiding the typedef and the implementation from the surface. Michael
2009-02-26s3:registry: implement delete_subkey in the db backendMichael Adam1-0/+68
Michael
2009-02-26s3:registry: refactor deletion of various subkey lists out of regdb_store_keys()Michael Adam1-30/+31
Micheal
2009-02-26s3:registry: streamline and cleanup regdb_set_secdesc() somewhat.Michael Adam1-15/+5
Michael
2009-02-26s3:registry: refactor deletion of value/secdesc/subkey list tdb records outMichael Adam1-43/+73
of regdb_store_values(). Michael