bug(export): pas de afbeeldingsdimensiegrens ook toe op GIF in HTML-export #1044

Closed
opened 2026-08-01 08:26:04 +00:00 by brenno · 1 comment
Owner

Context
encodeForHtmlEmbed laat GIF en SVG vóór de dimensieprobe ongewijzigd door. Voor SVG is dat logisch, maar een kleine geldige GIF kan een extreem groot canvas hebben. De gewone beelddecoder begrenst op 4096px; de HTML-export omzeilt die grens.

Impact
Een toegestane GIF tot 64 MiB met bijvoorbeeld 30000×30000 pixels kan bij openen van de HTML-export meerdere gigabytes decodegeheugen per frame vragen.

Relevante code

  • lib/services/html_image_embedder.dart:28 en 55
  • lib/services/export_service.dart:337

Acceptatie

  • Rasterformaten, inclusief GIF, passeren vóór insluiten een betrouwbare dimensiecontrole.
  • Oversized GIF wordt geweigerd of veilig naar een begrensde representatie omgezet.
  • Regressietest gebruikt een kleine GIF-header met canvas boven kMaxImageDecodeDimension en bewijst dat hij niet als ongewijzigde data-URI wordt ingesloten.
Context encodeForHtmlEmbed laat GIF en SVG vóór de dimensieprobe ongewijzigd door. Voor SVG is dat logisch, maar een kleine geldige GIF kan een extreem groot canvas hebben. De gewone beelddecoder begrenst op 4096px; de HTML-export omzeilt die grens. Impact Een toegestane GIF tot 64 MiB met bijvoorbeeld 30000×30000 pixels kan bij openen van de HTML-export meerdere gigabytes decodegeheugen per frame vragen. Relevante code - lib/services/html_image_embedder.dart:28 en 55 - lib/services/export_service.dart:337 Acceptatie - Rasterformaten, inclusief GIF, passeren vóór insluiten een betrouwbare dimensiecontrole. - Oversized GIF wordt geweigerd of veilig naar een begrensde representatie omgezet. - Regressietest gebruikt een kleine GIF-header met canvas boven kMaxImageDecodeDimension en bewijst dat hij niet als ongewijzigde data-URI wordt ingesloten.
Author
Owner

Opgelost op main (PR #1088, merge in 4713374b). GIF loopt nu langs een inhouds-gebaseerde dimensieprobe vóór insluiten: binnen kMaxImageDecodeDimension ongewijzigd mee (beweging behouden), daarboven geweigerd. Regressietest met een 30000x30000-GIF-header.

Opgelost op main (PR #1088, merge in 4713374b). GIF loopt nu langs een inhouds-gebaseerde dimensieprobe vóór insluiten: binnen kMaxImageDecodeDimension ongewijzigd mee (beweging behouden), daarboven geweigerd. Regressietest met een 30000x30000-GIF-header.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
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
LibreKAT/Ocideck#1044
No description provided.