TDB_DATA data;
NTSTATUS status;
bool ret;
+ TDB_DATA key;
+ TDB_DATA value;
- if (rec->key.dsize < USERPREFIX_LEN) {
+ key = dbwrap_record_get_key(rec);
+
+ if (key.dsize < USERPREFIX_LEN) {
return 0;
}
- if (strncmp((char *)rec->key.dptr, USERPREFIX, USERPREFIX_LEN) != 0) {
+ if (strncmp((char *)key.dptr, USERPREFIX, USERPREFIX_LEN) != 0) {
return 0;
}
}
DEBUG(10,("tdbsam_convert: Try unpacking a record with (key:%s) "
- "(version:%d)\n", rec->key.dptr, state->from));
+ "(version:%d)\n", (char *)key.dptr, state->from));
+
+ value = dbwrap_record_get_value(rec);
switch (state->from) {
case 0:
ret = init_samu_from_buffer(user, SAMU_BUFFER_V0,
- (uint8 *)rec->value.dptr,
- rec->value.dsize);
+ (uint8 *)value.dptr,
+ value.dsize);
break;
case 1:
ret = init_samu_from_buffer(user, SAMU_BUFFER_V1,
- (uint8 *)rec->value.dptr,
- rec->value.dsize);
+ (uint8 *)value.dptr,
+ value.dsize);
break;
case 2:
ret = init_samu_from_buffer(user, SAMU_BUFFER_V2,
- (uint8 *)rec->value.dptr,
- rec->value.dsize);
+ (uint8 *)value.dptr,
+ value.dsize);
break;
case 3:
ret = init_samu_from_buffer(user, SAMU_BUFFER_V3,
- (uint8 *)rec->value.dptr,
- rec->value.dsize);
+ (uint8 *)value.dptr,
+ value.dsize);
break;
case 4:
ret = init_samu_from_buffer(user, SAMU_BUFFER_V4,
- (uint8 *)rec->value.dptr,
- rec->value.dsize);
+ (uint8 *)value.dptr,
+ value.dsize);
break;
default:
/* unknown tdbsam version */
}
if (!ret) {
DEBUG(0,("tdbsam_convert: Bad struct samu entry returned "
- "from TDB (key:%s) (version:%d)\n", rec->key.dptr,
+ "from TDB (key:%s) (version:%d)\n", (char *)key.dptr,
state->from));
TALLOC_FREE(user);
state->success = false;
return -1;
}
- status = rec->store(rec, data, TDB_MODIFY);
+ status = dbwrap_record_store(rec, data, TDB_MODIFY);
if (!NT_STATUS_IS_OK(status)) {
DEBUG(0, ("Could not store the new record: %s\n",
nt_errstr(status)));
struct tdbsam_backup_state *bs = (struct tdbsam_backup_state *)state;
struct db_record *new_rec;
NTSTATUS status;
+ TDB_DATA key;
+ TDB_DATA value;
- new_rec = bs->new_db->fetch_locked(bs->new_db, talloc_tos(), orig_rec->key);
+ key = dbwrap_record_get_key(orig_rec);
+
+ new_rec = dbwrap_fetch_locked(bs->new_db, talloc_tos(), key);
if (new_rec == NULL) {
bs->success = false;
return 1;
}
- status = new_rec->store(new_rec, orig_rec->value, TDB_INSERT);
+ value = dbwrap_record_get_value(orig_rec);
+
+ status = dbwrap_record_store(new_rec, value, TDB_INSERT);
TALLOC_FREE(new_rec);
struct db_context *tmp_db = NULL;
struct db_context *orig_db = *pp_db;
struct tdbsam_backup_state bs;
- int ret;
+ NTSTATUS status;
tmp_fname = talloc_asprintf(frame, "%s.tmp", dbname);
if (!tmp_fname) {
return false;
}
- if (orig_db->transaction_start(orig_db) != 0) {
+ if (dbwrap_transaction_start(orig_db) != 0) {
DEBUG(0, ("tdbsam_convert_backup: Could not start transaction (1)\n"));
unlink(tmp_fname);
TALLOC_FREE(tmp_db);
TALLOC_FREE(frame);
return false;
}
- if (tmp_db->transaction_start(tmp_db) != 0) {
+ if (dbwrap_transaction_start(tmp_db) != 0) {
DEBUG(0, ("tdbsam_convert_backup: Could not start transaction (2)\n"));
- orig_db->transaction_cancel(orig_db);
+ dbwrap_transaction_cancel(orig_db);
unlink(tmp_fname);
TALLOC_FREE(tmp_db);
TALLOC_FREE(frame);
bs.new_db = tmp_db;
bs.success = true;
- ret = orig_db->traverse(orig_db, backup_copy_fn, (void *)&bs);
- if (ret < 0) {
+ status = dbwrap_traverse(orig_db, backup_copy_fn, (void *)&bs, NULL);
+ if (!NT_STATUS_IS_OK(status)) {
DEBUG(0, ("tdbsam_convert_backup: traverse failed\n"));
goto cancel;
}
goto cancel;
}
- if (orig_db->transaction_commit(orig_db) != 0) {
+ if (dbwrap_transaction_commit(orig_db) != 0) {
smb_panic("tdbsam_convert_backup: orig commit failed\n");
}
- if (tmp_db->transaction_commit(tmp_db) != 0) {
+ if (dbwrap_transaction_commit(tmp_db) != 0) {
smb_panic("tdbsam_convert_backup: orig commit failed\n");
}
cancel:
- if (orig_db->transaction_cancel(orig_db) != 0) {
+ if (dbwrap_transaction_cancel(orig_db) != 0) {
smb_panic("tdbsam_convert: transaction_cancel failed");
}
- if (tmp_db->transaction_cancel(tmp_db) != 0) {
+ if (dbwrap_transaction_cancel(tmp_db) != 0) {
smb_panic("tdbsam_convert: transaction_cancel failed");
}
{
struct tdbsam_convert_state state;
struct db_context *db = NULL;
- int ret;
+ NTSTATUS status;
/* We only need the update backup for local db's. */
if (db_is_local(name) && !tdbsam_convert_backup(name, pp_db)) {
state.from = from;
state.success = true;
- if (db->transaction_start(db) != 0) {
+ if (dbwrap_transaction_start(db) != 0) {
DEBUG(0, ("tdbsam_convert: Could not start transaction\n"));
return false;
}
goto cancel;
}
- ret = db->traverse(db, tdbsam_convert_one, &state);
- if (ret < 0) {
+ status = dbwrap_traverse(db, tdbsam_convert_one, &state, NULL);
+ if (!NT_STATUS_IS_OK(status)) {
DEBUG(0, ("tdbsam_convert: traverse failed\n"));
goto cancel;
}
goto cancel;
}
- if (db->transaction_commit(db) != 0) {
+ if (dbwrap_transaction_commit(db) != 0) {
DEBUG(0, ("tdbsam_convert: Could not commit transaction\n"));
return false;
}
return true;
cancel:
- if (db->transaction_cancel(db) != 0) {
+ if (dbwrap_transaction_cancel(db) != 0) {
smb_panic("tdbsam_convert: transaction_cancel failed");
}
/* it's outaa here! 8^) */
- if (db_sam->transaction_start(db_sam) != 0) {
+ if (dbwrap_transaction_start(db_sam) != 0) {
DEBUG(0, ("Could not start transaction\n"));
return NT_STATUS_UNSUCCESSFUL;
}
goto cancel;
}
- if (db_sam->transaction_commit(db_sam) != 0) {
+ if (dbwrap_transaction_commit(db_sam) != 0) {
DEBUG(0, ("Could not commit transaction\n"));
return NT_STATUS_INTERNAL_DB_CORRUPTION;
}
return NT_STATUS_OK;
cancel:
- if (db_sam->transaction_cancel(db_sam) != 0) {
+ if (dbwrap_transaction_cancel(db_sam) != 0) {
smb_panic("transaction_cancel failed");
}
return False;
}
- if (db_sam->transaction_start(db_sam) != 0) {
+ if (dbwrap_transaction_start(db_sam) != 0) {
DEBUG(0, ("Could not start transaction\n"));
return false;
}
}
}
- if (db_sam->transaction_commit(db_sam) != 0) {
+ if (dbwrap_transaction_commit(db_sam) != 0) {
DEBUG(0, ("Could not commit transaction\n"));
return false;
}
return true;
cancel:
- if (db_sam->transaction_cancel(db_sam) != 0) {
+ if (dbwrap_transaction_cancel(db_sam) != 0) {
smb_panic("transaction_cancel failed");
}
return false;
return NT_STATUS_ACCESS_DENIED;
}
- if (db_sam->transaction_start(db_sam) != 0) {
+ if (dbwrap_transaction_start(db_sam) != 0) {
DEBUG(0, ("Could not start transaction\n"));
TALLOC_FREE(new_acct);
return NT_STATUS_ACCESS_DENIED;
tdb_delete_samacct_only( old_acct );
- if (db_sam->transaction_commit(db_sam) != 0) {
+ if (dbwrap_transaction_commit(db_sam) != 0) {
/*
* Ok, we're screwed. We've changed the posix account, but
* could not adapt passdb.tdb. Shall we change the posix
return NT_STATUS_OK;
cancel:
- if (db_sam->transaction_cancel(db_sam) != 0) {
+ if (dbwrap_transaction_cancel(db_sam) != 0) {
smb_panic("transaction_cancel failed");
}
private_data, struct tdbsam_search_state);
size_t prefixlen = strlen(RIDPREFIX);
uint32 rid;
+ TDB_DATA key;
+
+ key = dbwrap_record_get_key(rec);
- if ((rec->key.dsize < prefixlen)
- || (strncmp((char *)rec->key.dptr, RIDPREFIX, prefixlen))) {
+ if ((key.dsize < prefixlen)
+ || (strncmp((char *)key.dptr, RIDPREFIX, prefixlen))) {
return 0;
}
- rid = strtoul((char *)rec->key.dptr+prefixlen, NULL, 16);
+ rid = strtoul((char *)key.dptr+prefixlen, NULL, 16);
ADD_TO_LARGE_ARRAY(state, uint32, rid, &state->rids, &state->num_rids,
&state->array_size);
state->acct_flags = acct_flags;
state->methods = methods;
- db_sam->traverse_read(db_sam, tdbsam_collect_rids, state);
+ dbwrap_traverse_read(db_sam, tdbsam_collect_rids, state, NULL);
search->private_data = state;
search->next_entry = tdbsam_search_next_entry;