Reject unsupported inline pointer schemas safely
This commit is contained in:
@@ -589,7 +589,9 @@ Unexported fields and `yaml:"-"` are ignored. `omitempty` is accepted but does n
|
||||
change binding or projection. An explicit `yaml:",inline"` flattens a struct
|
||||
or pointer-to-struct, or designates at most one string-keyed inline map for otherwise
|
||||
unmatched names. Ambiguous names, named inline fields, multiple inline maps, and
|
||||
unsupported or malformed tag options are schema errors. Embedded fields are ordinary
|
||||
unsupported or malformed tag options are schema errors. Inline pointers must
|
||||
terminate in a struct; pointer-to-map and recursive pointer-only inline declarations
|
||||
are rejected before the defaults factory runs. Embedded fields are ordinary
|
||||
named fields unless explicitly inlined. `configkit:"secret"` is the only current
|
||||
ConfigKit field tag and marks its bound field or container for secret classification
|
||||
and redacted inspection.
|
||||
|
||||
@@ -188,6 +188,12 @@ existing descendants remain explainable after parent replacement.
|
||||
|
||||
## 7. P2 — Reject unsupported inline pointer-to-map schemas safely
|
||||
|
||||
Status: complete. Schema construction rejects inline map pointers, including
|
||||
multiple pointer levels, and detects nonterminating inline pointer chains. Public
|
||||
regressions verify safe errors before defaults run; supported inline coverage stays
|
||||
green. Full tests pass with the issue-8 TMPDIR workaround; vet, build and whitespace
|
||||
checks pass.
|
||||
|
||||
Evidence: [schema.go](../../schema.go), `describeFields`, dereferences inline field
|
||||
types before choosing the map branch, then stores a map descriptor for a field
|
||||
whose actual reflected value is a pointer. [projection.go](../../projection.go)
|
||||
|
||||
Reference in New Issue
Block a user