Value.Patch: "add" with an out-of-range array index appends instead of failing
@SashaMIT đang làm issue này rồi.
Từ ngày 12/10/2026.
Đánh giá
- Độ khó
- 2/5
- Thời gian dự kiến
- 1-3 giờ
- Mức phù hợp với người mới
- 78/100
Hướng nghiên cứu
Bắt đầu trong patch.go bằng cách đọc patchAdd và find, sau đó tái hiện vấn đề bằng ví dụ Go trong báo cáo. Kiểm tra các test hiện có liên quan đến patch nếu có. Hoàn thành khi một thao tác add với index lớn hơn độ dài của array trả về lỗi và giữ nguyên array, trong khi index bằng độ dài và token - vẫn tiếp tục append.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
What happened
An add operation whose array index is greater than the array length succeeds and appends the value.
v, _ := hujson.Parse([]byte(`[1,2]`))
err := v.Patch([]byte(`[{"op":"add","path":"/5","value":3}]`))
fmt.Println(err, string(v.Pack()))
// <nil> [1,2,3]
What you expected
RFC 6902, section 4.1 states that the index of an add on an array must not be greater than the number of elements. The patch should fail with an error and leave the array unchanged. Indexes equal to the length and the - token continue to append.
Cause
patchAdd in patch.go accepts any errNotFound from find as an insertion point. For arrays, find reports the array length as the index for every missing index, so /5 is treated the same as /2 or /-.
- Ngôn ngữ chính
- Go
- Star
- 892
- Fork
- 40
- Chỉ số merge pull request
- Không có pull request nào được merge trong 30 ngày
Chuẩn bị môi trường
Dự án này không cung cấp dev container, Dockerfile hay hướng dẫn đóng góp, nên bạn cần tự thiết lập môi trường: hãy bắt đầu từ README và xem hướng dẫn đóng góp lần đầu của chúng tôi để biết các bước chung.
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Issue khác của tailscale/hujson
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 78/100
-
Standardize modifies its input slice; the doc comment does not say soCó thể đã có người làm @jihtsan đã nhận 29 ngày trước. Đang mở
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 60/100
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 68/100
-
Value.Patch: "test" operation always fails for a null valueCó thể đã có người làm @RaphaelFakhri đã nhận 34 ngày trước. Đang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 85/100
-
Patching with commentsCó thể đã có người làm @Shubham-Padkonde đã nhận 47 ngày trước. Đang mở
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 45/100
Tất cả issue của tailscale/hujson
Issue tương tự
-
area: interop area: sip-core v3
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 62/100
fonoster/routr#705 · 1 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 78/100
deadfin-org/deadfin#35 ·
-
enhancement
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 66/100
-
enhancement priority: low
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 72/100
labmonkeys-space/nl6#1037 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Setup Guide Go tab: say it needs Go 1.26 (the unversioned go get pulls OpenTelemetry Go v1.47.0)Đang mởenhancement follow-up
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 66/100
Maintainer thường phản hồi trong vòng 1 ngày