Document-grafiekhydratatie kent geen 8 MiB-plafond en herschrijft CRLF #1666

Closed
opened 2026-08-21 12:02:02 +00:00 by brenno · 0 comments
Owner

Wat er misgaat

Twee gaten naast de symlink in #1640, in hetzelfde _inlineBlock:

  1. Geen groottelimiet. Het deck-openpad weigert grafiekdata boven FileService.maxChartDataBytes (8 MiB). Documentexport leest het bestand volledig in het geheugen tijdens buildDocumentExportBundle.
  2. CRLF. Herschreven fences zijn altijd ```chart\n…\n``` (LF). In een verder CRLF-getrouw document worden die blokken op LF gezet vóór de scan.

Waar het zit

lib/services/document_chart_hydration.dart. Cap staat in lib/services/file/file_service_open.dart bij _hydrateCharts.

Stappen

(1) source: data/huge.json van tientallen MiB, document exporteren → geheugenpiek. (2) CRLF-document met een chart-fence exporteren → die fence is LF in de gehydrateerde tussenstap.

Wat het met het formaat doet

De meester .md via Opslaan blijft byte-getrouw; de exportvoorbereiding niet. Een pathologisch databestand is een DoS op het exportpad.

Regressie

Zelfde 8 MiB-cap als deck-open; fence-einde van het brondocument hergebruiken. Tests naar document_chart_hydration_test.dart.

## Wat er misgaat Twee gaten naast de symlink in #1640, in hetzelfde `_inlineBlock`: 1. **Geen groottelimiet.** Het deck-openpad weigert grafiekdata boven `FileService.maxChartDataBytes` (8 MiB). Documentexport leest het bestand volledig in het geheugen tijdens `buildDocumentExportBundle`. 2. **CRLF.** Herschreven fences zijn altijd `` ```chart\n…\n``` `` (LF). In een verder CRLF-getrouw document worden die blokken op LF gezet vóór de scan. ## Waar het zit `lib/services/document_chart_hydration.dart`. Cap staat in `lib/services/file/file_service_open.dart` bij `_hydrateCharts`. ## Stappen (1) `source: data/huge.json` van tientallen MiB, document exporteren → geheugenpiek. (2) CRLF-document met een chart-fence exporteren → die fence is LF in de gehydrateerde tussenstap. ## Wat het met het formaat doet De meester `.md` via Opslaan blijft byte-getrouw; de exportvoorbereiding niet. Een pathologisch databestand is een DoS op het exportpad. ## Regressie Zelfde 8 MiB-cap als deck-open; fence-einde van het brondocument hergebruiken. Tests naar `document_chart_hydration_test.dart`.
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#1666
No description provided.