s3-dbwrap: Rewrite dbwrap_fallback_parse_record based on dbwrap_fetch_locked
authorVolker Lendecke <vl@samba.org>
Thu, 8 Dec 2011 15:37:40 +0000 (16:37 +0100)
committerMichael Adam <obnox@samba.org>
Thu, 15 Dec 2011 15:00:46 +0000 (16:00 +0100)
This is in preparation to remove the db_context->fetch function pointer

Signed-off-by: Michael Adam <obnox@samba.org>
source3/lib/dbwrap/dbwrap.c

index 8ad6c946e93930af7292f4785c454064ded7a7f2..0635d76b2cba189327c1690c305a27b3d0b9b9a4 100644 (file)
@@ -65,14 +65,23 @@ static NTSTATUS dbwrap_fallback_parse_record(struct db_context *db, TDB_DATA key
                                                            void *private_data),
                                             void *private_data)
 {
+       struct db_record *rec;
        TDB_DATA data;
-       NTSTATUS status;
 
-       status = dbwrap_fetch(db, talloc_tos(), key, &data);
-       if (!NT_STATUS_IS_OK(status)) {
-               return status;
+       rec = dbwrap_fetch_locked(db, talloc_tos(), key);
+       if (rec == NULL) {
+               return NT_STATUS_NOT_FOUND;
+       }
+       data = dbwrap_record_get_value(rec);
+
+       data.dptr = talloc_memdup(talloc_tos(), data.dptr, data.dsize);
+       TALLOC_FREE(rec);
+       if (data.dptr == NULL) {
+               return NT_STATUS_NO_MEMORY;
        }
+
        parser(key, data, private_data);
+
        TALLOC_FREE(data.dptr);
        return NT_STATUS_OK;
 }