Browse Source

Import from SAMBA's tdb:
commit a91bcbccf8a2243dac57cacec6fdfc9907580f69
Author: Jim McDonough <jmcd@samba.org>
Date: Thu May 21 16:26:26 2009 -0400

Detect tight loop in tdb_find()

Rusty Russell 16 years ago
parent
commit
8f4a253ce0
1 changed files with 5 additions and 0 deletions
  1. 5 0
      ccan/tdb/tdb.c

+ 5 - 0
ccan/tdb/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);