prost_types::Value to wkt::Value conversion panics on NaN or infinity

Aperta Adatta ai principianti
#6,707 0 commenti 0 reazioni 0 assegnatari Vedi su GitHub

I maintainer di solito rispondono entro 1 giorno

Nessuno ha ancora preso questa issue.

Valutazione

Difficoltà
2/5
Tempo stimato
1-3 ore
Idoneità per principianti
74/100
Tipo di issue
Bug
Chiarezza
Abbastanza chiara
Stato di attività
Attiva
Stack tecnologico
rust
Ambito
backend

Direzione di ricerca

Inizia in src/gax-internal/src/prost.rs, nella conversione di Kind::NumberValue intorno alle righe 169–173, e ispeziona i percorsi circostanti di Result e della gestione degli errori. Verifica il comportamento per NaN, +Infinity e -Infinity; il lavoro è completato quando questi input restituiscono un errore invece di causare un panic, con una copertura di regressione per la conversione.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

type: bug

Unconfirmed. This is the result of a search with Claude, may be a false positive.

In src/gax-internal/src/prost.rs, converting prost_types::Value to wkt::Value handles Kind::NumberValue(v):

https://github.com/googleapis/google-cloud-rust/blob/f02b42c2ac5720334cd2b5335824bd4166264527/src/gax-internal/src/prost.rs#L169-L173

Kind::NumberValue(v) => {
    let number =
        serde_json::Number::from_f64(v).expect("JSON numbers cannot be NaN");
    serde_json::Value::Number(number)
}

While JSON does not permit NaN or Infinity, protobuf binary encoding for double fields can carry NaN, +Infinity, and -Infinity.

When a gRPC response containing NaN or Infinity in a google.protobuf.Value field is received, .expect() panics and crashes the client. The function signature already returns Result<wkt::Value>, so an error should be returned instead.

Lingua principale
Rust
Stelle
972
Fork
163
Merge medio
1g 13h
PR unite (30g)
202

Preparare l'ambiente

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di googleapis/google-cloud-rust

Tutte le issue di googleapis/google-cloud-rust

Issue simili

Altre issue su Rust

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.