From 5b7d9d343de641547d81a578353938fcd0534848 Mon Sep 17 00:00:00 2001 From: kv1sidisi Date: Tue, 9 Jun 2026 12:21:31 +0300 Subject: [PATCH] fix: handle nil jsonpointer sources --- jsonpointer/jsonpointer.go | 3 +++ jsonpointer/jsonpointer_test.go | 8 ++++++++ 2 files changed, 11 insertions(+) diff --git a/jsonpointer/jsonpointer.go b/jsonpointer/jsonpointer.go index 042ee0bb..3abb7d02 100644 --- a/jsonpointer/jsonpointer.go +++ b/jsonpointer/jsonpointer.go @@ -127,6 +127,9 @@ func getTarget(source any, currentPart navigationPart, stack []navigationPart, c } sourceType := reflect.TypeOf(source) + if sourceType == nil { + return nil, nil, ErrNotFound.Wrap(fmt.Errorf("source is nil at %s", currentPath)) + } sourceElemType := sourceType if sourceType.Kind() == reflect.Ptr { diff --git a/jsonpointer/jsonpointer_test.go b/jsonpointer/jsonpointer_test.go index e49fd04b..5852e2d2 100644 --- a/jsonpointer/jsonpointer_test.go +++ b/jsonpointer/jsonpointer_test.go @@ -367,6 +367,14 @@ func TestGetTarget_Error(t *testing.T) { }, wantErr: errors.New("not found -- slice is nil at /0"), }, + { + name: "nil source", + args: args{ + source: nil, + pointer: JSONPointer("/key1"), + }, + wantErr: errors.New("not found -- source is nil at /key1"), + }, { name: "nil struct", args: args{