From 68de4156452a1a2431659ab930e9cb4f418d37cd Mon Sep 17 00:00:00 2001 From: Aykhan Shahsuvarov Date: Wed, 30 Sep 2026 00:14:51 +0400 Subject: [PATCH] fix(config): reject unknown fields in a YAML config file --- internal/config/file.go | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/internal/config/file.go b/internal/config/file.go index ed91b28..3199cf8 100644 --- a/internal/config/file.go +++ b/internal/config/file.go @@ -1,6 +1,7 @@ package config import ( + "bytes" "context" "fmt" "io" @@ -235,8 +236,10 @@ func (parser ConfigFileParser) ParseYAML(data []byte) (*Config, error) { parsedData = &configYAML{} ) - err := yaml.Unmarshal(data, &parsedData) - if err != nil { + decoder := yaml.NewDecoder(bytes.NewReader(data)) + decoder.KnownFields(true) + // The decoder returns a bare io.EOF for an empty file, errors.Is would also match a wrapped one. + if err := decoder.Decode(parsedData); err != nil && err != io.EOF { //nolint:errorlint return nil, types.NewUnmarshalError(err) }