diff options
author | Jeremy Allison <jra@samba.org> | 2005-02-24 01:07:09 +0000 |
---|---|---|
committer | Jeremy Allison <jra@samba.org> | 2005-02-24 01:07:09 +0000 |
commit | 74dc5006165ed72e9434649b50928132252db680 (patch) | |
tree | 7f428f0eab53604531417802b8b1bf46bb877bbf /source/tdb | |
parent | 9dc1267c4367d5cd12b9ba6128e513aa5ae4037a (diff) | |
download | samba-74dc5006165ed72e9434649b50928132252db680.tar.gz samba-74dc5006165ed72e9434649b50928132252db680.tar.xz samba-74dc5006165ed72e9434649b50928132252db680.zip |
r5532: Patch to detect infinite loops when traversing a tdb from "Shlomi Yaakobovich" <Shlomi@exanet.com>
Jeremy.
Diffstat (limited to 'source/tdb')
-rw-r--r-- | source/tdb/tdb.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/source/tdb/tdb.c b/source/tdb/tdb.c index 45895d2ec71..b3d596f4428 100644 --- a/source/tdb/tdb.c +++ b/source/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" <Shlomi@exanet.com>. */ + 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; |