From 4e995aacd3b3c2a101155046011677f63d20dd1c Mon Sep 17 00:00:00 2001 From: Stefan Majer Date: Fri, 16 Jan 2026 14:13:29 +0100 Subject: [PATCH] Prevent index out of bounds in GetStringValue --- go/enum/parser.go | 3 +++ go/enum/parser_test.go | 6 ++++++ 2 files changed, 9 insertions(+) diff --git a/go/enum/parser.go b/go/enum/parser.go index 617d22b3..e5dea683 100644 --- a/go/enum/parser.go +++ b/go/enum/parser.go @@ -17,6 +17,9 @@ func GetStringValue[E protoreflect.Enum](e E) (*string, error) { return nil, fmt.Errorf("given enum is a nil pointer") } } + if e.Descriptor().Values().Len() <= int(e.Number()) { + return nil, fmt.Errorf("given enum number:%d is out of range", e.Number()) + } value := e.Descriptor().Values().Get(int(e.Number())) // Retrieve custom options diff --git a/go/enum/parser_test.go b/go/enum/parser_test.go index 4789a9f5..c25ae94e 100644 --- a/go/enum/parser_test.go +++ b/go/enum/parser_test.go @@ -50,4 +50,10 @@ func TestGetStringValue(t *testing.T) { require.NoError(t, err) require.NotNil(t, got) require.Equal(t, "ext3", *got) + + var invalid apiv2.Format = 42 + got, err = GetStringValue(invalid) + require.Error(t, err) + require.EqualError(t, err, "given enum number:42 is out of range") + require.Nil(t, got) }