From c8c0c25c7c34654345458b7ca7fdee46f82d09ca Mon Sep 17 00:00:00 2001 From: Rusty Russell Date: Mon, 18 Oct 2010 13:24:20 +1030 Subject: [PATCH] tdb2: fix infinite loop in tdb_check check_free_list returns a length, not bool. --- ccan/tdb2/check.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/ccan/tdb2/check.c b/ccan/tdb2/check.c index cb864ab7..c2ca95d0 100644 --- a/ccan/tdb2/check.c +++ b/ccan/tdb2/check.c @@ -336,11 +336,11 @@ static tdb_len_t check_free_list(struct tdb_context *tdb, h = bucket_off(zone_off, i); for (off = tdb_read_off(tdb, h); off; off = f.next) { if (off == TDB_OFF_ERR) - return false; + return TDB_OFF_ERR; if (tdb_read_convert(tdb, off, &f, sizeof(f))) - return false; + return TDB_OFF_ERR; if (!check_free(tdb, off, &f, prev, zone_off, i)) - return false; + return TDB_OFF_ERR; /* FIXME: Check hash bits */ p = asearch(&off, free, num_free, off_cmp); @@ -350,7 +350,7 @@ static tdb_len_t check_free_list(struct tdb_context *tdb, "tdb_check: Invalid offset" " %llu in free table\n", (long long)off); - return false; + return TDB_OFF_ERR; } /* Mark it invalid. */ *p ^= 1; -- 2.39.2