MEM-022: KEEPGetPacked resolves delta offsets without re-bounding (keeper/KEEP.c)

KEEPGetPacked chases the pack delta chain re-deriving cur each iteration but never re-checks cur < packlen at the loop top (the entry bound runs once), and the OFS_DELTA arm does cur = cur - obj.ofs_delta with no ofs_delta <= cur guard, so a corrupt index/pack underflows cur to a wild base pointer (UB; sane() is compiled out in Release). Separately the cross-file REF_DELTA arm recurses via KEEPGetKEEPGetPacked with only a per-call local depth, so a deep cross-file chain stacks N frames → stack-overflow DoS. UNPK ingest guards block the remote underflow/cycle cases, leaving these as latent fragility plus a real deep-chain DoS. The goal is to bound and re-validate the resolver.

Issues

Under-validated offset arithmetic plus uncapped cross-file recursion.

Blockers

None.

Planned

Re-validate per iteration; cap recursion.