Zeer lange documenttitel kan een ongeldige exportbestandsnaam opleveren #1677
Labels
No labels
accepted
bug
declined
docs
duplicate
enhancement
good first issue
in-progress
needs-info
privacy
security
triage
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
LibreKAT/Ocideck#1677
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Probleem
De voorgestelde exportnaam heeft geen maximale lengte. Een lange H1 of title in frontmatter kan een naam boven de gebruikelijke bestandssysteemlimiet opleveren, waarna de bestandskiezer of atomische write faalt. De fout verschijnt pas aan het eind van de exportflow.
Reproductie
Verwacht
De basisnaam wordt deterministisch begrensd met behoud van extensie en profieltag.
Technische aanwijzing
suggestedDocumentExportFileName normaliseert tekens maar kapt source/cleaned/base nergens af.
Gevonden bij audit van commit
d439638c6b.Triage: accepted
Bevestigd tegen
main(e93ef205c).suggestedDocumentExportFileName(lib/services/document_export_service.dart) normaliseert wel tekens maar kaptsource,cleanednochbaseaf. Een lange# kopoftitle:levert dus een naam boven de gebruikelijke limiet, en de fout valt pas bij de bestandskiezer of bij de atomische schrijfactie — aan het eind van de exportflow, nadat de gebruiker alles al heeft ingevuld.Oplossingsrichting
Begrens de basisnaam, niet de hele naam: reserveer eerst de ruimte voor
-<tag>.<ext>en kap wat overblijft af op wat er binnen een budget van 255 past.Twee dingen die je hier fout kunt doen:
Het totale pad is een aparte grens en niet van deze functie; die hoort de kiezer of de schrijfactie te melden.
Neem dit mee met #1675: dezelfde functie.
Regressietest (verplicht)
Unittest: titel van 1000 tekens →
utf8.encode(naam).length <= 255, de naam eindigt nog op-volledig.md, en twee verschillende lange titels leveren verschillende namen op (deterministisch afkappen, geen botsing bij de eerste 200 tekens gelijk — als dat laatste te ver gaat, zeg het dan expliciet in de test in plaats van het stil te laten).Kosten
Klein.
Prioriteit
Laag-middel: hinderlijk en laat zichtbaar, geen dataverlies.