Panic in filters with primitiveUnits="objectBoundingBox" on zero sized elements
Found by AFL. Minimized:
<svg>
<filter id="f" primitiveUnits="objectBoundingBox">
<feOffset/>
</filter>
<text filter="url(#f)"/>
</svg>
Backtrace:
thread '<unnamed>' panicked at 'Cairo error "invalid matrix (not invertible)"', /home/yalter/.cargo/registry/src/github.com-1ecc6299db9ec823/cairo-sys-rs-0.6.0/src/enums.rs:75:13
stack backtrace:
0: std::sys::unix::backtrace::tracing::imp::unwind_backtrace
at libstd/sys/unix/backtrace/tracing/gcc_s.rs:49
1: std::sys_common::backtrace::print
at libstd/sys_common/backtrace.rs:71
at libstd/sys_common/backtrace.rs:59
2: std::panicking::default_hook::{{closure}}
at libstd/panicking.rs:211
3: std::panicking::default_hook
at libstd/panicking.rs:227
4: std::panicking::rust_panic_with_hook
at libstd/panicking.rs:511
5: std::panicking::continue_panic_fmt
at libstd/panicking.rs:426
6: std::panicking::begin_panic_fmt
at libstd/panicking.rs:413
7: cairo_sys::enums::Status::ensure_valid
at /home/yalter/.cargo/registry/src/github.com-1ecc6299db9ec823/cairo-sys-rs-0.6.0/src/enums.rs:75
8: <cairo_sys::Matrix as cairo::matrices::MatrixTrait>::invert
at /home/yalter/.cargo/registry/src/github.com-1ecc6299db9ec823/cairo-rs-0.4.1/src/matrices.rs:86
9: rsvg_internals::bbox::BoundingBox::combine
at rsvg_internals/src/bbox.rs:44
10: rsvg_internals::bbox::BoundingBox::insert
at rsvg_internals/src/bbox.rs:52
11: rsvg_internals::filters::bounds::BoundsBuilder::apply_properties
at rsvg_internals/src/filters/bounds.rs:112
12: rsvg_internals::filters::bounds::BoundsBuilder::into_irect
at rsvg_internals/src/filters/bounds.rs:87
13: <rsvg_internals::filters::offset::Offset as rsvg_internals::filters::Filter>::render
at rsvg_internals/src/filters/offset.rs:70
14: rsvg_internals::filters::render::{{closure}}::{{closure}}
at rsvg_internals/src/filters/mod.rs:331
15: rsvg_internals::filters::render::{{closure}}
at rsvg_internals/src/filters/mod.rs:348
16: core::iter::iterator::Iterator::for_each::{{closure}}
at /checkout/src/libcore/iter/iterator.rs:551
17: <core::iter::FilterMap<I, F> as core::iter::iterator::Iterator>::fold::{{closure}}
at /checkout/src/libcore/iter/mod.rs:1602
18: <core::iter::Map<I, F> as core::iter::iterator::Iterator>::fold::{{closure}}
at /checkout/src/libcore/iter/mod.rs:1345
19: <core::iter::Filter<I, P> as core::iter::iterator::Iterator>::fold::{{closure}}
at /checkout/src/libcore/iter/mod.rs:1489
20: core::iter::iterator::Iterator::fold::{{closure}}
at /checkout/src/libcore/iter/iterator.rs:1638
21: core::iter::iterator::Iterator::try_fold
at /checkout/src/libcore/iter/iterator.rs:1526
22: core::iter::iterator::Iterator::fold
at /checkout/src/libcore/iter/iterator.rs:1638
23: <core::iter::Filter<I, P> as core::iter::iterator::Iterator>::fold
at /checkout/src/libcore/iter/mod.rs:1488
24: <core::iter::Map<I, F> as core::iter::iterator::Iterator>::fold
at /checkout/src/libcore/iter/mod.rs:1345
25: <core::iter::FilterMap<I, F> as core::iter::iterator::Iterator>::fold
at /checkout/src/libcore/iter/mod.rs:1601
26: core::iter::iterator::Iterator::for_each
at /checkout/src/libcore/iter/iterator.rs:551
27: rsvg_internals::filters::render
at rsvg_internals/src/filters/mod.rs:260
28: rsvg_internals::drawing_ctx::DrawingCtx::with_discrete_layer::{{closure}}
at rsvg_internals/src/drawing_ctx.rs:447
29: <core::option::Option<T>>::and_then
at /checkout/src/libcore/option.rs:622
30: rsvg_internals::drawing_ctx::DrawingCtx::with_discrete_layer
at rsvg_internals/src/drawing_ctx.rs:434
31: rsvg_internals::text::render_children
at rsvg_internals/src/text.rs:681
32: <rsvg_internals::text::NodeText as rsvg_internals::node::NodeTrait>::draw
at rsvg_internals/src/text.rs:193
33: rsvg_internals::node::Node::draw
at rsvg_internals/src/node.rs:550
34: rsvg_internals::drawing_ctx::DrawingCtx::draw_node_from_stack
at rsvg_internals/src/drawing_ctx.rs:810
35: rsvg_internals::node::Node::draw_children
at rsvg_internals/src/node.rs:602
36: <rsvg_internals::structure::NodeSvg as rsvg_internals::node::NodeTrait>::draw::{{closure}}
at rsvg_internals/src/structure.rs:222
37: rsvg_internals::viewport::draw_in_viewport::{{closure}}
at rsvg_internals/src/viewport.rs:83
38: rsvg_internals::drawing_ctx::DrawingCtx::with_discrete_layer
at rsvg_internals/src/drawing_ctx.rs:429
39: rsvg_internals::viewport::draw_in_viewport
at rsvg_internals/src/viewport.rs:44
40: <rsvg_internals::structure::NodeSvg as rsvg_internals::node::NodeTrait>::draw
at rsvg_internals/src/structure.rs:206
41: rsvg_internals::node::Node::draw
at rsvg_internals/src/node.rs:550
42: rsvg_internals::drawing_ctx::DrawingCtx::draw_node_from_stack
at rsvg_internals/src/drawing_ctx.rs:810
43: rsvg_drawing_ctx_draw_node_from_stack
at rsvg_internals/src/drawing_ctx.rs:1062
44: get_node_ink_rect
at librsvg/rsvg-handle.c:1181
45: rsvg_handle_get_dimensions_sub
at librsvg/rsvg-handle.c:1244
46: rsvg_handle_get_dimensions
at librsvg/rsvg-handle.c:1150
47: get_node_ink_rect
at librsvg/rsvg-handle.c:1170
48: rsvg_handle_get_dimensions_sub
at librsvg/rsvg-handle.c:1244
49: main
at ./rsvg-convert.c:321
50: __libc_start_main
51: _start