[BUG] `string.well_known_regex` cannot handle binary HTTP header values
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 4/5
- Tempo stimato
- 3-5 giorni
- Idoneità per principianti
- 35/100
Direzione di ricerca
Inizia individuando l’implementazione della regola string.well_known_regex e le definizioni per la validazione dei bytes. Aggiungi un test di regressione che copra i valori binari degli header HTTP e verifica che la regola possa validare i bytes senza richiedere UTF-8 valido. Il lavoro è completato quando il caso segnalato viene accettato o rifiutato secondo la specifica degli header HTTP e i test esistenti hanno esito positivo.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Description
well_known_regex is on a string type. string must be a valid UTF-8 encoded Unicode code point sequence. But HTTP header values don't have to be. I.e. valid HTTP header values cannot be represented as a proto string. Yet the validation rule is on the string type.
Steps to Reproduce
message HeaderValues {
string val = 1 [(buf.validate.field).string.well_known_regex = KNOWN_REGEX_HTTP_HEADER_VALUE];
}
func TestAbc(t *testing.T) {
val := []byte("\xff")
valid := utf8.Valid(val)
assert.True(t, valid, "Invalid UTF-8")
msg := &HeaderValues{
Val: "\xff",
}
_, err := proto.Marshal(msg)
assert.NoError(t, err, "proto.Marshal() failed")
v, err := protovalidate.New()
require.NoError(t, err)
err = v.Validate(msg)
assert.NoError(t, err)
}
Prints:
=== RUN TestAbc
prototool_test.go:16:
Error Trace: file_test.go:16
Error: Should be true
Test: TestAbc
Messages: Invalid UTF-8
prototool_test.go:27:
Error Trace: file_test.go:27
Error: Received unexpected error:
string field contains invalid UTF-8
Test: TestAbc
Messages: proto.Marshal() failed
--- FAIL: TestAbc (0.02s)
FAIL
Process finished with the exit code 1
Expected Behavior
Validation rule should be on bytes. At least there too, not just on string.
Actual Behavior
Validation rule on string that is problematic.
Possible Solution
Additional Context
HTTP header value spec: https://datatracker.ietf.org/doc/html/rfc9110#name-field-values
- Lingua principale
- Go
- Stelle
- 1.6k
- Fork
- 66
- Merge medio
- 10h 49m
- PR unite (30g)
- 4
Guida per i contributori
Apri la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di bufbuild/protovalidate
-
[BUG] Hostname rule rejects a 253-character name with a trailing dot, which the docs say is valid Aperta
Difficoltà 4/5 3-5 giorni Idoneità per principianti 58/100
bufbuild/protovalidate#512 · 2 commenti ·
-
Feature
Difficoltà 5/5 Più di una settimana Idoneità per principianti 45/100
bufbuild/protovalidate#490 · 1 commento ·
-
Feature
Difficoltà 5/5 Più di una settimana Idoneità per principianti 30/100
bufbuild/protovalidate#486 · 10 commenti ·
-
Feature
Difficoltà 5/5 Più di una settimana Idoneità per principianti 35/100
bufbuild/protovalidate#485 ·
-
Feature
Difficoltà 5/5 Più di una settimana Idoneità per principianti 35/100
bufbuild/protovalidate#483 · 1 reazione ·
Tutte le issue di bufbuild/protovalidate
Issue simili
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
bazel-contrib/rules_go#4726 · 1 commento ·
-
area/auto-scaling area/monitoring area/ops-productivity kind/enhancement
Difficoltà 2/5 1-3 ore Idoneità per principianti 74/100
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
-
Type/Improvement
Difficoltà 1/5 1-3 ore Idoneità per principianti 90/100
OpenNSW/nsw-srilanka#522 ·
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 92/100