diff options
| author | 2026-06-07 11:53:54 +0000 | |
|---|---|---|
| committer | 2026-06-07 11:53:54 +0000 | |
| commit | 73ce5600f1954c751fc9e59ca5666d996b7b9420 (patch) | |
| tree | b1b8f44ac65c1f1a5e07d9e6a9463ee632fa9e4a /object | |
| parent | object/tag: Fix my silly self-referential append test, that belongs to roundtrip (diff) | |
| signature | No signature | |
object/tree: Reject duplicates
Diffstat (limited to 'object')
| -rw-r--r-- | object/tree/parse.go | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/object/tree/parse.go b/object/tree/parse.go index b1069918..90519705 100644 --- a/object/tree/parse.go +++ b/object/tree/parse.go @@ -17,6 +17,7 @@ import ( func Parse(body []byte, objectFormat id.ObjectFormat) (*Tree, error) { tree := new(Tree) idSize := objectFormat.Size() + seen := make(map[string]struct{}) i := 0 for i < len(body) { @@ -65,6 +66,12 @@ func Parse(body []byte, objectFormat id.ObjectFormat) (*Tree, error) { } } + if _, dup := seen[entry.Name]; dup { + return nil, fmt.Errorf("%w: duplicate entry name %q", ErrInvalidTree, entry.Name) + } + + seen[entry.Name] = struct{}{} + tree.entries = append(tree.entries, entry) } |
