Hacktoberfest 2026: die Issues, die Maintainer für den Oktober markiert haben – offen und einsteigerfreundlich. Hacktoberfest-Issues durchsuchen

cssparser-color: debug assertion in hsl_to_rgb for a hue that overflows f32

Offen Anfängerfreundlich
#460 0 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

@BartWaardenburg arbeitet bereits daran.

Seit 22.10.2026.

  • #461 von @BartWaardenburg — offen

Bewertung

Schwierigkeit
2/5
Geschätzter Aufwand
1-3 Stunden
Anfängerfreundlichkeit
64/100
Issue-Typ
Bug
Klarheit
Größtenteils klar
Aktivitätsstatus
Aktiv
Tech-Stack
rust
Bereich
frontend, web-dev

Rechercherichtung

Beginne in color/lib.rs bei normalize_hue und der Assertion, die in Zeile 307 gemeldet wird, und überprüfe dann die Tests für die hsl-, hwb- und lch-Farbkonvertierung. Reproduziere das Problem mit den aufgeführten überlaufenden Hue-Eingaben in einem Debug-Build und vergleiche die Ausgabe mit dem hier beschriebenen Verhalten gemäß CSS Color 4 und CSS Values 4. Fertig ist die Arbeit, wenn diese Eingaben keinen Panic auslösen und die angegebenen Ergebnisse liefern.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Beschreibung

A hue that overflows f32 makes normalize_hue return NaN. Examples are hwb(1e40 0% 0%) and hsl(1e40 50% 50%). In a debug build, to_css_string() on the parsed color then panics:

panicked at color/lib.rs:307:5:
assertion failed: (0.0..=1.0).contains(&hue)

hwb(1e30 0% 0%) does not panic, because 1e30 still fits in an f32.

normalize_hue computes hue - 360.0 * (hue / 360.0).floor(). For an infinite hue, this is inf - inf, which is NaN. A release build does not panic, but the output is wrong:

Input Release output
hwb(1e40 0% 0%) rgb(0, 0, 0)
hsl(1e40 50% 50%) rgb(64, 64, 64)
lch(50% 30 1e40) lch(50 30 calc(NaN))

The spec gives the expected result. CSS Color 4 says that hsl(calc(infinity) 0 0) and hsl(calc(-infinity) 0 0) normalize the hue to 0 degrees. CSS Values 4 censors NaN to 0. So hwb(1e40 0% 0%) must give rgb(255, 0, 0).

Reproduced on main at 9f3cedd.

Related: #167 is about non-finite numbers from the tokenizer in general.

Found by fuzzing Fallow (https://github.com/fallow-rs/fallow) with OSS-Fuzz.

Vorherrschende Sprache
Rust
Sterne
874
Forks
150
Ø Merge
9 Min.
Gemergte PRs (30 T.)
1

Entwicklungsumgebung

Dieses Projekt bietet weder Dev-Container noch Dockerfile noch Beitragsleitfaden – die Einrichtung liegt bei Ihnen. Beginnen Sie mit der README; die allgemeinen Schritte stehen in unserem Leitfaden für den ersten Beitrag.

Erste Schritte

  1. Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
  3. Forken Sie das Repository und arbeiten Sie in einem Branch.
  4. Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.

Mehr aus servo/rust-cssparser

Alle Issues in servo/rust-cssparser

Ähnliche Issues

Weitere Issues zu Rust

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.