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

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)
This commit is contained in:
Stefan Metzmacher 2008-04-01 12:38:54 +02:00
parent 41281d3525
commit 2b21b02c6a

View File

@ -705,8 +705,9 @@ int regdb_fetch_keys(const char *key, REGSUBKEY_CTR *ctr)
int i;
fstring subkeyname;
int ret = -1;
int dbret = -1;
TALLOC_CTX *frame = talloc_stackframe();
struct db_record *rec;
TDB_DATA value;
DEBUG(11,("regdb_fetch_keys: Enter key => [%s]\n", key ? key : "NULL"));
@ -722,16 +723,16 @@ int regdb_fetch_keys(const char *key, REGSUBKEY_CTR *ctr)
}
strupper_m(path);
rec = regdb->fetch_locked(regdb, frame, string_term_tdb_data(path));
if (rec == NULL) {
dbret = regdb->fetch(regdb, frame, string_term_tdb_data(path), &value);
if (dbret != 0) {
ret = 0;
goto fail;
}
ctr->seqnum = regdb_get_seqnum();
buf = rec->value.dptr;
buflen = rec->value.dsize;
buf = value.dptr;
buflen = value.dsize;
if ( !buf ) {
DEBUG(5,("regdb_fetch_keys: tdb lookup failed to locate key [%s]\n", key));
@ -841,8 +842,9 @@ int regdb_fetch_values( const char* key, REGVAL_CTR *values )
{
char *keystr = NULL;
TALLOC_CTX *ctx = talloc_stackframe();
struct db_record *rec;
int ret = 0;
int dbret = -1;
TDB_DATA value;
DEBUG(10,("regdb_fetch_values: Looking for value of key [%s] \n", key));
@ -855,19 +857,19 @@ int regdb_fetch_values( const char* key, REGVAL_CTR *values )
goto done;
}
rec = regdb->fetch_locked(regdb, ctx, string_term_tdb_data(keystr));
if (rec == NULL) {
dbret = regdb->fetch(regdb, ctx, string_term_tdb_data(keystr), &value);
if (dbret != 0) {
goto done;
}
values->seqnum = regdb_get_seqnum();
if (!rec->value.dptr) {
if (!value.dptr) {
/* all keys have zero values by default */
goto done;
}
regdb_unpack_values(values, rec->value.dptr, rec->value.dsize);
regdb_unpack_values(values, value.dptr, value.dsize);
ret = regval_ctr_numvals(values);
done: