fix(security): valideer geometry-frontmatter, val terug op defaults (#1681) #1705

Merged
brenno merged 2 commits from fix/1681-geometry-validatie into main 2026-08-21 23:48:37 +00:00
Owner

Samenvatting

double.tryParse aanvaardt NaN en Infinity als geldige doubles, en negatieve marges bereikten de layout als negatieve maten — wat Flutter-layoutconstraints en paginering laat crashen of vastlopen.

Drie lagen van verdediging:

  • _parseGeometry en PageMargins.fromId wijzen niet-eindige en negatieve waarden af (terugval op defaults, niet stíl één veld vervangen).
  • effectiveDocumentPageSetup controleert of de marges binnen het vel passen (marginsFitPaper met 10mm minimum-textspiegel); past dat niet, dan gelden de instellingen, dan de standaardmarge, dan een marge die wél past.
  • paged_document_view.dart knelt de content-maat af op 1mm als verdediging in de diepte.

De gebruiker hoort te weten dat zijn frontmatter genegeerd is: een MaterialBanner boven de pagina-weergave meldt dat in 31 talen.

Testplan

  • Regressietests: _parseGeometry wijst NaN, Infinity, negatief, en afloop>marge af; PageMargins.fromId wijst ongeldige waarden af; marginsFitPaper test breed/hoger dan vel; effectiveDocumentPageSetup valt terug op instellingen; documentPageSetupInvalidReason geeft reden bij ongeldige geometry.
  • make check groen (10385 tests, 87.2% dekking).
  • make check-secrets groen (gitleaks + trufflehog).
  • make sast groen (semgrep, 0 findings).
  • l10n-check groen (31 talen, Klingon-uitzondering genoteerd).

Gevonden bij audit van commit d439638c6.

Generated with Devin

## Samenvatting `double.tryParse` aanvaardt `NaN` en `Infinity` als geldige doubles, en negatieve marges bereikten de layout als negatieve maten — wat Flutter-layoutconstraints en paginering laat crashen of vastlopen. Drie lagen van verdediging: - `_parseGeometry` en `PageMargins.fromId` wijzen niet-eindige en negatieve waarden af (terugval op defaults, niet stíl één veld vervangen). - `effectiveDocumentPageSetup` controleert of de marges binnen het vel passen (`marginsFitPaper` met 10mm minimum-textspiegel); past dat niet, dan gelden de instellingen, dan de standaardmarge, dan een marge die wél past. - `paged_document_view.dart` knelt de content-maat af op 1mm als verdediging in de diepte. De gebruiker hoort te weten dat zijn frontmatter genegeerd is: een `MaterialBanner` boven de pagina-weergave meldt dat in 31 talen. ## Testplan - [x] Regressietests: `_parseGeometry` wijst NaN, Infinity, negatief, en afloop>marge af; `PageMargins.fromId` wijst ongeldige waarden af; `marginsFitPaper` test breed/hoger dan vel; `effectiveDocumentPageSetup` valt terug op instellingen; `documentPageSetupInvalidReason` geeft reden bij ongeldige geometry. - [x] `make check` groen (10385 tests, 87.2% dekking). - [x] `make check-secrets` groen (gitleaks + trufflehog). - [x] `make sast` groen (semgrep, 0 findings). - [x] l10n-check groen (31 talen, Klingon-uitzondering genoteerd). Gevonden bij audit van commit d439638c6. Generated with [Devin](https://devin.ai)
double.tryParse aanvaardt 'NaN' en 'Infinity' als geldige doubles, en
negatieve marges bereikten de layout als negatieve maten — wat
Flutter-layoutconstraints en paginering laat crashen of vastlopen.

Drie lagen van verdediging:
- _parseGeometry en PageMargins.fromId wijzen niet-eindige en negatieve
  waarden af (terugval op defaults, niet stíl één veld vervangen).
- effectiveDocumentPageSetup controleert of de marges binnen het vel
  passen (marginsFitPaper met 10mm minimum-textspiegel); past dat niet,
  dan gelden de instellingen, dan de standaardmarge, dan een marge die wél past.
- paged_document_view.dart knelt de content-maat af op 1mm als
  verdediging in de diepte.

Gevonden bij audit van commit d439638c6.

Generated with [Devin](https://devin.ai)

Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
feat(l10n): toon een melding bij ongeldige geometry-frontmatter (#1681)
All checks were successful
scans / scans (pull_request) Successful in 3m43s
static-gate / static-gate (pull_request) Successful in 6m29s
818820e298
De gebruiker hoort te weten dat zijn frontmatter genegeerd is, niet dat
de helft ervan stiekum vervangen is. Een MaterialBanner boven de
pagina-weergave meldt dat de paginaopmaak ongeldige waarden bevat en de
instellingen gelden — in 31 talen, met een Klingon-uitzondering in de
untranslated-poort.

Generated with [Devin](https://devin.ai)

Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
brenno merged commit 91051afb34 into main 2026-08-21 23:48:37 +00:00
Sign in to join this conversation.
No description provided.