From 24ab8ecfee2a11dff94c155d9b102388b40963c6 Mon Sep 17 00:00:00 2001 From: Andriy Massimilla Date: Mon, 9 Dec 2024 15:04:20 -0500 Subject: [PATCH] Return an error when getting header attributes for invalid header version --- internal/distributions/distribution.go | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/internal/distributions/distribution.go b/internal/distributions/distribution.go index 1cb73e0..a7ac7c1 100644 --- a/internal/distributions/distribution.go +++ b/internal/distributions/distribution.go @@ -177,12 +177,13 @@ type BaseDistribution struct { Dynamic []string `json:"dynamic"` } -func (bd *BaseDistribution) GetHeaderAttrs() []HeaderAttr { +func (bd *BaseDistribution) GetHeaderAttrs() ([]HeaderAttr, error) { ha, exists := HeaderAttrs[bd.MetadataVersion] - if exists { - return ha + if !exists { + return []HeaderAttr{}, fmt.Errorf("header attributes for metadata version %s not found", bd.MetadataVersion) } - return []HeaderAttr{} + + return ha, nil } func (bd *BaseDistribution) Parse(data []byte) error { @@ -200,7 +201,12 @@ func (bd *BaseDistribution) Parse(data []byte) error { bd.MetadataVersion = headerValue } - for _, headerAttr := range bd.GetHeaderAttrs() { + headerAttrs, err := bd.GetHeaderAttrs() + if err != nil { + return err + } + + for _, headerAttr := range headerAttrs { if headerAttr.AttrName == "metadata_version" { continue }