cli-plugins/hooks: max-message enforcement is off by one
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 2/5
- Tiempo estimado
- 1-3 horas
- Aptitud para principiantes
- 74/100
Línea de trabajo
Empieza en cli-plugins/hooks/template.go, en las líneas 43 y 46, e inspecciona hooks.ParseTemplate() con la reproducción de 11 líneas del issue. Añade una prueba de regresión que muestre que se rechazan 10 caracteres de salto de línea, mientras que las salidas dentro del límite de 10 mensajes siguen siendo válidas; se considera terminado cuando ninguna línea adicional se fusiona con el mensaje final.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Description
cli-plugins/hooks.ParseTemplate() currently enforces maxMessages = 10 by counting newline characters and rejecting only when strings.Count(out, "\n") > maxMessages, then returning strings.SplitN(out, "\n", maxMessages).
That makes the limit off by one:
- a template that renders to 10 newline characters actually contains 11 messages
- that output is currently accepted instead of rejected
SplitN(..., 10)then merges the extra line into the last returned element, so the final "message" can still contain an embedded newline
This means the "maximum 10 messages" guard can be bypassed by one extra rendered line.
Reproduce
- Use the current
masterbranch. - Call
hooks.ParseTemplate()with output that contains 11 lines, for example:
strings.Repeat("line\n", 10) + "line"
- Observe that no error is returned.
- Observe that the returned slice has length 10, with the last element containing an embedded newline.
The relevant logic is currently in:
cli-plugins/hooks/template.go:43cli-plugins/hooks/template.go:46
Expected behavior
A template that renders to more than 10 messages should be rejected, including the 11-line / 10-newline case.
In other words, the limit should be enforced on the number of returned messages, not just on the number of newline separators.
docker version
N/A for runtime environment. This is a source-level issue in the current master branch checkout.
Observed in local checkout at 9f16882de4.
docker info
N/A for runtime environment. This issue is in template parsing logic and does not depend on daemon configuration.
Additional Info
This looks like it was introduced by b7ab63387a (cli-plugins/hooks: limit maximum number of lines / messages).
I’m happy to send a fix with a regression test if this behavior matches the intended bug report.
- Lenguaje dominante
- Go
- Estrellas
- 6.1k
- Forks
- 2.2k
- Merge medio
- 1 d 15 h
- PR fusionados (30 d)
- 43
Guía de contribución
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 docker/cli
-
kind/bug status/0-triage
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
-
kind/feature status/0-triage
Dificultad 2/5 1-3 horas Aptitud para principiantes 70/100
-
kind/bug status/0-triage
Dificultad 2/5 1-3 horas Aptitud para principiantes 76/100
-
`docker cp -a` docs incorrect Abiertokind/bug status/0-triage
Dificultad 2/5 1-3 horas Aptitud para principiantes 63/100
-
area/ux kind/enhancement
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
Todos los issues de docker/cli
Issues similares
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
-
Dificultad 1/5 Menos de una hora Aptitud para principiantes 84/100
-
enhancement needs triage
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
-
kind/cleanup
Dificultad 2/5 1-3 horas Aptitud para principiantes 88/100
kubernetes-sigs/kueue#15947 ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
sympozium-ai/sympozium#627 ·