diff options
author | Volker Lendecke <vl@samba.org> | 2012-11-27 15:40:06 +0100 |
---|---|---|
committer | Andreas Schneider <asn@samba.org> | 2012-11-28 18:27:41 +0100 |
commit | 29f90ecf53c8cebe955d5bb6762c6fe6de008ff0 (patch) | |
tree | 20b520b38534b8af73408c8fb9046ba50c1d8ec2 | |
parent | cb0064d35cdc60c7c625ad4561ad77739f8553c5 (diff) | |
download | samba-29f90ecf53c8cebe955d5bb6762c6fe6de008ff0.tar.gz samba-29f90ecf53c8cebe955d5bb6762c6fe6de008ff0.tar.bz2 samba-29f90ecf53c8cebe955d5bb6762c6fe6de008ff0.zip |
s3: Use dbwrap_parse_record in fetch_share_mode_unlocked
Reviewed-by: Andreas Schneider <asn@samba.org>
-rw-r--r-- | source3/locking/share_mode_lock.c | 27 |
1 files changed, 14 insertions, 13 deletions
diff --git a/source3/locking/share_mode_lock.c b/source3/locking/share_mode_lock.c index a82c44e792..4f26099f60 100644 --- a/source3/locking/share_mode_lock.c +++ b/source3/locking/share_mode_lock.c @@ -389,6 +389,15 @@ fail: return NULL; } +static void fetch_share_mode_unlocked_parser( + TDB_DATA key, TDB_DATA data, void *private_data) +{ + struct share_mode_lock *lck = talloc_get_type_abort( + private_data, struct share_mode_lock); + + lck->data = parse_share_modes(lck, data); +} + /******************************************************************* Get a share_mode_lock without locking the database or reference counting. Used by smbstatus to display existing share modes. @@ -400,25 +409,17 @@ struct share_mode_lock *fetch_share_mode_unlocked(TALLOC_CTX *mem_ctx, struct share_mode_lock *lck; struct file_id tmp; TDB_DATA key = locking_key(&id, &tmp); - TDB_DATA data; NTSTATUS status; - status = dbwrap_fetch(lock_db, talloc_tos(), key, &data); - if (!NT_STATUS_IS_OK(status)) { - DEBUG(3, ("Could not fetch share entry\n")); - return NULL; - } - if (data.dptr == NULL) { - return NULL; - } lck = talloc(mem_ctx, struct share_mode_lock); if (lck == NULL) { - TALLOC_FREE(data.dptr); + DEBUG(0, ("talloc failed\n")); return NULL; } - lck->data = parse_share_modes(lck, data); - TALLOC_FREE(data.dptr); - if (lck->data == NULL) { + status = dbwrap_parse_record( + lock_db, key, fetch_share_mode_unlocked_parser, lck); + if (!NT_STATUS_IS_OK(status) || + (lck->data == NULL)) { TALLOC_FREE(lck); return NULL; } |