This is the record of an abcd-managed repository

abcdBetav0.16.2 · 2026-11-06

Development record

internal/core/lint still reads repository content through unbounded os.ReadFile at about fifteen sites (contextcurrency.go, indexdrift.go, persona.go, schema.go's bucket read, speclinks.go, subverbs.go, and lint.go's intent-tree, spec-store, registry and surface reads), where the per-root markdown walk and, since iss-131, receipt_gate read through fsutil.ReadGuarded after containment. A committed symlink to /dev/zero or an oversize file at one of those paths is followed and read unbounded. The sweep is the unhardened-sibling class iss-131 named; it changes symlink handling at each site, so each needs its own containment decision and test.

issueresolvedminoriss-2609252145018018

internal/core/lint still reads repository content through unbounded os.ReadFile at about fifteen sites (contextcurrency.go, indexdrift.go, persona.go, schema.go's bucket read, speclinks.go, subverbs.go, and lint.go's intent-tree, spec-store, registry and surface reads), where the per-root markdown walk and, since iss-131, receipt_gate read through fsutil.ReadGuarded after containment. A committed symlink to /dev/zero or an oversize file at one of those paths is followed and read unbounded. The sweep is the unhardened-sibling class iss-131 named; it changes symlink handling at each site, so each needs its own containment decision and test.

Grounds

  • pursued: no read of repository content in internal/core/lint follows a symlink out of the tree or reads unbounded; a non-test os.ReadFile or os.Open back in internal/core/lint, or TestLintReadsNothingUnguarded going green over one, would show it wrong

Frontmatter

idiss-2609252145018018
typeissue
lifecycleresolved
severityminor

mentions1