< tdb->map_size) {
tdb->log(tdb, TDB_DEBUG_ERROR, tdb->log_priv,
"check: %llu zones size %llu don't cover %llu\n",
- (long long)(1ULL << tdb->header.v.zone_bits),
(long long)tdb->header.v.num_zones,
+ (long long)(1ULL << tdb->header.v.zone_bits),
(long long)tdb->map_size);
return false;
}
if (tdb->methods->oob(tdb, off + len, false))
goto fail;
+ if (len < sizeof(p->f)) {
+ tdb->log(tdb, TDB_DEBUG_ERROR, tdb->log_priv,
+ "tdb_check: too short record %llu at"
+ " %llu\n",
+ (long long)len, (long long)off);
+ goto fail;
+ }
+
if (off + sizeof(p->u) == tdb->header.v.hash_off) {
hash_found = true;
} else if (off + sizeof(p->u)