Skip to content

"Undefined array key" when a SVG is included as data URI in CSS background-image (not in base64) #3706

@bohwaz

Description

@bohwaz

This is on DomPDF 3.1.0, and has been reported by a user of my app.

Here's my CSS:

ul.checkboxes li::before {
	content: "";
	width: 1.5em;
	height: 1.5em;
	vertical-align: middle;
	background: url('data:image/svg+xml;utf8,<svg viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg"><path d="m26 4h-20a2 2 0 0 0 -2 2v20a2 2 0 0 0 2 2h20a2 2 0 0 0 2-2v-20a2 2 0 0 0 -2-2zm-20 22v-20h20v20z"/><path d="m14 21.5-5-4.96 1.59-1.54 3.41 3.35 7.41-7.35 1.59 1.58z"/><path d="m0 0h32v32h-32z" fill="none"/></svg>');
	background-size: contain;
	margin-right: .5em;
	display: inline-block;
}

It's a CSS with UTF-8 encoding instead of Base64.

This seems to produce this error:

Warning: Undefined array key "68695397f02de59ce451cb821d310e7c"0 0 32 32" xmlns="http://www.w3.org/2000/svg"><path d="m26 4h-20a2 2 0 0 0 -2 2v20a2 2 0 0 0 2 2h20a2 2 0 0 0 2-2v-20a2 2 0 0 0 -2-2zm-20 22v-20h20v20z"/><path d="m14 21.5-5-4.96 1.59-1.54 3.41 3.35 7.41-7.35 1.59 1.58z"/><path d="m0 0h32v32h-32z" fill="none"/></svg>" in …/dompdf/dompdf/vendor/dompdf/dompdf/src/Css/Stylesheet.php:1473
#0 …/dompdf/dompdf/vendor/dompdf/dompdf/src/Css/Stylesheet.php(1473): KD2\ErrorManager::errorHandler(2, 'Warning: Undefi...', '/homepages/21/d...', 1473)
#1 …/dompdf/dompdf/vendor/dompdf/dompdf/src/Css/Style.php(2212): Dompdf\Css\Stylesheet->resolve_url('url("blob://686...', true)
#2 …/dompdf/dompdf/vendor/dompdf/dompdf/src/Css/Style.php(1904): Dompdf\Css\Style->_get_background_image('url("blob://686...')
#3 …/dompdf/dompdf/vendor/dompdf/dompdf/src/Renderer/AbstractRenderer.php(68): Dompdf\Css\Style->__get('background_imag...')
#4 …/dompdf/dompdf/vendor/dompdf/dompdf/src/Renderer/Block.php(41): Dompdf\Renderer\AbstractRenderer->_render_background(Object(Dompdf\FrameDecorator\Block), Array)
#5 …/dompdf/dompdf/vendor/dompdf/dompdf/src/Renderer.php(305): Dompdf\Renderer\Block->render(Object(Dompdf\FrameDecorator\Block))
#6 …/dompdf/dompdf/vendor/dompdf/dompdf/src/Renderer.php(110): Dompdf\Renderer->_render_frame('block', Object(Dompdf\FrameDecorator\Block))
#7 …/dompdf/dompdf/vendor/dompdf/dompdf/src/Renderer.php(207): Dompdf\Renderer->render(Object(Dompdf\FrameDecorator\Block))
#8 …/dompdf/dompdf/vendor/dompdf/dompdf/src/Renderer.php(207): Dompdf\Renderer->render(Object(Dompdf\FrameDecorator\Block))
#9 …/dompdf/dompdf/vendor/dompdf/dompdf/src/Renderer.php(207): Dompdf\Renderer->render(Object(Dompdf\FrameDecorator\Block))
#10 …/dompdf/dompdf/vendor/dompdf/dompdf/src/Renderer.php(207): Dompdf\Renderer->render(Object(Dompdf\FrameDecorator\TableCell))
#11 …/dompdf/dompdf/vendor/dompdf/dompdf/src/Renderer.php(207): Dompdf\Renderer->render(Object(Dompdf\FrameDecorator\TableRow))
#12 …/dompdf/dompdf/vendor/dompdf/dompdf/src/Renderer.php(207): Dompdf\Renderer->render(Object(Dompdf\FrameDecorator\TableRowGroup))
#13 …/dompdf/dompdf/vendor/dompdf/dompdf/src/Renderer.php(207): Dompdf\Renderer->render(Object(Dompdf\FrameDecorator\Table))
#14 …/dompdf/dompdf/vendor/dompdf/dompdf/src/Renderer.php(207): Dompdf\Renderer->render(Object(Dompdf\FrameDecorator\Block))
#15 …/dompdf/dompdf/vendor/dompdf/dompdf/src/Renderer.php(207): Dompdf\Renderer->render(Object(Dompdf\FrameDecorator\Block))
#16 …/dompdf/dompdf/vendor/dompdf/dompdf/src/Renderer.php(207): Dompdf\Renderer->render(Object(Dompdf\FrameDecorator\Block))
#17 …/dompdf/dompdf/vendor/dompdf/dompdf/src/FrameReflower/Page.php(149): Dompdf\Renderer->render(Object(Dompdf\FrameDecorator\Block))
#18 …/dompdf/dompdf/vendor/dompdf/dompdf/src/FrameDecorator/AbstractFrameDecorator.php(905): Dompdf\FrameReflower\Page->reflow(NULL)
#19 …/dompdf/dompdf/vendor/dompdf/dompdf/src/Dompdf.php(808): Dompdf\FrameDecorator\AbstractFrameDecorator->reflow()

This might be a parsing error and might indicate that the data URI value is not verified properly.

This Data URI syntax doesn't have to be supported, but at least it shouldn't crash DomPDF :)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions