X-Git-Url: https://git.ozlabs.org/?a=blobdiff_plain;f=ccan%2Ftdb2%2Fcheck.c;h=577086689f373f75c1774d9be2fd1175180af950;hb=ef54ea44cc261a59bf2d4b5f9898c89da409859d;hp=b44ae42a680c8923fe24826da080f374e05bcb45;hpb=f6067e4cbd7b7415571f12438aec00faec5657fb;p=ccan diff --git a/ccan/tdb2/check.c b/ccan/tdb2/check.c index b44ae42a..57708668 100644 --- a/ccan/tdb2/check.c +++ b/ccan/tdb2/check.c @@ -402,22 +402,26 @@ static enum TDB_ERROR check_hash_tree(struct tdb_context *tdb, check: if (check) { TDB_DATA key, data; - key.dsize = rec_key_length(&rec); - data.dsize = rec_data_length(&rec); - key.dptr = (void *)tdb_access_read(tdb, - off + sizeof(rec), - key.dsize + data.dsize, - false); - if (TDB_PTR_IS_ERR(key.dptr)) { - ecode = TDB_PTR_ERR(key.dptr); + const unsigned char *kptr; + + kptr = tdb_access_read(tdb, + off + sizeof(rec), + rec_key_length(&rec) + + rec_data_length(&rec), + false); + if (TDB_PTR_IS_ERR(kptr)) { + ecode = TDB_PTR_ERR(kptr); goto fail; } - data.dptr = key.dptr + key.dsize; + + key = tdb_mkdata(kptr, rec_key_length(&rec)); + data = tdb_mkdata(kptr + key.dsize, + rec_data_length(&rec)); ecode = check(key, data, private_data); + tdb_access_release(tdb, kptr); if (ecode != TDB_SUCCESS) { goto fail; } - tdb_access_release(tdb, key.dptr); } } }