From f7decc6b2316e7c24ef39966f2defc441814f11b Mon Sep 17 00:00:00 2001 From: Jeremy Allison Date: Thu, 24 Feb 2005 01:07:09 +0000 Subject: r5532: Patch to detect infinite loops when traversing a tdb from "Shlomi Yaakobovich" Jeremy. (This used to be commit f997c28bb8ca253dca943a578a617b3c20ccfa5e) --- source3/tdb/tdb.c | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'source3') diff --git a/source3/tdb/tdb.c b/source3/tdb/tdb.c index 45895d2ec7..b3d596f442 100644 --- a/source3/tdb/tdb.c +++ b/source3/tdb/tdb.c @@ -1272,6 +1272,13 @@ static int tdb_next_lock(TDB_CONTEXT *tdb, struct tdb_traverse_lock *tlock, goto fail; return tlock->off; } + + /* Detect infinite loops. From "Shlomi Yaakobovich" . */ + if (tlock->off == rec->next) { + TDB_LOG((tdb, 0, "tdb_next_lock: loop detected.\n")); + goto fail; + } + /* Try to clean dead ones from old traverses */ current = tlock->off; tlock->off = rec->next; -- cgit