From f10db37b82859750ae8fbf7b8ce2f0bab3b13669 Mon Sep 17 00:00:00 2001 From: Rusty Russell Date: Wed, 29 Jul 2009 14:49:57 +0930 Subject: Port from SAMBA tdb: commit a91bcbccf8a2243dac57cacec6fdfc9907580f69 Author: Jim McDonough Date: Thu May 21 16:26:26 2009 -0400 Detect tight loop in tdb_find() (This used to be ctdb commit 5253a0ba3a34fbf5810f363ecc094203d49e835f) --- ctdb/lib/tdb/common/tdb.c | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'ctdb') diff --git a/ctdb/lib/tdb/common/tdb.c b/ctdb/lib/tdb/common/tdb.c index 767452c9b34..b4dc86a82cb 100644 --- a/ctdb/lib/tdb/common/tdb.c +++ b/ctdb/lib/tdb/common/tdb.c @@ -96,6 +96,11 @@ static tdb_off_t tdb_find(struct tdb_context *tdb, TDB_DATA key, uint32_t hash, NULL) == 0) { return rec_ptr; } + /* detect tight infinite loop */ + if (rec_ptr == r->next) { + TDB_LOG((tdb, TDB_DEBUG_FATAL, "tdb_find: loop detected.\n")); + return TDB_ERRCODE(TDB_ERR_CORRUPT, 0); + } rec_ptr = r->next; } return TDB_ERRCODE(TDB_ERR_NOEXIST, 0); -- cgit