[P1][osd] Remplacer le parsing stdin par un framing JSONL borné et résynchronisable #29

Open
opened 2026-07-31 21:05:14 +00:00 by mathieu · 2 comments
Owner

Constat

Le helper lit 16 Kio puis termine immédiatement sur HUP, même si davantage est disponible (helpers/osd-gtk/murmur-osd.py:169-202). Le dépassement 64 Kio efface tout le buffer et certaines exceptions JSON (ValueError, RecursionError) sortent du callback. Les booléens passent aussi pour des entiers.

Tâche

Implémenter un petit automate de framing: drainer avec budget jusqu'à EAGAIN, traiter les lignes avant HUP, jeter une frame trop longue jusqu'au LF, attraper les erreurs de ressources et valider strictement types/ranges.

Critères d'acceptation

  • Un terminal après 16 Kio est traité malgré HUP.
  • Une frame géante ne corrompt pas la suivante.
  • JSON profond/grand/mal typé ne tue pas le helper.
  • Une frame valide suivante reste traitée.

Validation

python3 -m unittest helpers/osd-gtk/test_murmur_osd.py

## Constat Le helper lit 16 Kio puis termine immédiatement sur HUP, même si davantage est disponible (`helpers/osd-gtk/murmur-osd.py:169-202`). Le dépassement 64 Kio efface tout le buffer et certaines exceptions JSON (`ValueError`, `RecursionError`) sortent du callback. Les booléens passent aussi pour des entiers. ## Tâche Implémenter un petit automate de framing: drainer avec budget jusqu'à EAGAIN, traiter les lignes avant HUP, jeter une frame trop longue jusqu'au LF, attraper les erreurs de ressources et valider strictement types/ranges. ## Critères d'acceptation - Un terminal après 16 Kio est traité malgré HUP. - Une frame géante ne corrompt pas la suivante. - JSON profond/grand/mal typé ne tue pas le helper. - Une frame valide suivante reste traitée. ## Validation `python3 -m unittest helpers/osd-gtk/test_murmur_osd.py`

Correctif proposé dans la PR #42 (#42). Les validations ciblées sous race sont détaillées dans la PR.

Correctif proposé dans la PR #42 (https://git.2027a.net/mathieu/murmur/pulls/42). Les validations ciblées sous race sont détaillées dans la PR.

Correctif proposé et validé dans la PR #42 : #42.

Correctif proposé et validé dans la PR #42 : https://git.2027a.net/mathieu/murmur/pulls/42.
Sign in to join this conversation.
No labels
No milestone
No project
No assignees
2 participants
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
mathieu/murmur#29
No description provided.