redox-wayland-compositor/docs
Votre Nom 7e81dec637 🎉 Phase 7.5 — robustesse paquet A validée runtime
Compositor anti-panic face à 4 cas malformés exercés en succession :
brutal exit sans destroy, ack_configure avec mauvais serial,
create_buffer avec dimensions nulles, create_buffer avec stride
incohérent. Aucun crash, aucun blocage, ticks compositor continus
30s+ après la fin du fuzz.

Frontend hardening :
- BufferData.valid: bool, mis à false dans wl_shm_pool.create_buffer
  si dimensions/stride/offset incohérents avec la taille du pool.
  Le wl_buffer est quand même créé (contrat wayland-server) mais
  ignoré au commit.
- ShmPool::read_argb signature passée de Vec<u32> à Option<Vec<u32>>.
  Refuse de lire si w/h/stride invalides ou si l'accès final
  dépasse self.size. Calculs en checked_add/checked_mul pour éviter
  tout overflow sur des params adversariaux. Évite tout accès UB.
- xdg_surface.ack_configure refuse les serials > last_sent (log +
  ignore, pas de post_error pour 7.5 — tolérance volontaire).
- wl_surface.commit court-circuite la lecture pour les buffers
  invalides ou si read_argb retourne None (log warning, surface
  garde son ancien contenu).

Nouveau crate : redox-wl-test-fuzz-protocol (~370 lignes)
- fork() pour chaque cas afin qu'un crash potentiel d'un cas ne
  contamine pas les suivants
- 4 cas : brutal exit, bad ack serial, null dimensions, bad stride
- Le parent attend chaque enfant via waitpid avant le suivant

Validation runtime QEMU :
- [fuzz1..4] tous PASS, [fuzz] PASS final
- [frontend] xdg_surface.ack_configure: serial 99999 > last_sent 2, ignoring
- [frontend] wl_shm_pool.create_buffer rejected: offset=0 width=0 height=0 stride=0
- [frontend] wl_shm_pool.create_buffer rejected: offset=0 width=100 height=10 stride=10
- Compositor continue à ticker 30+ s post-fuzz, curseur actif,
  surfaces des fuzz suivants créées et focusées normalement.

Sub-bug documenté (à corriger 7.6) : la surface du fuzz1 (exit
brutal sans destroy) persiste après la déconnexion du client.
wayland-server détecte le close socket mais ne réveille pas
automatiquement le wl_surface.Destroy handler. À hooker dans
DumbClientData::disconnected pour le cleanup explicite.

Doc complète : docs/phase7-5-robustness.md.

Leyoda 2026 – GPLv3
2026-05-13 11:57:21 +02:00
..
existing-redox-gui.md Initial commit: phases 1-3 du portage Wayland Rust pour Redox OS 2026-05-08 17:41:55 +02:00
phase4-display-backend.md 🎉 Phase 4 vraie validée visuellement : pixels custom plein écran 2026-05-09 10:46:20 +02:00
phase4-victory-1280x800.png 🎉 Phase 4 vraie validée visuellement : pixels custom plein écran 2026-05-09 10:46:20 +02:00
phase5-blue-screen-with-input.png 🎉 Phase 5 — input backend Redox validé runtime 2026-05-09 11:22:54 +02:00
phase5-input-backend.md 🎉 Phase 5 — input backend Redox validé runtime 2026-05-09 11:22:54 +02:00
phase6-3-blue-top.png 🎉 Phase 6.3 — display + input + compositor-core intégrés runtime 2026-05-09 12:20:04 +02:00
phase6-3-default-z.png 🎉 Phase 6.3 — display + input + compositor-core intégrés runtime 2026-05-09 12:20:04 +02:00
phase6-3-green-top.png 🎉 Phase 6.3 — display + input + compositor-core intégrés runtime 2026-05-09 12:20:04 +02:00
phase6-3-red-top.png 🎉 Phase 6.3 — display + input + compositor-core intégrés runtime 2026-05-09 12:20:04 +02:00
phase6-4-wayland-client-surface.png 🎉🎉🎉 Phase 6.4 — Wayland complet : un client externe affiche ses pixels 2026-05-09 13:30:05 +02:00
phase6-4-wayland-frontend.md 🎉🎉🎉 Phase 6.4 — Wayland complet : un client externe affiche ses pixels 2026-05-09 13:30:05 +02:00
phase6-compositor-core.md 🎉 Phase 6.3 — display + input + compositor-core intégrés runtime 2026-05-09 12:20:04 +02:00
phase7-1-xdg-shell.md 🎉 Phase 7.1 — xdg-shell minimal validé runtime 2026-05-09 14:34:45 +02:00
phase7-1-xdg-toplevel.png 🎉 Phase 7.1 — xdg-shell minimal validé runtime 2026-05-09 14:34:45 +02:00
phase7-2-input-routing.png 🎉 Phase 7.2 — wl_seat + wl_keyboard + wl_pointer routing input 2026-05-09 15:05:03 +02:00
phase7-3-cursor-over-window-200x150.png 🎉 Phase 7.3 — curseur software validé runtime 2026-05-13 09:06:56 +02:00
phase7-3-cursor-over-window-250x200.png 🎉 Phase 7.3 — curseur software validé runtime 2026-05-13 09:06:56 +02:00
phase7-3-cursor-pos-50x750.png 🎉 Phase 7.3 — curseur software validé runtime 2026-05-13 09:06:56 +02:00
phase7-3-cursor-pos-900x600.png 🎉 Phase 7.3 — curseur software validé runtime 2026-05-13 09:06:56 +02:00
phase7-3-cursor-pos-center.png 🎉 Phase 7.3 — curseur software validé runtime 2026-05-13 09:06:56 +02:00
phase7-3-cursor.md 🎉 Phase 7.3 — curseur software validé runtime 2026-05-13 09:06:56 +02:00
phase7-4-1-initial-B-top.png 🎉 Phase 7.4 — focus + raise on click validés runtime 2026-05-13 10:21:05 +02:00
phase7-4-2-after-click-A-raised.png 🎉 Phase 7.4 — focus + raise on click validés runtime 2026-05-13 10:21:05 +02:00
phase7-4-3-after-click-B-raised.png 🎉 Phase 7.4 — focus + raise on click validés runtime 2026-05-13 10:21:05 +02:00
phase7-4-focus-raise.md 🎉 Phase 7.4 — focus + raise on click validés runtime 2026-05-13 10:21:05 +02:00
phase7-5-after-fuzz.png 🎉 Phase 7.5 — robustesse paquet A validée runtime 2026-05-13 11:57:21 +02:00
phase7-5-robustness.md 🎉 Phase 7.5 — robustesse paquet A validée runtime 2026-05-13 11:57:21 +02:00
redox-wayland-primitives.md Initial commit: phases 1-3 du portage Wayland Rust pour Redox OS 2026-05-08 17:41:55 +02:00