From 6a6302600eac964f597a61207d654519b0c46597 Mon Sep 17 00:00:00 2001 From: Adrien CABARBAYE Date: Fri, 28 Mar 2025 15:31:51 +0000 Subject: [PATCH] :bug: `[reflection]` Fix panic in `IsEmpty` when dealing with nil pointer --- .secrets.baseline | 2 +- changes/20250328152658.feature | 1 + utils/reflection/reflection.go | 3 +++ utils/reflection/reflection_test.go | 8 ++++++++ 4 files changed, 13 insertions(+), 1 deletion(-) create mode 100644 changes/20250328152658.feature diff --git a/.secrets.baseline b/.secrets.baseline index e00f11eeb2..3eb1c468bc 100644 --- a/.secrets.baseline +++ b/.secrets.baseline @@ -265,5 +265,5 @@ } ] }, - "generated_at": "2025-03-28T11:37:49Z" + "generated_at": "2025-03-28T15:30:43Z" } diff --git a/changes/20250328152658.feature b/changes/20250328152658.feature new file mode 100644 index 0000000000..a2ab7af353 --- /dev/null +++ b/changes/20250328152658.feature @@ -0,0 +1 @@ +:bug: `[reflection]` Fix panic in `IsEmpty` when dealing with nil pointer diff --git a/utils/reflection/reflection.go b/utils/reflection/reflection.go index f33799fdf5..5d568c37c9 100644 --- a/utils/reflection/reflection.go +++ b/utils/reflection/reflection.go @@ -205,6 +205,9 @@ func IsEmpty(value any) bool { return len(strings.TrimSpace(valueStr)) == 0 } if valueStrPtr, ok := value.(*string); ok { + if valueStrPtr == nil { + return true + } return len(strings.TrimSpace(*valueStrPtr)) == 0 } if valueBool, ok := value.(bool); ok { diff --git a/utils/reflection/reflection_test.go b/utils/reflection/reflection_test.go index 960c031b44..b7101526a2 100644 --- a/utils/reflection/reflection_test.go +++ b/utils/reflection/reflection_test.go @@ -428,6 +428,14 @@ func TestIsEmpty(t *testing.T) { isEmpty: true, differsFromAssertEmpty: true, }, + { + value: (*string)(nil), + isEmpty: true, + }, + { + value: field.ToOptionalString(""), + isEmpty: true, + }, { value: field.ToOptionalString(" "), isEmpty: true,