fix(keynote): vang FormatException op in KeyContext.readPart #1460

Merged
brenno merged 1 commit from fix/key-context-utf8-guard into main 2026-08-12 08:01:13 +00:00
Owner

Samenvatting

KeyContext.readPart deed utf8.decode(bytes) zonder try/catch. Een .key met een Metadata/Properties.plist die geen geldige UTF-8 is (binaire plist, beschadigde metadata) liet daardoor de hele import struikelen met FormatException: Missing extension byte.

De fout leek afkomstig uit "slides reconstrueren" omdat deckMetadataFromPlist ná de reconstructie draait maar vóórdat de step-variabele wordt bijgewerkt — de diagnostische stap-info die in #1459 werd toegevoegd wees daardoor naar de verkeerde plek.

Eén guard in de gedeelde functie: return null bij ongeldige UTF-8, net als bij een ontbrekend bestand. deckMetadataFromPlist handelt null al gracieus af (returnt lege metadata).

Testplan

  • make check groen (9290 tests, 86.9% dekking)
  • Nieuwe test: een .key met een plist met ongeldige UTF-8 laat de import niet struikelen

Generated with Devin

## Samenvatting `KeyContext.readPart` deed `utf8.decode(bytes)` zonder try/catch. Een `.key` met een `Metadata/Properties.plist` die geen geldige UTF-8 is (binaire plist, beschadigde metadata) liet daardoor de hele import struikelen met `FormatException: Missing extension byte`. De fout leek afkomstig uit "slides reconstrueren" omdat `deckMetadataFromPlist` ná de reconstructie draait maar vóórdat de `step`-variabele wordt bijgewerkt — de diagnostische stap-info die in #1459 werd toegevoegd wees daardoor naar de verkeerde plek. Eén guard in de gedeelde functie: return `null` bij ongeldige UTF-8, net als bij een ontbrekend bestand. `deckMetadataFromPlist` handelt `null` al gracieus af (returnt lege metadata). ## Testplan - [x] `make check` groen (9290 tests, 86.9% dekking) - [x] Nieuwe test: een `.key` met een plist met ongeldige UTF-8 laat de import niet struikelen Generated with [Devin](https://devin.ai)
fix(keynote): vang FormatException op in KeyContext.readPart
All checks were successful
scans / scans (pull_request) Successful in 5m13s
static-gate / static-gate (pull_request) Successful in 14m8s
8d23d5d11a
readPart deed utf8.decode(bytes) zonder try/catch. Een .key met een
Metadata/Properties.plist die geen geldige UTF-8 is (binaire plist,
beschadigde metadata) liet daardoor de hele import struikelen met
"FormatException: Missing extension byte" — de fout leek afkomstig uit
"slides reconstrueren" omdat deckMetadataFromPlist ná de reconstructie
draait maar vóór de stap-variabele wordt bijgewerkt.

Eén guard in de gedeelde functie: return null bij ongeldige UTF-8, net als
bij een ontbrekend bestand. deckMetadataFromPlist handelt null al gracieus
af (returnt lege metadata).

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

Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
brenno merged commit 0e4948b4b4 into main 2026-08-12 08:01:13 +00:00
Sign in to join this conversation.
No description provided.