Value.Patch: "add" with an out-of-range array index appends instead of failing
@SashaMIT ya está trabajando en esto.
Desde el 12/10/2026.
Evaluación
- Dificultad
- 2/5
- Tiempo estimado
- 1-3 horas
- Aptitud para principiantes
- 78/100
Línea de trabajo
Empieza en patch.go leyendo patchAdd y find, y luego reproduce el problema con el ejemplo de Go del informe. Comprueba las pruebas existentes relacionadas con patch, si están disponibles. La tarea está terminada cuando una operación add con un índice mayor que la longitud del array devuelve un error y deja el array sin cambios, mientras que un índice igual a la longitud y el token - siguen añadiendo.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
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 /-.
- Lenguaje dominante
- Go
- Estrellas
- 892
- Forks
- 40
- Métricas de merge de PR
- Sin PR fusionados en 30 d
Preparar el entorno
Este proyecto no incluye contenedor de desarrollo, Dockerfile ni guía de contribución, así que la configuración corre por tu cuenta: empieza por su README y consulta nuestra guía para la primera contribución para los pasos generales.
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de tailscale/hujson
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
-
Standardize modifies its input slice; the doc comment does not say soPosiblemente ocupada @jihtsan la tomó hace 29 días. Abierto
Dificultad 1/5 Menos de una hora Aptitud para principiantes 60/100
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
-
Value.Patch: "test" operation always fails for a null valuePosiblemente ocupada @RaphaelFakhri la tomó hace 34 días. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 85/100
-
Patching with commentsPosiblemente ocupada @Shubham-Padkonde la tomó hace 47 días. Abierto
Dificultad 4/5 3-5 días Aptitud para principiantes 45/100
Todos los issues de tailscale/hujson
Issues similares
-
area: interop area: sip-core v3
Dificultad 2/5 1-3 horas Aptitud para principiantes 62/100
fonoster/routr#705 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
deadfin-org/deadfin#35 ·
-
enhancement
Dificultad 2/5 1-3 horas Aptitud para principiantes 66/100
-
enhancement priority: low
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
labmonkeys-space/nl6#1037 ·
Los mantenedores suelen responder en 1 día
-
Setup Guide Go tab: say it needs Go 1.26 (the unversioned go get pulls OpenTelemetry Go v1.47.0)Abiertoenhancement follow-up
Dificultad 2/5 1-3 horas Aptitud para principiantes 66/100
Los mantenedores suelen responder en 1 día