X-Git-Url: https://git.ozlabs.org/?p=ccan;a=blobdiff_plain;f=ccan%2Ftdb%2Ftdb.c;h=42d2438b08be960838733f24bd422f6fdbcaad19;hp=82ad6058032066b95e91b844431407b4a53de64b;hb=8f4a253ce07435870b61687e487df67a2ee7e19d;hpb=03c1876179e48121ab2bb445053fcb8371f36e5e diff --git a/ccan/tdb/tdb.c b/ccan/tdb/tdb.c index 82ad6058..42d2438b 100644 --- a/ccan/tdb/tdb.c +++ b/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);