d2svg: reject padding with negative dimensions - #2841
Merged
Conversation
alixander
force-pushed
the
agent/fix-negative-padding
branch
3 times, most recently
from
August 10, 2026 01:46
77339e6 to
fd5fbe0
Compare
Signed-off-by: Alexander Wang <alex@terrastruct.com>
alixander
force-pushed
the
agent/fix-negative-padding
branch
from
August 10, 2026 01:50
fd5fbe0 to
59e4472
Compare
alixander
marked this pull request as ready for review
August 10, 2026 01:52
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Before this change, for example,
d2 --pad=-1000could succeed while emitting negativewidth,height, andviewBoxdimensions. SVG 2 treats negative width or height as illegal: https://www.w3.org/TR/SVG2/struct.htmlValidation
go test ./d2renderers/d2svg -count=1go test -race ./d2renderers/d2svg -run '^TestRenderValidatesPaddingDimensions$' -count=20go vet ./d2renderers/d2svgGOOS=js GOARCH=wasm go test -c ./d2renderers/d2svggo test ./e2etests -run '^TestE2E$' -count=1 -parallel=1--pad=-1renders;--pad=-1000returns an errorThe regression covers a valid negative crop, the exact zero-dimension boundary, the first invalid negative value, and minimum/maximum
int64inputs.