Compare commits

...

No commits in common. "c8" and "c10s" have entirely different histories.
c8 ... c10s

11 changed files with 585 additions and 1076 deletions

110
.gitignore vendored
View File

@ -1 +1,109 @@
SOURCES/librsvg-2.42.7.tar.xz librsvg-2.31.0.tar.bz2
/librsvg-2.32.0.tar.bz2
/librsvg-2.32.1.tar.bz2
/librsvg-2.34.0.tar.bz2
/librsvg-2.34.1.tar.xz
/librsvg-2.35.0.tar.xz
/librsvg-2.35.1.tar.xz
/librsvg-2.35.2.tar.xz
/librsvg-2.36.0.tar.xz
/librsvg-2.36.1.tar.xz
/librsvg-2.36.3.tar.xz
/librsvg-2.36.4.tar.xz
/librsvg-2.37.0.tar.xz
/librsvg-2.39.0.tar.xz
/librsvg-2.40.0.tar.xz
/librsvg-2.40.1.tar.xz
/librsvg-2.40.2.tar.xz
/librsvg-2.40.3.tar.xz
/librsvg-2.40.4.tar.xz
/librsvg-2.40.5.tar.xz
/librsvg-2.40.6.tar.xz
/librsvg-2.40.7.tar.xz
/librsvg-2.40.8.tar.xz
/librsvg-2.40.9.tar.xz
/librsvg-2.40.10.tar.xz
/librsvg-2.40.11.tar.xz
/librsvg-2.40.12.tar.xz
/librsvg-2.40.13.tar.xz
/librsvg-2.40.15.tar.xz
/librsvg-2.40.16.tar.xz
/librsvg-2.40.17.tar.xz
/librsvg-2.40.18.tar.xz
/librsvg-2.40.19.tar.xz
/librsvg-2.40.20.tar.xz
/librsvg-2.42.1.tar.xz
/librsvg-2.42.2.tar.xz
/librsvg-2.42.3.tar.xz
/librsvg-2.42.4.tar.xz
/librsvg-2.43.1.tar.xz
/librsvg-2.43.4.tar.xz
/librsvg-2.44.2.tar.xz
/librsvg-2.44.3.tar.xz
/librsvg-2.44.4.tar.xz
/librsvg-2.44.6.tar.xz
/librsvg-2.44.7.tar.xz
/librsvg-2.44.8.tar.xz
/librsvg-2.44.9.tar.xz
/librsvg-2.44.10.tar.xz
/librsvg-2.44.11.tar.xz
/librsvg-2.45.3.tar.xz
/librsvg-2.45.4.tar.xz
/librsvg-2.45.5.tar.xz
/librsvg-2.45.6.tar.xz
/librsvg-2.45.7.tar.xz
/librsvg-2.45.8.tar.xz
/librsvg-2.45.90.tar.xz
/librsvg-2.45.91.tar.xz
/librsvg-2.45.92.tar.xz
/librsvg-2.46.0.tar.xz
/librsvg-2.46.1.tar.xz
/librsvg-2.46.2.tar.xz
/librsvg-2.46.3.tar.xz
/librsvg-2.46.4.tar.xz
/librsvg-2.48.0.tar.xz
/librsvg-2.48.1.tar.xz
/librsvg-2.48.2.tar.xz
/librsvg-2.48.3.tar.xz
/librsvg-2.48.4.tar.xz
/librsvg-2.48.5.tar.xz
/librsvg-2.48.6.tar.xz
/librsvg-2.48.7.tar.xz
/librsvg-2.48.8.tar.xz
/librsvg-2.50.0.tar.xz
/librsvg-2.50.1.tar.xz
/librsvg-2.50.2.tar.xz
/librsvg-2.50.3.tar.xz
/librsvg-2.50.4.tar.xz
/librsvg-2.50.5.tar.xz
/librsvg-2.50.6.tar.xz
/librsvg-2.50.7.tar.xz
/librsvg-2.52.1.tar.xz
/librsvg-2.52.3.tar.xz
/librsvg-2.52.4.tar.xz
/librsvg-2.52.5.tar.xz
/librsvg-2.53.0.tar.xz
/librsvg-2.53.1.tar.xz
/librsvg-2.53.2.tar.xz
/librsvg-2.54.0.tar.xz
/librsvg-2.54.1.tar.xz
/librsvg-2.54.2.tar.xz
/librsvg-2.54.3.tar.xz
/librsvg-2.54.4.tar.xz
/librsvg-2.54.5.tar.xz
/librsvg-2.55.1.tar.xz
/librsvg-2.55.90.tar.xz
/librsvg-2.56.0.tar.xz
/librsvg-2.56.0-vendor.tar.xz
/librsvg-2.56.1.tar.xz
/librsvg-2.56.1-vendor.tar.xz
/librsvg-2.56.2.tar.xz
/librsvg-2.56.2-vendor.tar.xz
/librsvg-2.56.90.tar.xz
/librsvg-2.56.90-vendor.tar.xz
/librsvg-2.56.92.tar.xz
/librsvg-2.56.92-vendor.tar.xz
/librsvg-2.57.0.tar.xz
/librsvg-2.57.0-vendor.tar.xz
/librsvg-2.57.1.tar.xz
/librsvg-2.57.1-vendor.tar.xz

View File

@ -1 +0,0 @@
dd6d47ab7db959ec6dd80739b61bda3b24fc170c SOURCES/librsvg-2.42.7.tar.xz

View File

@ -0,0 +1,26 @@
From 912b0a6a4c42dd26f2e89b823d5db987addb256d Mon Sep 17 00:00:00 2001
From: Kalev Lember <klember@redhat.com>
Date: Tue, 8 Nov 2022 17:02:19 +0100
Subject: [PATCH] Fedora: Drop dependencies required for benchmarking
Drop criterion that is only required for benchmarking, which we don't do
during package builds.
---
rsvg/Cargo.toml | 1 -
1 file changed, 1 deletion(-)
diff --git a/rsvg/Cargo.toml b/rsvg/Cargo.toml
index 07c6b969..35b2a7c0 100644
--- a/rsvg/Cargo.toml
+++ b/rsvg/Cargo.toml
@@ -80,7 +80,6 @@ yeslogic-fontconfig-sys = { version = "4.0.1", optional = true }
[dev-dependencies]
anyhow = "1.0"
chrono = { version = "0.4.23", default-features = false, features = ["clock", "std"] }
-criterion = "0.5"
lopdf = "0.31"
matches = "0.1"
png = "0.17.2"
--
2.41.0

View File

@ -0,0 +1,25 @@
From cf65d5f1bb3e4ccef9b85d7663922af9a66613d7 Mon Sep 17 00:00:00 2001
From: Fabio Valentini <decathorpe@gmail.com>
Date: Tue, 4 Jun 2024 23:32:24 +0200
Subject: [PATCH] skip broken reference tests
---
rsvg/tests/reference.rs | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/rsvg/tests/reference.rs b/rsvg/tests/reference.rs
index 08d9110..e603827 100644
--- a/rsvg/tests/reference.rs
+++ b/rsvg/tests/reference.rs
@@ -226,7 +226,7 @@ mod tests {
t!(include_compressed_svg, "include-compressed.svg");
t!(include_fallback_svg, "include-fallback.svg");
t!(include_text_svg, "include-text.svg");
- t!(rtl_tspan_svg, "rtl-tspan.svg");
+ //t!(rtl_tspan_svg, "rtl-tspan.svg");
t!(specificity_svg, "specificity.svg");
t!(structural_pseudo_classes_svg, "structural-pseudo-classes.svg");
t!(style_with_xml_comments_svg, "style-with-xml-comments.svg");
--
2.45.2

View File

@ -1,229 +0,0 @@
From 6aacf7c0e81082dc414396f7059a7a2893c4600b Mon Sep 17 00:00:00 2001
From: rpm-build <rpm-build>
Date: Mon, 16 Jan 2023 13:24:17 -0800
Subject: [PATCH] Upgrade to procedural-masquerade 0.1.7
---
Cargo.lock | 8 +-
.../.cargo-checksum.json | 2 +-
vendor/procedural-masquerade/.cargo-ok | 0
vendor/procedural-masquerade/Cargo.toml | 4 +-
vendor/procedural-masquerade/lib.rs | 111 ++++++++++++------
5 files changed, 79 insertions(+), 46 deletions(-)
delete mode 100644 vendor/procedural-masquerade/.cargo-ok
diff --git a/Cargo.lock b/Cargo.lock
index c49356d08a6d..a4899a02041d 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -54,7 +54,7 @@ dependencies = [
"itoa 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)",
"matches 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)",
"phf 0.7.21 (registry+https://github.com/rust-lang/crates.io-index)",
- "procedural-masquerade 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)",
+ "procedural-masquerade 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)",
"quote 0.3.15 (registry+https://github.com/rust-lang/crates.io-index)",
"smallvec 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)",
"syn 0.11.11 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -67,7 +67,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"phf_codegen 0.7.21 (registry+https://github.com/rust-lang/crates.io-index)",
"proc-macro2 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)",
- "procedural-masquerade 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)",
+ "procedural-masquerade 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)",
"quote 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)",
"syn 0.12.14 (registry+https://github.com/rust-lang/crates.io-index)",
]
@@ -295,7 +295,7 @@ dependencies = [
[[package]]
name = "procedural-masquerade"
-version = "0.1.5"
+version = "0.1.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
[[package]]
@@ -513,7 +513,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
"checksum phf_shared 0.7.21 (registry+https://github.com/rust-lang/crates.io-index)" = "07e24b0ca9643bdecd0632f2b3da6b1b89bbb0030e0b992afc1113b23a7bc2f2"
"checksum pkg-config 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)" = "3a8b4c6b8165cd1a1cd4b9b120978131389f64bdaf456435caa41e630edba903"
"checksum proc-macro2 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "cd07deb3c6d1d9ff827999c7f9b04cdfd66b1b17ae508e14fe47b620f2282ae0"
-"checksum procedural-masquerade 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "dc1bcafee1590f81acb329ae45ec627b318123f085153913620316ae9a144b2a"
+"checksum procedural-masquerade 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)" = "8f1383dff4092fe903ac180e391a8d4121cc48f08ccf850614b0290c6673b69d"
"checksum quote 0.3.15 (registry+https://github.com/rust-lang/crates.io-index)" = "7a6e920b65c65f10b2ae65c831a81a073a89edd28c7cce89475bff467ab4167a"
"checksum quote 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "1eca14c727ad12702eb4b6bfb5a232287dcf8385cb8ca83a3eeaf6519c44c408"
"checksum rand 0.3.22 (registry+https://github.com/rust-lang/crates.io-index)" = "15a732abf9d20f0ad8eeb6f909bf6868722d9a06e1e50802b6a70351f40b4eb1"
diff --git a/vendor/procedural-masquerade/.cargo-checksum.json b/vendor/procedural-masquerade/.cargo-checksum.json
index e5ded3a268ba..d80306902f03 100644
--- a/vendor/procedural-masquerade/.cargo-checksum.json
+++ b/vendor/procedural-masquerade/.cargo-checksum.json
@@ -1 +1 @@
-{"files":{".cargo-ok":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","Cargo.toml":"78faf5c70ec7dc8d1e18ccf508a483220b31a4d99ce171083f9df709c6d930b1","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"4bf2f5a98355718dc876a821d76cfc9802c43d3cbdc5b9d46a1cd5dfa5d6b01a","lib.rs":"56dc915a0343a75606bd33056f7bbb1832112683903786e53bac56e855afe380"},"package":"dc1bcafee1590f81acb329ae45ec627b318123f085153913620316ae9a144b2a"}
\ No newline at end of file
+{"files":{"Cargo.toml":"39b050fe906ec0088242ac802f4e8305196f1b0d8543322c17931b219b2e0619","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"4bf2f5a98355718dc876a821d76cfc9802c43d3cbdc5b9d46a1cd5dfa5d6b01a","lib.rs":"d549db3924ec4026718d241f4227c98d17dc6f3a06bdc6a3581cee8cb43f7ac3"},"package":"8f1383dff4092fe903ac180e391a8d4121cc48f08ccf850614b0290c6673b69d"}
\ No newline at end of file
diff --git a/vendor/procedural-masquerade/.cargo-ok b/vendor/procedural-masquerade/.cargo-ok
deleted file mode 100644
index e69de29bb2d1..000000000000
diff --git a/vendor/procedural-masquerade/Cargo.toml b/vendor/procedural-masquerade/Cargo.toml
index f8b5f2c57308..9c004599b496 100644
--- a/vendor/procedural-masquerade/Cargo.toml
+++ b/vendor/procedural-masquerade/Cargo.toml
@@ -3,7 +3,7 @@
# When uploading crates to the registry Cargo will automatically
# "normalize" Cargo.toml files for maximal compatibility
# with all versions of Cargo and also rewrite `path` dependencies
-# to registry (e.g. crates.io) dependencies
+# to registry (e.g., crates.io) dependencies
#
# If you believe there's an error in this file please file an
# issue against the rust-lang/cargo repository. If you're
@@ -12,7 +12,7 @@
[package]
name = "procedural-masquerade"
-version = "0.1.5"
+version = "0.1.7"
authors = ["Simon Sapin <simon.sapin@exyr.org>"]
description = "macro_rules for making proc_macro_derive pretending to be proc_macro"
documentation = "https://docs.rs/procedural-masquerade/"
diff --git a/vendor/procedural-masquerade/lib.rs b/vendor/procedural-masquerade/lib.rs
index 86e841a084a9..4b51e1497006 100644
--- a/vendor/procedural-masquerade/lib.rs
+++ b/vendor/procedural-masquerade/lib.rs
@@ -177,8 +177,15 @@ macro_rules! define_proc_macros {
fn wrapped($input: &str) -> String {
$body
}
+
+ // syn uses a huge amount of stack in debug mode.
let derive_input_string = derive_input.to_string();
- wrapped($crate::_extract_input(&derive_input_string)).parse().unwrap()
+ let handle =
+ ::std::thread::Builder::new().stack_size(128 * 1024 * 1024).spawn(move || {
+ wrapped($crate::_extract_input(&derive_input_string))
+ }).unwrap();
+
+ handle.join().unwrap().parse().unwrap()
}
)+
}
@@ -191,18 +198,44 @@ macro_rules! define_proc_macros {
pub fn _extract_input(derive_input: &str) -> &str {
let mut input = derive_input;
- for expected in &["#[allow(unused)]", "enum", "ProceduralMasqueradeDummyType", "{",
- "Input", "=", "(0,", "stringify!", "("] {
- input = input.trim_left();
- assert!(input.starts_with(expected),
- "expected prefix {:?} not found in {:?}", expected, derive_input);
+ for expected in &[
+ "#",
+ "[",
+ "allow",
+ "(",
+ "unused",
+ ")",
+ "]",
+ "enum",
+ "ProceduralMasqueradeDummyType",
+ "{",
+ "Input",
+ "=",
+ "(",
+ "0",
+ ",",
+ "stringify",
+ "!",
+ "(",
+ ] {
+ input = input.trim_start();
+ assert!(
+ input.starts_with(expected),
+ "expected prefix {:?} not found in {:?}",
+ expected,
+ derive_input
+ );
input = &input[expected.len()..];
}
- for expected in [")", ").0,", "}"].iter().rev() {
- input = input.trim_right();
- assert!(input.ends_with(expected),
- "expected suffix {:?} not found in {:?}", expected, derive_input);
+ for expected in [")", ")", ".", "0", ",", "}"].iter().rev() {
+ input = input.trim_end();
+ assert!(
+ input.ends_with(expected),
+ "expected suffix {:?} not found in {:?}",
+ expected,
+ derive_input
+ );
let end = input.len() - expected.len();
input = &input[..end];
}
@@ -220,33 +253,33 @@ macro_rules! define_invoke_proc_macro {
#[doc(hidden)]
#[macro_export]
macro_rules! $macro_name {
- ($proc_macro_name: ident ! $paren: tt) => {
- #[derive($proc_macro_name)]
- #[allow(unused)]
- enum ProceduralMasqueradeDummyType {
- // The magic happens here.
- //
- // We use an `enum` with an explicit discriminant
- // because that is the only case where a type definition
- // can contain a (const) expression.
- //
- // `(0, "foo").0` evalutes to 0, with the `"foo"` part ignored.
- //
- // By the time the `#[proc_macro_derive]` function
- // implementing `#[derive($proc_macro_name)]` is called,
- // `$paren` has already been replaced with the input of this inner macro,
- // but `stringify!` has not been expanded yet.
- //
- // This how arbitrary tokens can be inserted
- // in the input to the `#[proc_macro_derive]` function.
- //
- // Later, `stringify!(...)` is expanded into a string literal
- // which is then ignored.
- // Using `stringify!` enables passing arbitrary tokens
- // rather than only what can be parsed as a const expression.
- Input = (0, stringify! $paren ).0
- }
- }
- }
- }
+ ($proc_macro_name: ident ! $paren: tt) => {
+ #[derive($proc_macro_name)]
+ #[allow(unused)]
+ enum ProceduralMasqueradeDummyType {
+ // The magic happens here.
+ //
+ // We use an `enum` with an explicit discriminant
+ // because that is the only case where a type definition
+ // can contain a (const) expression.
+ //
+ // `(0, "foo").0` evalutes to 0, with the `"foo"` part ignored.
+ //
+ // By the time the `#[proc_macro_derive]` function
+ // implementing `#[derive($proc_macro_name)]` is called,
+ // `$paren` has already been replaced with the input of this inner macro,
+ // but `stringify!` has not been expanded yet.
+ //
+ // This how arbitrary tokens can be inserted
+ // in the input to the `#[proc_macro_derive]` function.
+ //
+ // Later, `stringify!(...)` is expanded into a string literal
+ // which is then ignored.
+ // Using `stringify!` enables passing arbitrary tokens
+ // rather than only what can be parsed as a const expression.
+ Input = (0, stringify! $paren ).0,
+ }
+ }
+ }
+ };
}
--
2.39.0

View File

@ -1,573 +0,0 @@
From faec595a1721a2496e9c258917facbb564f85854 Mon Sep 17 00:00:00 2001
From: rpm-build <rpm-build>
Date: Wed, 13 May 2020 17:53:13 -0500
Subject: [PATCH] CVE-2019-20446.patch
---
librsvg/rsvg-base.c | 90 +++++++++---
librsvg/rsvg-private.h | 5 +-
rsvg_internals/src/drawing_ctx.rs | 23 ++--
rsvg_internals/src/structure.rs | 21 ++-
tests/errors.c | 52 ++++++-
.../errors/308-doubly-recursive-use.svg | 13 ++
tests/fixtures/errors/308-recursive-use.svg | 9 ++
tests/fixtures/errors/308-use-self-ref.svg | 7 +
.../errors/515-pattern-billion-laughs.svg | 130 ++++++++++++++++++
.../errors/515-too-many-elements.svgz | Bin 0 -> 40811 bytes
10 files changed, 310 insertions(+), 40 deletions(-)
create mode 100644 tests/fixtures/errors/308-doubly-recursive-use.svg
create mode 100644 tests/fixtures/errors/308-recursive-use.svg
create mode 100644 tests/fixtures/errors/308-use-self-ref.svg
create mode 100644 tests/fixtures/errors/515-pattern-billion-laughs.svg
create mode 100644 tests/fixtures/errors/515-too-many-elements.svgz
diff --git a/librsvg/rsvg-base.c b/librsvg/rsvg-base.c
index dbad819..af3d43c 100644
--- a/librsvg/rsvg-base.c
+++ b/librsvg/rsvg-base.c
@@ -431,12 +431,29 @@ node_set_atts (RsvgNode * node, RsvgHandle *handle, const NodeCreator *creator,
}
}
+static gboolean
+loading_limits_exceeded (RsvgHandle *handle)
+{
+ /* This is a mitigation for SVG files which create millions of elements
+ * in an attempt to exhaust memory. We don't allow loading more than
+ * this number of elements during the initial streaming load process.
+ */
+ return handle->priv->num_loaded_elements > 200000;
+}
+
static void
rsvg_standard_element_start (RsvgHandle *handle, const char *name, RsvgPropertyBag * atts)
{
const NodeCreator *creator;
RsvgNode *newnode = NULL;
+ if (loading_limits_exceeded (handle)) {
+ g_set_error (handle->priv->error, RSVG_ERROR, 0, "instancing limit");
+
+ xmlStopParser (handle->priv->ctxt);
+ return;
+ }
+
creator = get_node_creator_for_element_name (name);
g_assert (creator != NULL && creator->create_fn != NULL);
@@ -456,6 +473,7 @@ rsvg_standard_element_start (RsvgHandle *handle, const char *name, RsvgPropertyB
handle->priv->treebase = rsvg_node_ref (newnode);
}
+ handle->priv->num_loaded_elements += 1;
handle->priv->currentnode = rsvg_node_ref (newnode);
node_set_atts (newnode, handle, creator, atts);
@@ -1641,6 +1659,52 @@ rsvg_push_discrete_layer (RsvgDrawingCtx * ctx)
ctx->render->push_discrete_layer (ctx);
}
+void
+rsvg_drawing_ctx_increase_num_elements_acquired (RsvgDrawingCtx *draw_ctx)
+{
+ draw_ctx->num_elements_acquired++;
+}
+
+/* This is a mitigation for the security-related bugs:
+ * https://gitlab.gnome.org/GNOME/librsvg/issues/323
+ * https://gitlab.gnome.org/GNOME/librsvg/issues/515
+ *
+ * Imagine the XML [billion laughs attack], but done in SVG's terms:
+ *
+ * - #323 above creates deeply nested groups of `<use>` elements.
+ * The first one references the second one ten times, the second one
+ * references the third one ten times, and so on. In the file given,
+ * this causes 10^17 objects to be rendered. While this does not
+ * exhaust memory, it would take a really long time.
+ *
+ * - #515 has deeply nested references of `<pattern>` elements. Each
+ * object inside each pattern has an attribute
+ * fill="url(#next_pattern)", so the number of final rendered objects
+ * grows exponentially.
+ *
+ * We deal with both cases by placing a limit on how many references
+ * will be resolved during the SVG rendering process, that is,
+ * how many `url(#foo)` will be resolved.
+ *
+ * [billion laughs attack]: https://bitbucket.org/tiran/defusedxml
+ */
+static gboolean
+limits_exceeded (RsvgDrawingCtx *draw_ctx)
+{
+ return draw_ctx->num_elements_acquired > 500000;
+}
+
+RsvgNode *
+rsvg_drawing_ctx_acquire_node_ref (RsvgDrawingCtx * ctx, RsvgNode *node)
+{
+ if (g_slist_find (ctx->acquired_nodes, node))
+ return NULL;
+
+ ctx->acquired_nodes = g_slist_prepend (ctx->acquired_nodes, node);
+
+ return node;
+}
+
/*
* rsvg_drawing_ctx_acquire_node:
* @ctx: The drawing context in use
@@ -1668,16 +1732,15 @@ rsvg_drawing_ctx_acquire_node (RsvgDrawingCtx * ctx, const char *url)
if (url == NULL)
return NULL;
+ rsvg_drawing_ctx_increase_num_elements_acquired (ctx);
+ if (limits_exceeded (ctx))
+ return NULL;
+
node = rsvg_defs_lookup (ctx->defs, url);
if (node == NULL)
return NULL;
- if (g_slist_find (ctx->acquired_nodes, node))
- return NULL;
-
- ctx->acquired_nodes = g_slist_prepend (ctx->acquired_nodes, node);
-
- return node;
+ return rsvg_drawing_ctx_acquire_node_ref (ctx, node);
}
/**
@@ -1734,18 +1797,9 @@ rsvg_drawing_ctx_release_node (RsvgDrawingCtx * ctx, RsvgNode *node)
if (node == NULL)
return;
- g_return_if_fail (ctx->acquired_nodes != NULL);
- g_return_if_fail (ctx->acquired_nodes->data == node);
-
ctx->acquired_nodes = g_slist_remove (ctx->acquired_nodes, node);
}
-void
-rsvg_drawing_ctx_increase_num_elements_rendered_through_use (RsvgDrawingCtx *draw_ctx)
-{
- draw_ctx->num_elements_rendered_through_use++;
-}
-
void
rsvg_drawing_ctx_add_node_and_ancestors_to_stack (RsvgDrawingCtx *draw_ctx, RsvgNode *node)
{
@@ -1759,12 +1813,6 @@ rsvg_drawing_ctx_add_node_and_ancestors_to_stack (RsvgDrawingCtx *draw_ctx, Rsvg
}
}
-static gboolean
-limits_exceeded (RsvgDrawingCtx *draw_ctx)
-{
- return draw_ctx->num_elements_rendered_through_use > 500000;
-}
-
gboolean
rsvg_drawing_ctx_draw_node_from_stack (RsvgDrawingCtx *ctx, RsvgNode *node, int dominate)
{
diff --git a/librsvg/rsvg-private.h b/librsvg/rsvg-private.h
index aeec8d5..06f4c2b 100644
--- a/librsvg/rsvg-private.h
+++ b/librsvg/rsvg-private.h
@@ -164,6 +164,7 @@ struct RsvgHandlePrivate {
*/
RsvgSaxHandler *handler;
int handler_nest;
+ gsize num_loaded_elements;
GHashTable *entities; /* g_malloc'd string -> xmlEntityPtr */
@@ -200,7 +201,7 @@ struct RsvgDrawingCtx {
RsvgState *state;
GError **error;
RsvgDefs *defs;
- gsize num_elements_rendered_through_use;
+ gsize num_elements_acquired;
PangoContext *pango_context;
double dpi_x, dpi_y;
RsvgViewBox vb;
@@ -502,6 +503,8 @@ RsvgNode *rsvg_drawing_ctx_acquire_node (RsvgDrawingCtx * ctx, const cha
G_GNUC_INTERNAL
RsvgNode *rsvg_drawing_ctx_acquire_node_of_type (RsvgDrawingCtx * ctx, const char *url, RsvgNodeType type);
G_GNUC_INTERNAL
+RsvgNode *rsvg_drawing_ctx_acquire_node_ref (RsvgDrawingCtx * ctx, RsvgNode *node);
+G_GNUC_INTERNAL
void rsvg_drawing_ctx_release_node (RsvgDrawingCtx * ctx, RsvgNode *node);
G_GNUC_INTERNAL
diff --git a/rsvg_internals/src/drawing_ctx.rs b/rsvg_internals/src/drawing_ctx.rs
index 79f0c9f..631b073 100644
--- a/rsvg_internals/src/drawing_ctx.rs
+++ b/rsvg_internals/src/drawing_ctx.rs
@@ -32,6 +32,11 @@ extern "C" {
fn rsvg_drawing_ctx_pop_view_box(draw_ctx: *const RsvgDrawingCtx);
+ fn rsvg_drawing_ctx_acquire_node_ref(
+ draw_ctx: *const RsvgDrawingCtx,
+ node: *const RsvgNode,
+ ) -> *mut RsvgNode;
+
fn rsvg_drawing_ctx_acquire_node(
draw_ctx: *const RsvgDrawingCtx,
url: *const libc::c_char,
@@ -45,8 +50,6 @@ extern "C" {
fn rsvg_drawing_ctx_release_node(draw_ctx: *const RsvgDrawingCtx, node: *mut RsvgNode);
- fn rsvg_drawing_ctx_increase_num_elements_rendered_through_use(draw_ctx: *const RsvgDrawingCtx);
-
fn rsvg_drawing_ctx_get_current_state_affine(draw_ctx: *const RsvgDrawingCtx) -> cairo::Matrix;
fn rsvg_drawing_ctx_set_current_state_affine(
@@ -149,6 +152,16 @@ pub fn pop_view_box(draw_ctx: *const RsvgDrawingCtx) {
}
}
+pub fn acquire_node_ref(draw_ctx: *const RsvgDrawingCtx, node: *const RsvgNode) -> Option<AcquiredNode> {
+ let raw_node = unsafe { rsvg_drawing_ctx_acquire_node_ref(draw_ctx, node) };
+
+ if raw_node.is_null() {
+ None
+ } else {
+ Some(AcquiredNode(draw_ctx, raw_node))
+ }
+}
+
pub fn get_acquired_node(draw_ctx: *const RsvgDrawingCtx, url: &str) -> Option<AcquiredNode> {
let raw_node = unsafe { rsvg_drawing_ctx_acquire_node(draw_ctx, str::to_glib_none(url).0) };
@@ -290,12 +303,6 @@ pub fn state_pop(draw_ctx: *const RsvgDrawingCtx) {
}
}
-pub fn increase_num_elements_rendered_through_use(draw_ctx: *const RsvgDrawingCtx) {
- unsafe {
- rsvg_drawing_ctx_increase_num_elements_rendered_through_use(draw_ctx);
- }
-}
-
pub struct AcquiredNode(*const RsvgDrawingCtx, *mut RsvgNode);
impl Drop for AcquiredNode {
diff --git a/rsvg_internals/src/structure.rs b/rsvg_internals/src/structure.rs
index 71c9ff0..e4234ae 100644
--- a/rsvg_internals/src/structure.rs
+++ b/rsvg_internals/src/structure.rs
@@ -278,6 +278,20 @@ impl NodeTrait for NodeUse {
return;
}
+ // <use> is an element that is used directly, unlike
+ // <pattern>, which is used through a fill="url(#...)"
+ // reference. However, <use> will always reference another
+ // element, potentially itself or an ancestor of itself (or
+ // another <use> which references the first one, etc.). So,
+ // we acquire the <use> element itself so that circular
+ // references can be caught.
+ let self_box = box_node(node.clone());
+ let self_acquired = drawing_ctx::acquire_node_ref(draw_ctx, self_box);
+ rsvg_node_unref(self_box);
+ if self_acquired.is_none() {
+ return;
+ }
+
let child = if let Some(acquired) =
drawing_ctx::get_acquired_node(draw_ctx, link.as_ref().unwrap())
{
@@ -286,13 +300,6 @@ impl NodeTrait for NodeUse {
return;
};
- if Node::is_ancestor(node.clone(), child.clone()) {
- // or, if we're <use>'ing ourselves
- return;
- }
-
- drawing_ctx::increase_num_elements_rendered_through_use(draw_ctx);
-
let nx = self.x.get().normalize(draw_ctx);
let ny = self.y.get().normalize(draw_ctx);
diff --git a/tests/errors.c b/tests/errors.c
index f370d60..ab5898a 100644
--- a/tests/errors.c
+++ b/tests/errors.c
@@ -22,10 +22,29 @@ get_test_filename (const char *basename) {
basename,
NULL);
}
+
+static void
+test_loading_error (gconstpointer data)
+{
+ const char *basename = data;
+ char *filename = get_test_filename (basename);
+ RsvgHandle *handle;
+ GError *error = NULL;
+
+ handle = rsvg_handle_new_from_file (filename, &error);
+ g_free (filename);
+
+ g_assert (handle == NULL);
+ g_assert (g_error_matches (error, RSVG_ERROR, RSVG_ERROR_FAILED));
+
+ g_error_free (error);
+}
+
static void
-test_instancing_limit (void)
+test_instancing_limit (gconstpointer data)
{
- char *filename = get_test_filename ("323-nested-use.svg");
+ const char *basename = data;
+ char *filename = get_test_filename (basename);
RsvgHandle *handle;
GError *error = NULL;
cairo_surface_t *surf;
@@ -49,7 +68,34 @@ main (int argc, char **argv)
{
g_test_init (&argc, &argv, NULL);
- g_test_add_func ("/errors/instancing_limit", test_instancing_limit);
+ g_test_add_data_func_full ("/errors/instancing_limit/323-nested-use.svg",
+ "323-nested-use.svg",
+ test_instancing_limit,
+ NULL);
+
+ g_test_add_data_func_full ("/errors/instancing_limit/515-pattern-billion-laughs.svg",
+ "515-pattern-billion-laughs.svg",
+ test_instancing_limit,
+ NULL);
+
+ g_test_add_data_func_full ("/errors/instancing_limit/308-use-self-ref.svg",
+ "308-use-self-ref.svg",
+ test_instancing_limit,
+ NULL);
+ g_test_add_data_func_full ("/errors/instancing_limit/308-recursive-use.svg",
+ "308-recursive-use.svg",
+ test_instancing_limit,
+ NULL);
+ g_test_add_data_func_full ("/errors/instancing_limit/308-doubly-recursive-use.svg",
+ "308-doubly-recursive-use.svg",
+ test_instancing_limit,
+ NULL);
+
+ g_test_add_data_func_full ("/errors/515-too-many-elements.svgz",
+ "515-too-many-elements.svgz",
+ test_loading_error,
+ NULL);
+
return g_test_run ();
}
diff --git a/tests/fixtures/errors/308-doubly-recursive-use.svg b/tests/fixtures/errors/308-doubly-recursive-use.svg
new file mode 100644
index 0000000..9b248a6
--- /dev/null
+++ b/tests/fixtures/errors/308-doubly-recursive-use.svg
@@ -0,0 +1,13 @@
+<svg>
+ <defs>
+ <g id="one">
+ <use xlink:href="#two"/>
+ </g>
+
+ <g id="two">
+ <use xlink:href="#one"/>
+ </g>
+ </defs>
+
+ <use xlink:href="#one"/>
+</svg>
diff --git a/tests/fixtures/errors/308-recursive-use.svg b/tests/fixtures/errors/308-recursive-use.svg
new file mode 100644
index 0000000..f5d00bf
--- /dev/null
+++ b/tests/fixtures/errors/308-recursive-use.svg
@@ -0,0 +1,9 @@
+<svg>
+ <defs>
+ <g id="one">
+ <use xlink:href="#one"/>
+ </g>
+ </defs>
+
+ <use xlink:href="#one"/>
+</svg>
diff --git a/tests/fixtures/errors/308-use-self-ref.svg b/tests/fixtures/errors/308-use-self-ref.svg
new file mode 100644
index 0000000..dbf14c5
--- /dev/null
+++ b/tests/fixtures/errors/308-use-self-ref.svg
@@ -0,0 +1,7 @@
+<svg>
+ <defs>
+ <use id="one" xlink:href="#one"/>
+ </defs>
+
+ <use xlink:href="#one"/>
+</svg>
diff --git a/tests/fixtures/errors/515-pattern-billion-laughs.svg b/tests/fixtures/errors/515-pattern-billion-laughs.svg
new file mode 100644
index 0000000..a306960
--- /dev/null
+++ b/tests/fixtures/errors/515-pattern-billion-laughs.svg
@@ -0,0 +1,130 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
+ "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg width="40cm" height="20cm" viewBox="0 0 800 400" version="1.1"
+ xmlns="http://www.w3.org/2000/svg">
+ <defs>
+ <pattern id="z" x="0" y="0" width="20" height="20" patternUnits="userSpaceOnUse" patternTransform="scale(10,10)">
+ <rect x="0" y="0" width="20" height="20" fill="url(#i)" stroke="yellow"/>
+ </pattern>
+
+ <pattern id="i" x="0" y="0" width="20" height="20" patternUnits="userSpaceOnUse" patternTransform="scale(0.5,0.5)">
+ <rect x="0" y="0" width="20" height="20" fill="url(#h)" stroke="green" />
+ <rect x="1" y="1" width="20" height="20" fill="url(#h)" stroke="brown" />
+ <rect x="2" y="2" width="20" height="20" fill="url(#h)" stroke="pink" />
+ <rect x="3" y="3" width="20" height="20" fill="url(#h)" stroke="grey" />
+ <rect x="4" y="3" width="20" height="20" fill="url(#h)" stroke="cyan" />
+ <rect x="5" y="3" width="20" height="20" fill="url(#h)" stroke="green" />
+ <rect x="6" y="3" width="20" height="20" fill="url(#h)" stroke="brown" />
+ <rect x="7" y="3" width="20" height="20" fill="url(#h)" stroke="pink" />
+ <rect x="8" y="3" width="20" height="20" fill="url(#h)" stroke="grey" />
+ <rect x="9" y="3" width="20" height="20" fill="url(#h)" stroke="cyan" />
+ </pattern>
+
+ <pattern id="h" x="0" y="0" width="20" height="20" patternUnits="userSpaceOnUse" patternTransform="scale(0.5,0.5)">
+ <rect x="0" y="0" width="20" height="20" fill="url(#g)" stroke="green" />
+ <rect x="1" y="1" width="20" height="20" fill="url(#g)" stroke="brown" />
+ <rect x="2" y="2" width="20" height="20" fill="url(#g)" stroke="pink" />
+ <rect x="3" y="3" width="20" height="20" fill="url(#g)" stroke="grey" />
+ <rect x="4" y="3" width="20" height="20" fill="url(#g)" stroke="cyan" />
+ <rect x="5" y="3" width="20" height="20" fill="url(#g)" stroke="green" />
+ <rect x="6" y="3" width="20" height="20" fill="url(#g)" stroke="brown" />
+ <rect x="7" y="3" width="20" height="20" fill="url(#g)" stroke="pink" />
+ <rect x="8" y="3" width="20" height="20" fill="url(#g)" stroke="grey" />
+ <rect x="9" y="3" width="20" height="20" fill="url(#g)" stroke="cyan" />
+ </pattern>
+
+ <pattern id="g" x="0" y="0" width="20" height="20" patternUnits="userSpaceOnUse" patternTransform="scale(0.5,0.5)">
+ <rect x="0" y="0" width="20" height="20" fill="url(#f)" stroke="green" />
+ <rect x="1" y="1" width="20" height="20" fill="url(#f)" stroke="brown" />
+ <rect x="2" y="2" width="20" height="20" fill="url(#f)" stroke="pink" />
+ <rect x="3" y="3" width="20" height="20" fill="url(#f)" stroke="grey" />
+ <rect x="4" y="3" width="20" height="20" fill="url(#f)" stroke="cyan" />
+ <rect x="5" y="3" width="20" height="20" fill="url(#f)" stroke="green" />
+ <rect x="6" y="3" width="20" height="20" fill="url(#f)" stroke="brown" />
+ <rect x="7" y="3" width="20" height="20" fill="url(#f)" stroke="pink" />
+ <rect x="8" y="3" width="20" height="20" fill="url(#f)" stroke="grey" />
+ <rect x="9" y="3" width="20" height="20" fill="url(#f)" stroke="cyan" />
+ </pattern>
+
+ <pattern id="f" x="0" y="0" width="20" height="20" patternUnits="userSpaceOnUse" patternTransform="scale(0.5,0.5)">
+ <rect x="0" y="0" width="20" height="20" fill="url(#e)" stroke="green" />
+ <rect x="1" y="1" width="20" height="20" fill="url(#e)" stroke="brown" />
+ <rect x="2" y="2" width="20" height="20" fill="url(#e)" stroke="pink" />
+ <rect x="3" y="3" width="20" height="20" fill="url(#e)" stroke="grey" />
+ <rect x="4" y="3" width="20" height="20" fill="url(#e)" stroke="cyan" />
+ <rect x="5" y="3" width="20" height="20" fill="url(#e)" stroke="green" />
+ <rect x="6" y="3" width="20" height="20" fill="url(#e)" stroke="brown" />
+ <rect x="7" y="3" width="20" height="20" fill="url(#e)" stroke="pink" />
+ <rect x="8" y="3" width="20" height="20" fill="url(#e)" stroke="grey" />
+ <rect x="9" y="3" width="20" height="20" fill="url(#e)" stroke="cyan" />
+ </pattern>
+
+ <pattern id="e" x="0" y="0" width="20" height="20" patternUnits="userSpaceOnUse" patternTransform="scale(0.5,0.5)">
+ <rect x="0" y="0" width="20" height="20" fill="url(#d)" stroke="green" />
+ <rect x="1" y="1" width="20" height="20" fill="url(#d)" stroke="brown" />
+ <rect x="2" y="2" width="20" height="20" fill="url(#d)" stroke="pink" />
+ <rect x="3" y="3" width="20" height="20" fill="url(#d)" stroke="grey" />
+ <rect x="4" y="3" width="20" height="20" fill="url(#d)" stroke="cyan" />
+ <rect x="5" y="3" width="20" height="20" fill="url(#d)" stroke="green" />
+ <rect x="6" y="3" width="20" height="20" fill="url(#d)" stroke="brown" />
+ <rect x="7" y="3" width="20" height="20" fill="url(#d)" stroke="pink" />
+ <rect x="8" y="3" width="20" height="20" fill="url(#d)" stroke="grey" />
+ <rect x="9" y="3" width="20" height="20" fill="url(#d)" stroke="cyan" />
+ </pattern>
+
+ <pattern id="d" x="0" y="0" width="20" height="20" patternUnits="userSpaceOnUse" patternTransform="scale(0.5,0.5)">
+ <rect x="0" y="0" width="20" height="20" fill="url(#c)" stroke="green" />
+ <rect x="1" y="1" width="20" height="20" fill="url(#c)" stroke="brown" />
+ <rect x="2" y="2" width="20" height="20" fill="url(#c)" stroke="pink" />
+ <rect x="3" y="3" width="20" height="20" fill="url(#c)" stroke="grey" />
+ <rect x="4" y="3" width="20" height="20" fill="url(#c)" stroke="cyan" />
+ <rect x="5" y="3" width="20" height="20" fill="url(#c)" stroke="green" />
+ <rect x="6" y="3" width="20" height="20" fill="url(#c)" stroke="brown" />
+ <rect x="7" y="3" width="20" height="20" fill="url(#c)" stroke="pink" />
+ <rect x="8" y="3" width="20" height="20" fill="url(#c)" stroke="grey" />
+ <rect x="9" y="3" width="20" height="20" fill="url(#c)" stroke="cyan" />
+ </pattern>
+ <pattern id="c" x="0" y="0" width="20" height="20" patternUnits="userSpaceOnUse" patternTransform="scale(0.5,0.5)">
+ <rect x="0" y="0" width="20" height="20" fill="url(#b)" stroke="green" />
+ <rect x="1" y="1" width="20" height="20" fill="url(#b)" stroke="brown" />
+ <rect x="2" y="2" width="20" height="20" fill="url(#b)" stroke="pink" />
+ <rect x="3" y="3" width="20" height="20" fill="url(#b)" stroke="grey" />
+ <rect x="4" y="3" width="20" height="20" fill="url(#b)" stroke="cyan" />
+ <rect x="5" y="3" width="20" height="20" fill="url(#b)" stroke="green" />
+ <rect x="6" y="3" width="20" height="20" fill="url(#b)" stroke="brown" />
+ <rect x="7" y="3" width="20" height="20" fill="url(#b)" stroke="pink" />
+ <rect x="8" y="3" width="20" height="20" fill="url(#b)" stroke="grey" />
+ <rect x="9" y="3" width="20" height="20" fill="url(#b)" stroke="cyan" />
+ </pattern>
+ <pattern id="b" x="0" y="0" width="20" height="20" patternUnits="userSpaceOnUse" patternTransform="scale(0.5,0.5)">
+ <rect x="0" y="0" width="20" height="20" fill="url(#a)" stroke="green" />
+ <rect x="1" y="1" width="20" height="20" fill="url(#a)" stroke="brown" />
+ <rect x="2" y="2" width="20" height="20" fill="url(#a)" stroke="pink" />
+ <rect x="3" y="3" width="20" height="20" fill="url(#a)" stroke="grey" />
+ <rect x="4" y="3" width="20" height="20" fill="url(#a)" stroke="cyan" />
+ <rect x="5" y="3" width="20" height="20" fill="url(#a)" stroke="green" />
+ <rect x="6" y="3" width="20" height="20" fill="url(#a)" stroke="brown" />
+ <rect x="7" y="3" width="20" height="20" fill="url(#a)" stroke="pink" />
+ <rect x="8" y="3" width="20" height="20" fill="url(#a)" stroke="grey" />
+ <rect x="9" y="3" width="20" height="20" fill="url(#a)" stroke="cyan" />
+
+ </pattern>
+ <pattern id="a" x="0" y="0" width="20" height="20" patternUnits="userSpaceOnUse" patternTransform="scale(0.5,0.5)">
+ <rect x="0" y="0" width="20" height="20" fill="none" stroke="green" />
+ <rect x="1" y="1" width="20" height="20" fill="none" stroke="brown" />
+ <rect x="2" y="2" width="20" height="20" fill="none" stroke="pink" />
+ <rect x="3" y="3" width="20" height="20" fill="none" stroke="grey" />
+ <rect x="4" y="3" width="20" height="20" fill="none" stroke="cyan" />
+ <rect x="5" y="3" width="20" height="20" fill="none" stroke="green" />
+ <rect x="6" y="3" width="20" height="20" fill="none" stroke="brown" />
+ <rect x="7" y="3" width="20" height="20" fill="none" stroke="pink" />
+ <rect x="8" y="3" width="20" height="20" fill="none" stroke="grey" />
+ <rect x="9" y="3" width="20" height="20" fill="none" stroke="cyan" />
+ </pattern>
+ </defs>
+
+ <ellipse fill="url(#z)" stroke="black" stroke-width="5"
+ cx="400" cy="200" rx="350" ry="150" />
+
+</svg>
\ No newline at end of file
diff --git a/tests/fixtures/errors/515-too-many-elements.svgz b/tests/fixtures/errors/515-too-many-elements.svgz
new file mode 100644
index 0000000000000000000000000000000000000000..a7f7cf678ca2f29af6df61078d1c6a86c73c2d1a
GIT binary patch
literal 40811
zcmeIuO)I1U007{3c1mhf$VD-7q(+J1MDM}L%|UFTsL8?1JBN{yP&im}QQ{&|QhvZj
zljI=9MY%ail5kSH<)g@tkhY%ZCp<Na#l^QJoBcoHsm4@tG?z<e2cz+1I+M<(qtSdr
zerz~+JUc3x2`j>*LibxH_PE;`Ph^fuo4Xpr-qW6!wVUeOr_1r`p~-)LTcZB@uIs(k
zp^3xx{A%Lt>ENbsBzwPKxl_B*S@%4>{ZPBL{_?u~dmaM@3>YwAz<>b*1`HT5V8DO@
z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*Vq
ziwEvbqN?)X)ARdf*>V8`1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*
z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA;JXJdqN<A^m<@v0;iCA@vC?p6
zYVLd>)r0{91`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>f$?1`2;_+E#M0g<n@o
I9YGlT0Agk%tpET3
literal 0
HcmV?d00001
--
2.26.2

View File

@ -1,81 +0,0 @@
From 2346aa25ba6379db5a754f2cb7171e85cba5dda3 Mon Sep 17 00:00:00 2001
From: rpm-build <rpm-build>
Date: Fri, 15 May 2020 14:56:59 -0500
Subject: [PATCH] cssparser build fix
---
vendor/cssparser/.cargo-checksum.json | 2 +-
vendor/cssparser/src/parser.rs | 48 +++++++++++++++------------
2 files changed, 28 insertions(+), 22 deletions(-)
diff --git a/vendor/cssparser/.cargo-checksum.json b/vendor/cssparser/.cargo-checksum.json
index 246bb70..713372d 100644
--- a/vendor/cssparser/.cargo-checksum.json
+++ b/vendor/cssparser/.cargo-checksum.json
@@ -1 +1 @@
-{"files":{".cargo-ok":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",".travis.yml":"f1fb4b65964c81bc1240544267ea334f554ca38ae7a74d57066f4d47d2b5d568","Cargo.toml":"7807f16d417eb1a6ede56cd4ba2da6c5c63e4530289b3f0848f4b154e18eba02","LICENSE":"fab3dd6bdab226f1c08630b1dd917e11fcb4ec5e1e020e2c16f83a0a13863e85","README.md":"c5781e673335f37ed3d7acb119f8ed33efdf6eb75a7094b7da2abe0c3230adb8","build.rs":"b29fc57747f79914d1c2fb541e2bb15a003028bb62751dcb901081ccc174b119","build/match_byte.rs":"2c84b8ca5884347d2007f49aecbd85b4c7582085526e2704399817249996e19b","docs/.nojekyll":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","docs/404.html":"025861f76f8d1f6d67c20ab624c6e418f4f824385e2dd8ad8732c4ea563c6a2e","docs/index.html":"025861f76f8d1f6d67c20ab624c6e418f4f824385e2dd8ad8732c4ea563c6a2e","src/color.rs":"c60f1b0ab7a2a6213e434604ee33f78e7ef74347f325d86d0b9192d8225ae1cc","src/cow_rc_str.rs":"541216f8ef74ee3cc5cbbc1347e5f32ed66588c401851c9a7d68b867aede1de0","src/from_bytes.rs":"331fe63af2123ae3675b61928a69461b5ac77799fff3ce9978c55cf2c558f4ff","src/lib.rs":"46c377e0c9a75780d5cb0bcf4dfb960f0fb2a996a13e7349bb111b9082252233","src/macros.rs":"adb9773c157890381556ea83d7942dcc676f99eea71abbb6afeffee1e3f28960","src/nth.rs":"5c70fb542d1376cddab69922eeb4c05e4fcf8f413f27563a2af50f72a47c8f8c","src/parser.rs":"9ed4aec998221eb2d2ba99db2f9f82a02399fb0c3b8500627f68f5aab872adde","src/rules_and_declarations.rs":"be2c4f3f3bb673d866575b6cb6084f1879dff07356d583ca9a3595f63b7f916f","src/serializer.rs":"4ccfc9b4fe994aab3803662bbf31cc25052a6a39531073a867b14b224afe42dd","src/size_of_tests.rs":"e5f63c8c18721cc3ff7a5407e84f9889ffa10e66da96e8510a696c3e00ad72d5","src/tests.rs":"80b02c80ab0fd580dad9206615c918e0db7dff63dfed0feeedb66f317d24b24b","src/tokenizer.rs":"429b2cba419cf8b923fbcc32d3bd34c0b39284ebfcb9fc29b8eb8643d8d5f312","src/unicode_range.rs":"c1c4ed2493e09d248c526ce1ef8575a5f8258da3962b64ffc814ef3bdf9780d0"},"package":"8a807ac3ab7a217829c2a3b65732b926b2befe6a35f33b4bf8b503692430f223"}
\ No newline at end of file
+{"files":{},"package":"8a807ac3ab7a217829c2a3b65732b926b2befe6a35f33b4bf8b503692430f223"}
diff --git a/vendor/cssparser/src/parser.rs b/vendor/cssparser/src/parser.rs
index 76736a8..8ffa18c 100644
--- a/vendor/cssparser/src/parser.rs
+++ b/vendor/cssparser/src/parser.rs
@@ -555,28 +555,34 @@ impl<'i: 't, 't> Parser<'i, 't> {
}
let token_start_position = self.input.tokenizer.position();
- let token;
- match self.input.cached_token {
- Some(ref cached_token)
- if cached_token.start_position == token_start_position => {
- self.input.tokenizer.reset(&cached_token.end_state);
- match cached_token.token {
- Token::Function(ref name) => self.input.tokenizer.see_function(name),
- _ => {}
- }
- token = &cached_token.token
+ let using_cached_token = self
+ .input
+ .cached_token
+ .as_ref()
+ .map_or(false, |cached_token| {
+ cached_token.start_position == token_start_position
+ });
+ let token = if using_cached_token {
+ let cached_token = self.input.cached_token.as_ref().unwrap();
+ self.input.tokenizer.reset(&cached_token.end_state);
+ match cached_token.token {
+ Token::Function(ref name) => self.input.tokenizer.see_function(name),
+ _ => {}
}
- _ => {
- let new_token = self.input.tokenizer.next()
- .map_err(|()| self.new_basic_error(BasicParseErrorKind::EndOfInput))?;
- self.input.cached_token = Some(CachedToken {
- token: new_token,
- start_position: token_start_position,
- end_state: self.input.tokenizer.state(),
- });
- token = self.input.cached_token_ref()
- }
- }
+ &cached_token.token
+ } else {
+ let new_token = self
+ .input
+ .tokenizer
+ .next()
+ .map_err(|()| self.new_basic_error(BasicParseErrorKind::EndOfInput))?;
+ self.input.cached_token = Some(CachedToken {
+ token: new_token,
+ start_position: token_start_position,
+ end_state: self.input.tokenizer.state(),
+ });
+ self.input.cached_token_ref()
+ };
if let Some(block_type) = BlockType::opening(token) {
self.at_start_of = Some(block_type);
--
2.26.2

View File

@ -1,221 +1,256 @@
# https://github.com/rust-lang/rust/issues/47714 * Thu Jul 20 2023 Fedora Release Engineering <releng@fedoraproject.org> - 2.56.90-2
%undefine _strict_symbol_defs_build - Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild
# We want verbose builds * Sat Jul 01 2023 Kalev Lember <klember@redhat.com> - 2.56.2-1
%global _configure_disable_silent_rules 1 - Update to 2.56.2
# Use bundled deps as we don't ship the exact right versions for all the * Wed May 31 2023 Kalev Lember <klember@redhat.com> - 2.56.1-1
# required rust libraries - Update to 2.56.1
%global bundled_rust_deps 1
Name: librsvg2 * Thu Apr 27 2023 Yaakov Selkowitz <yselkowi@redhat.com> - 2.56.0-2
Summary: An SVG library based on cairo - Use bundled dependencies in RHEL builds
Version: 2.42.7
Release: 5%{?dist}
License: LGPLv2+ * Wed Mar 29 2023 Kalev Lember <klember@redhat.com> - 2.56.0-1
URL: https://wiki.gnome.org/Projects/LibRsvg - Update to 2.56.0
Source0: https://download.gnome.org/sources/librsvg/2.42/librsvg-%{version}.tar.xz
# https://bugzilla.redhat.com/show_bug.cgi?id=1804519 * Thu Mar 02 2023 Kalev Lember <klember@redhat.com> - 2.55.90-1
# https://gitlab.gnome.org/GNOME/librsvg/-/issues/515 - Update to 2.55.90
Patch0: CVE-2019-20446.patch
# https://github.com/servo/rust-cssparser/pull/245
Patch1: fix-cssparser-build.patch
# https://issues.redhat.com/browse/RHEL-635
Patch2: 0001-Upgrade-to-procedural-masquerade-0.1.7.patch
BuildRequires: chrpath * Sun Feb 05 2023 Fabio Valentini <decathorpe@gmail.com> - 2.55.1-5
BuildRequires: gcc - Rebuild for fixed frame pointer compiler flags in Rust RPM macros.
BuildRequires: git-core
BuildRequires: gobject-introspection-devel
BuildRequires: pkgconfig(cairo)
BuildRequires: pkgconfig(cairo-png)
BuildRequires: pkgconfig(fontconfig)
BuildRequires: pkgconfig(gdk-pixbuf-2.0)
BuildRequires: pkgconfig(gio-2.0)
BuildRequires: pkgconfig(gio-unix-2.0)
BuildRequires: pkgconfig(glib-2.0)
BuildRequires: pkgconfig(gthread-2.0)
BuildRequires: pkgconfig(gtk+-3.0)
BuildRequires: pkgconfig(libcroco-0.6)
BuildRequires: pkgconfig(libxml-2.0)
BuildRequires: pkgconfig(pangocairo)
BuildRequires: pkgconfig(pangoft2)
BuildRequires: vala
%if 0%{?bundled_rust_deps}
BuildRequires: cargo
BuildRequires: rust
%else
BuildRequires: rust-packaging
# [dependencies]
BuildRequires: (crate(cairo-rs) >= 0.3.0 with crate(cairo-rs) < 0.4.0)
BuildRequires: (crate(cairo-sys-rs) >= 0.5.0 with crate(cairo-sys-rs) < 0.6.0)
BuildRequires: (crate(cssparser) >= 0.23.0 with crate(cssparser) < 0.24.0)
BuildRequires: (crate(downcast-rs) >= 1.0.0 with crate(downcast-rs) < 2.0.0)
BuildRequires: (crate(glib) >= 0.4.0 with crate(glib) < 0.5.0)
BuildRequires: (crate(glib-sys) >= 0.5.0 with crate(glib-sys) < 0.6.0)
BuildRequires: (crate(itertools) >= 0.7.4 with crate(itertools) < 0.8.0)
BuildRequires: (crate(libc) >= 0.2.0 with crate(libc) < 0.3.0)
BuildRequires: (crate(pango) >= 0.3.0 with crate(pango) < 0.4.0)
BuildRequires: (crate(pango-sys) >= 0.5.0 with crate(pango-sys) < 0.6.0)
BuildRequires: (crate(regex) >= 0.2.1 with crate(regex) < 0.3.0)
%endif
# We install a gdk-pixbuf svg loader * Thu Jan 19 2023 Fedora Release Engineering <releng@fedoraproject.org> - 2.55.1-4
Requires: gdk-pixbuf2%{?_isa} - Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild
%if 0%{?bundled_rust_deps} * Fri Nov 25 2022 Kalev Lember <klember@redhat.com> - 2.55.1-3
# Basically everything apart from Windows and Fuchsia specific things - Build against rust-lopdf 0.29.0 and rust-yeslogic-fontconfig-sys 4.0.1
Provides: bundled(crate(aho-corasick)) = 0.6.4
Provides: bundled(crate(bitflags)) = 0.9.1
Provides: bundled(crate(bitflags)) = 1.0.1
Provides: bundled(crate(c_vec)) = 1.2.1
Provides: bundled(crate(cairo-rs)) = 0.3.0
Provides: bundled(crate(cairo-sys-rs)) = 0.5.0
Provides: bundled(crate(cssparser)) = 0.23.2
Provides: bundled(crate(cssparser-macros)) = 0.3.2
Provides: bundled(crate(downcast-rs)) = 1.0.1
Provides: bundled(crate(dtoa)) = 0.4.2
Provides: bundled(crate(dtoa-short)) = 0.3.2
Provides: bundled(crate(either)) = 1.4.0
Provides: bundled(crate(float-cmp)) = 0.4.0
Provides: bundled(crate(glib)) = 0.4.1
Provides: bundled(crate(glib-sys)) = 0.5.0
Provides: bundled(crate(gobject-sys)) = 0.5.0
Provides: bundled(crate(itertools)) = 0.7.7
Provides: bundled(crate(itoa)) = 0.3.4
Provides: bundled(crate(lazy_static)) = 1.0.0
Provides: bundled(crate(libc)) = 0.2.39
Provides: bundled(crate(matches)) = 0.1.6
Provides: bundled(crate(memchr)) = 2.0.1
Provides: bundled(crate(num-traits)) = 0.2.1
Provides: bundled(crate(pango)) = 0.3.0
Provides: bundled(crate(pango-sys)) = 0.5.0
Provides: bundled(crate(pangocairo)) = 0.4.1
Provides: bundled(crate(pangocairo-sys)) = 0.6.0
Provides: bundled(crate(phf)) = 0.7.21
Provides: bundled(crate(phf_codegen)) = 0.7.21
Provides: bundled(crate(phf_generator)) = 0.7.21
Provides: bundled(crate(phf_shared)) = 0.7.21
Provides: bundled(crate(pkg-config)) = 0.3.9
Provides: bundled(crate(proc-macro2)) = 0.2.3
Provides: bundled(crate(procedural-masquerade)) = 0.1.7
Provides: bundled(crate(quote)) = 0.3.15
Provides: bundled(crate(quote)) = 0.4.2
Provides: bundled(crate(rand)) = 0.3.22
Provides: bundled(crate(rand)) = 0.4.2
Provides: bundled(crate(regex)) = 0.2.7
Provides: bundled(crate(regex-syntax)) = 0.5.0
Provides: bundled(crate(siphasher)) = 0.2.2
Provides: bundled(crate(smallvec)) = 0.6.0
Provides: bundled(crate(syn)) = 0.11.11
Provides: bundled(crate(syn)) = 0.12.14
Provides: bundled(crate(synom)) = 0.11.3
Provides: bundled(crate(thread_local)) = 0.3.5
Provides: bundled(crate(ucd-util)) = 0.1.1
Provides: bundled(crate(unicode-xid)) = 0.0.4
Provides: bundled(crate(unicode-xid)) = 0.1.0
Provides: bundled(crate(unreachable)) = 1.0.0
Provides: bundled(crate(utf8-ranges)) = 1.0.0
Provides: bundled(crate(void)) = 1.0.2
%endif
%description * Mon Nov 21 2022 Kalev Lember <klember@redhat.com> - 2.55.1-2
An SVG library based on cairo. - Switch to packaged rust deps
%package devel * Tue Sep 06 2022 Kalev Lember <klember@redhat.com> - 2.55.1-1
Summary: Libraries and include files for developing with librsvg - Update to 2.55.1
Requires: %{name}%{?_isa} = %{version}-%{release}
%description devel * Sun Aug 28 2022 Kalev Lember <klember@redhat.com> - 2.54.5-1
This package provides the necessary development libraries and include - Update to 2.54.5
files to allow you to develop with librsvg.
%package tools * Thu Jul 21 2022 Fedora Release Engineering <releng@fedoraproject.org> - 2.54.4-2
Summary: Extra tools for librsvg - Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild
Requires: %{name}%{?_isa} = %{version}-%{release}
%description tools * Tue Jun 14 2022 David King <amigadave@amigadave.com> - 2.54.4-1
This package provides extra utilities based on the librsvg library. - Update to 2.54.4
%prep * Sat May 14 2022 David King <amigadave@amigadave.com> - 2.54.3-1
%autosetup -n librsvg-%{version} -p1 -S git - Update to 2.54.3
%if 0%{?bundled_rust_deps}
# Use the bundled deps, and enable release debuginfo
sed -i -e '/profile.release/a debug = true' Cargo.toml
%else
# No bundled deps
rm -vrf vendor
%cargo_prep
%endif
%build * Fri May 13 2022 David King <amigadave@amigadave.com> - 2.54.2-1
%configure --disable-static \ - Update to 2.54.2
--disable-gtk-doc \
--enable-introspection \
--enable-vala
%make_build
%install * Sun Apr 24 2022 David King <amigadave@amigadave.com> - 2.54.1-1
%make_install - Update to 2.54.1
find %{buildroot} -type f -name '*.la' -print -delete
# Remove lib64 rpaths * Thu Mar 17 2022 David King <amigadave@amigadave.com> - 2.54.0-1
chrpath --delete %{buildroot}%{_bindir}/rsvg-convert - Update to 2.54.0
chrpath --delete %{buildroot}%{_bindir}/rsvg-view-3
chrpath --delete %{buildroot}%{_libdir}/gdk-pixbuf-2.0/*/loaders/libpixbufloader-svg.so
# we install own docs * Mon Mar 14 2022 David King <amigadave@amigadave.com> - 2.53.2-1
rm -vrf %{buildroot}%{_datadir}/doc - Update to 2.53.2
%files * Mon Feb 14 2022 David King <amigadave@amigadave.com> - 2.53.1-1
%doc CONTRIBUTING.md README.md - Update to 2.53.1
%license COPYING COPYING.LIB
%{_libdir}/librsvg-2.so.*
%{_libdir}/gdk-pixbuf-2.0/*/loaders/libpixbufloader-svg.so
%dir %{_libdir}/girepository-1.0
%{_libdir}/girepository-1.0/Rsvg-2.0.typelib
%dir %{_datadir}/thumbnailers
%{_datadir}/thumbnailers/librsvg.thumbnailer
%files devel * Thu Jan 20 2022 Fedora Release Engineering <releng@fedoraproject.org> - 2.53.0-2
%{_libdir}/librsvg-2.so - Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild
%{_includedir}/librsvg-2.0/
%{_libdir}/pkgconfig/librsvg-2.0.pc
%dir %{_datadir}/gir-1.0
%{_datadir}/gir-1.0/Rsvg-2.0.gir
%dir %{_datadir}/vala
%dir %{_datadir}/vala/vapi
%{_datadir}/vala/vapi/librsvg-2.0.vapi
%dir %{_datadir}/gtk-doc
%dir %{_datadir}/gtk-doc/html
%{_datadir}/gtk-doc/html/rsvg-2.0
%files tools * Sun Jan 09 2022 David King <amigadave@amigadave.com> - 2.53.0-1
%{_bindir}/rsvg-convert - Update to 2.53.0
%{_bindir}/rsvg-view-3
%{_mandir}/man1/rsvg-convert.1*
%changelog * Mon Jan 03 2022 David King <amigadave@amigadave.com> - 2.52.5-1
* Tue Jun 20 2023 Tomas Popela <tpopela@redhat.com> - 2.42.7-5 - Update to 2.52.5
- Resolves: RHEL-635 Upgrade to procedural-masquerade 0.1.7 to fix FTBFS with newer Rust
- Resolves: RHEL-636 librsvg2 is missing Provides: bundled()
- Resolves: RHEL-637 Add git-core as a BR for autosetup
* Wed May 13 2020 Michael Catanzaro <mcatanzaro@redhat.com> - 2.42.7-4 * Sat Nov 13 2021 Kalev Lember <klember@redhat.com> - 2.52.4-1
- Resolves: rhbz#1804519 Add patch for CVE-2019-20446 - Update to 2.52.4
* Thu Dec 06 2018 Josh Stone <jistone@redhat.com> - 2.42.7-2 * Wed Oct 27 2021 Kalev Lember <klember@redhat.com> - 2.52.3-1
- Rebuild with the current rust-toolset - Update to 2.52.3
* Tue Sep 04 2018 Kalev Lember <klember@redhat.com> - 2.42.7-1 * Tue Oct 05 2021 Kalev Lember <klember@redhat.com> - 2.52.1-1
- Update to 2.42.7 - Update to 2.52.1
* Wed Aug 08 2018 Kalev Lember <klember@redhat.com> - 2.42.6-1 * Thu Jul 22 2021 Fedora Release Engineering <releng@fedoraproject.org> - 2.50.7-2
- Update to 2.42.6 - Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild
* Mon Jun 21 2021 Kalev Lember <klember@redhat.com> - 2.50.7-1
- Update to 2.50.7
* Tue May 25 2021 Kalev Lember <klember@redhat.com> - 2.50.6-1
- Update to 2.50.6
* Wed May 05 2021 Kalev Lember <klember@redhat.com> - 2.50.5-1
- Update to 2.50.5
* Tue Apr 13 2021 Kalev Lember <klember@redhat.com> - 2.50.4-1
- Update to 2.50.4
* Thu Jan 28 2021 Kalev Lember <klember@redhat.com> - 2.50.3-1
- Update to 2.50.3
* Tue Jan 26 2021 Fedora Release Engineering <releng@fedoraproject.org> - 2.50.2-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild
* Wed Nov 25 2020 Kalev Lember <klember@redhat.com> - 2.50.2-1
- Update to 2.50.2
* Mon Oct 5 2020 Kalev Lember <klember@redhat.com> - 2.50.1-1
- Update to 2.50.1
* Fri Sep 11 2020 Kalev Lember <klember@redhat.com> - 2.50.0-1
- Update to 2.50.0
* Tue Jul 28 2020 Fedora Release Engineering <releng@fedoraproject.org> - 2.48.8-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild
* Mon Jul 20 2020 Kalev Lember <klember@redhat.com> - 2.48.8-1
- Update to 2.48.8
* Fri Jun 05 2020 Kalev Lember <klember@redhat.com> - 2.48.7-1
- Update to 2.48.7
* Tue Jun 02 2020 Kalev Lember <klember@redhat.com> - 2.48.6-1
- Update to 2.48.6
* Mon Jun 01 2020 Kalev Lember <klember@redhat.com> - 2.48.5-1
- Update to 2.48.5
* Fri Apr 24 2020 Kalev Lember <klember@redhat.com> - 2.48.4-1
- Update to 2.48.4
* Fri Apr 10 2020 Kalev Lember <klember@redhat.com> - 2.48.3-1
- Update to 2.48.3
* Tue Mar 31 2020 Kalev Lember <klember@redhat.com> - 2.48.2-1
- Update to 2.48.2
* Sat Mar 28 2020 Kalev Lember <klember@redhat.com> - 2.48.1-1
- Update to 2.48.1
* Sat Mar 07 2020 Kalev Lember <klember@redhat.com> - 2.48.0-1
- Update to 2.48.0
* Wed Jan 29 2020 Fedora Release Engineering <releng@fedoraproject.org> - 2.46.4-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild
* Wed Nov 27 2019 Kalev Lember <klember@redhat.com> - 2.46.4-1
- Update to 2.46.4
* Wed Oct 23 2019 Kalev Lember <klember@redhat.com> - 2.46.3-1
- Update to 2.46.3
* Mon Oct 14 2019 Kalev Lember <klember@redhat.com> - 2.46.2-1
- Update to 2.46.2
* Mon Oct 07 2019 Kalev Lember <klember@redhat.com> - 2.46.1-1
- Update to 2.46.1
* Fri Sep 20 2019 Kalev Lember <klember@redhat.com> - 2.46.0-2
- Backport a patch to fix svg rendering in gnome-initial-setup (#1753183)
* Mon Sep 09 2019 Kalev Lember <klember@redhat.com> - 2.46.0-1
- Update to 2.46.0
* Tue Sep 03 2019 Kalev Lember <klember@redhat.com> - 2.45.92-1
- Update to 2.45.92
* Mon Aug 19 2019 Kalev Lember <klember@redhat.com> - 2.45.91-1
- Update to 2.45.91
* Sun Aug 04 2019 Pete Walter <pwalter@fedoraproject.org> - 2.45.90-1
- Update to 2.45.90
* Fri Jul 26 2019 Pete Walter <pwalter@fedoraproject.org> - 2.45.8-1
- Update to 2.45.8
* Thu Jul 25 2019 Fedora Release Engineering <releng@fedoraproject.org> - 2.45.7-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild
* Mon Jul 08 2019 Kalev Lember <klember@redhat.com> - 2.45.7-1
- Update to 2.45.7
* Tue May 14 2019 Kalev Lember <klember@redhat.com> - 2.45.6-1
- Update to 2.45.6
* Wed Mar 13 2019 Kalev Lember <klember@redhat.com> - 2.45.5-4
- Go back to using bundled rust deps
* Tue Feb 19 2019 Kalev Lember <klember@redhat.com> - 2.45.5-3
- Rebuilt against fixed atk (#1626575)
* Tue Feb 19 2019 Igor Gnatenko <ignatenkobrain@fedoraproject.org> - 2.45.5-2
- Unbundle Rust deps
* Sat Feb 16 2019 Kalev Lember <klember@redhat.com> - 2.45.5-1
- Update to 2.45.5
* Fri Feb 01 2019 Fedora Release Engineering <releng@fedoraproject.org> - 2.45.4-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild
* Wed Jan 09 2019 Kalev Lember <klember@redhat.com> - 2.45.4-1
- Update to 2.45.4
* Wed Jan 09 2019 Kalev Lember <klember@redhat.com> - 2.45.3-2
- Fix accidental soname bump
* Wed Jan 09 2019 Kalev Lember <klember@redhat.com> - 2.45.3-1
- Update to 2.45.3
* Sat Dec 29 2018 Kalev Lember <klember@redhat.com> - 2.44.11-1
- Update to 2.44.11
* Tue Dec 18 2018 Kalev Lember <klember@redhat.com> - 2.44.10-1
- Update to 2.44.10
* Wed Nov 14 2018 Kalev Lember <klember@redhat.com> - 2.44.9-1
- Update to 2.44.9
* Fri Oct 26 2018 Kalev Lember <klember@redhat.com> - 2.44.8-1
- Update to 2.44.8
* Tue Oct 09 2018 Kalev Lember <klember@redhat.com> - 2.44.7-1
- Update to 2.44.7
* Fri Sep 28 2018 Kalev Lember <klember@redhat.com> - 2.44.6-1
- Update to 2.44.6
* Wed Sep 26 2018 Kalev Lember <klember@redhat.com> - 2.44.4-1
- Update to 2.44.4
* Thu Sep 20 2018 Kalev Lember <klember@redhat.com> - 2.44.3-1
- Update to 2.44.3
* Fri Sep 07 2018 Kalev Lember <klember@redhat.com> - 2.44.2-2
- Rebuilt against fixed atk (#1626575)
* Wed Sep 05 2018 Kalev Lember <klember@redhat.com> - 2.44.2-1
- Update to 2.44.2
* Wed Aug 08 2018 Kalev Lember <klember@redhat.com> - 2.43.4-1
- Update to 2.43.4
- Use bundled rust deps - Use bundled rust deps
* Fri Jul 13 2018 Fedora Release Engineering <releng@fedoraproject.org> - 2.43.1-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild
* Sun Jul 01 2018 Igor Gnatenko <ignatenkobrain@fedoraproject.org> - 2.43.1-2
- Bump cssparser to 0.24
* Sun Jun 24 2018 Igor Gnatenko <ignatenkobrain@fedoraproject.org> - 2.43.1-1
- Update to 2.43.1
* Tue May 08 2018 Igor Gnatenko <ignatenkobrain@fedoraproject.org> - 2.42.4-1
- Update to 2.42.4
* Thu May 03 2018 Josh Stone <jistone@redhat.com> - 2.42.3-2
- Update rust dependencies.
* Mon Mar 05 2018 Kalev Lember <klember@redhat.com> - 2.42.3-1 * Mon Mar 05 2018 Kalev Lember <klember@redhat.com> - 2.42.3-1
- Update to 2.42.3 - Update to 2.42.3
@ -780,4 +815,3 @@ rm -vrf %{buildroot}%{_datadir}/doc
* Wed Apr 26 2000 Ramiro Estrugo <ramiro@eazel.com> * Wed Apr 26 2000 Ramiro Estrugo <ramiro@eazel.com>
- created this thing - created this thing

6
gating.yaml Normal file
View File

@ -0,0 +1,6 @@
--- !Policy
product_versions:
- rhel-10
decision_context: osci_compose_gate
rules:
- !PassingTestCaseRule {test_case_name: desktop-qe.desktop-ci.tier1-gating.functional}

192
librsvg2.spec Normal file
View File

@ -0,0 +1,192 @@
%bcond_without check
# https://github.com/rust-lang/rust/issues/47714
%undefine _strict_symbol_defs_build
# We want verbose builds
%global _configure_disable_silent_rules 1
# Use bundled deps as we don't ship the exact right versions for all the
# required rust libraries
%if 0%{?rhel}
%global bundled_rust_deps 1
%else
%global bundled_rust_deps 0
%endif
%global cairo_version 1.16.0
Name: librsvg2
Summary: An SVG library based on cairo
Version: 2.57.1
Release: %autorelease
# librsvg itself is LGPL-2.1-or-later
SourceLicense: LGPL-2.1-or-later
# ... and its crate dependencies are:
# (Apache-2.0 OR MIT) AND BSD-3-Clause
# (MIT OR Apache-2.0) AND Unicode-DFS-2016
# Apache-2.0
# Apache-2.0 OR MIT
# BSD-3-Clause
# LGPL-2.1-or-later
# MIT
# MIT OR Apache-2.0
# MIT OR Apache-2.0 OR Zlib
# MPL-2.0
# Unlicense OR MIT
# Zlib OR Apache-2.0 OR MIT
License: Apache-2.0 AND (Apache-2.0 OR MIT) AND BSD-3-Clause AND LGPL-2.1-or-later AND MIT AND (MIT OR Apache-2.0) AND (MIT OR Apache-2.0 OR Zlib) AND MPL-2.0 AND Unicode-DFS-2016 AND (Unlicense OR MIT) AND (Zlib OR Apache-2.0 OR MIT)
URL: https://wiki.gnome.org/Projects/LibRsvg
Source0: https://download.gnome.org/sources/librsvg/2.57/librsvg-%{version}.tar.xz
# upstream dropped vendoring since 2.55.0 (GNOME/librsvg#718), to create:
# tar xf librsvg-%%{version}.tar.xz ; pushd librsvg-%%{version} ; \
# cargo vendor && tar Jcvf ../librsvg-%%{version}-vendor.tar.xz vendor/ ; popd
Source1: librsvg-%{version}-vendor.tar.xz
%if ! 0%{?bundled_rust_deps}
# Patches to build with Fedora-packaged rust crates
Patch: 0001-Fedora-Drop-dependencies-required-for-benchmarking.patch
%endif
# skip a reference test where the reference image appears to have font issues
Patch: 0001-skip-broken-reference-tests.patch
BuildRequires: chrpath
BuildRequires: gcc
BuildRequires: gi-docgen
BuildRequires: gobject-introspection-devel
BuildRequires: make
BuildRequires: pkgconfig(cairo) >= %{cairo_version}
BuildRequires: pkgconfig(cairo-gobject) >= %{cairo_version}
BuildRequires: pkgconfig(cairo-png) >= %{cairo_version}
BuildRequires: pkgconfig(fontconfig)
BuildRequires: pkgconfig(gdk-pixbuf-2.0)
BuildRequires: pkgconfig(gio-2.0)
BuildRequires: pkgconfig(gio-unix-2.0)
BuildRequires: pkgconfig(glib-2.0)
BuildRequires: pkgconfig(gthread-2.0)
BuildRequires: pkgconfig(libxml-2.0)
BuildRequires: pkgconfig(pangocairo)
BuildRequires: pkgconfig(pangoft2)
BuildRequires: vala
BuildRequires: /usr/bin/rst2man
%if 0%{?bundled_rust_deps}
BuildRequires: rust-toolset
%else
BuildRequires: rust-packaging
%endif
Requires: cairo%{?_isa} >= %{cairo_version}
Requires: cairo-gobject%{?_isa} >= %{cairo_version}
Requires: rsvg-pixbuf-loader
%description
An SVG library based on cairo.
%package devel
Summary: Libraries and include files for developing with librsvg
Requires: %{name}%{?_isa} = %{version}-%{release}
%description devel
This package provides the necessary development libraries and include
files to allow you to develop with librsvg.
%package -n rsvg-pixbuf-loader
Summary: SVG image loader for gdk-pixbuf
Requires: gdk-pixbuf2%{?_isa}
Requires: %{name}%{?_isa} = %{version}-%{release}
%description -n rsvg-pixbuf-loader
This package provides a gdk-pixbuf plugin for loading SVG images in GTK apps.
%package tools
Summary: Extra tools for librsvg
Requires: %{name}%{?_isa} = %{version}-%{release}
%description tools
This package provides extra utilities based on the librsvg library.
%prep
%autosetup -n librsvg-%{version} -p1 %{?bundled_rust_deps:-a1}
%if 0%{?bundled_rust_deps}
# Use the bundled deps
%cargo_prep -v vendor
%else
# No bundled deps
rm -vrf vendor .cargo Cargo.lock
sed -i Makefile.am -e 's/$(CARGO) --locked/$(CARGO)/'
%cargo_prep
%endif
%if ! 0%{?bundled_rust_deps}
%generate_buildrequires
%cargo_generate_buildrequires
%endif
%build
export CARGO="%__cargo"
%configure --disable-static \
--enable-gtk-doc \
--docdir=%{_pkgdocdir} \
--enable-introspection \
--enable-vala
%make_build
%cargo_license_summary
%{cargo_license} > LICENSE.dependencies
%if 0%{?bundled_rust_deps}
%cargo_vendor_manifest
%endif
%install
%make_install
find %{buildroot} -type f -name '*.la' -print -delete
# Remove lib64 rpaths
chrpath --delete %{buildroot}%{_bindir}/rsvg-convert
chrpath --delete %{buildroot}%{_libdir}/gdk-pixbuf-2.0/*/loaders/libpixbufloader-svg.so
# Not useful in this package.
rm -f %{buildroot}%{_pkgdocdir}/COMPILING.md
%if %{with check}
%ifnarch s390x
%check
%make_build check
%endif
%endif
%files
%doc code-of-conduct.md NEWS README.md
%license COPYING.LIB
%license LICENSE.dependencies
%if 0%{?bundled_rust_deps}
%license cargo-vendor.txt
%endif
%{_libdir}/librsvg-2.so.*
%dir %{_libdir}/girepository-1.0
%{_libdir}/girepository-1.0/Rsvg-2.0.typelib
%files devel
%{_libdir}/librsvg-2.so
%{_includedir}/librsvg-2.0/
%{_libdir}/pkgconfig/librsvg-2.0.pc
%dir %{_datadir}/gir-1.0
%{_datadir}/gir-1.0/Rsvg-2.0.gir
%dir %{_datadir}/vala
%dir %{_datadir}/vala/vapi
%{_datadir}/vala/vapi/librsvg-2.0.vapi
%{_docdir}/Rsvg-2.0
%files -n rsvg-pixbuf-loader
%{_libdir}/gdk-pixbuf-2.0/*/loaders/libpixbufloader-svg.so
%dir %{_datadir}/thumbnailers
%{_datadir}/thumbnailers/librsvg.thumbnailer
%files tools
%{_bindir}/rsvg-convert
%{_mandir}/man1/rsvg-convert.1*
%changelog
%autochangelog

2
sources Normal file
View File

@ -0,0 +1,2 @@
SHA512 (librsvg-2.57.1.tar.xz) = e9a11cf93275c42446d9e5fd26603419be19b3c02f1dabab0ce97f1e98b8245c39bd1fbff7b6ab2b30640d16a5ecdfd381c17e289c20828eea5d4d086e8d56c6
SHA512 (librsvg-2.57.1-vendor.tar.xz) = cd770501d9049dad8ea61eb63b676ea4adf47cb0f2568d56aa3109384b768d3dc90269690bab4102c933332e3765bebcc82a97e1ebbfd338570efc7ca1129900