49 lines
1.6 KiB
Diff
49 lines
1.6 KiB
Diff
|
From 9a63168893a678f97fe6e3bfde2d6e5debf151c3 Mon Sep 17 00:00:00 2001
|
|||
|
From: Philip Withnall <pwithnall@endlessos.org>
|
|||
|
Date: Tue, 16 Mar 2021 13:34:13 +0000
|
|||
|
Subject: [PATCH 2/4] =?UTF-8?q?gs-appstream:=20Fix=20handling=20of=20icons?=
|
|||
|
=?UTF-8?q?=20where=20appdata=20doesn=E2=80=99t=20specify=20width?=
|
|||
|
MIME-Version: 1.0
|
|||
|
Content-Type: text/plain; charset=UTF-8
|
|||
|
Content-Transfer-Encoding: 8bit
|
|||
|
|
|||
|
If the `<icon>` element in the appdata doesn’t specify a `width`
|
|||
|
attribute, `xb_node_get_attr_as_uint()` will return `G_MAXUINT64`.
|
|||
|
However, its return value was being assigned to `sz`, which is a
|
|||
|
`guint`, and hence it was being truncated. This resulted in icons having
|
|||
|
their widths set to `G_MAXUINT`, and hence being prioritised for display
|
|||
|
when that was not necessarily correct.
|
|||
|
|
|||
|
Fix that by explicitly handling the failure response from
|
|||
|
`xb_node_get_attr_as_uint()`.
|
|||
|
|
|||
|
Signed-off-by: Philip Withnall <pwithnall@endlessos.org>
|
|||
|
|
|||
|
Fixes: #1171
|
|||
|
---
|
|||
|
plugins/core/gs-appstream.c | 8 ++++++--
|
|||
|
1 file changed, 6 insertions(+), 2 deletions(-)
|
|||
|
|
|||
|
diff --git a/plugins/core/gs-appstream.c b/plugins/core/gs-appstream.c
|
|||
|
index a9cf97270..22fed1154 100644
|
|||
|
--- a/plugins/core/gs-appstream.c
|
|||
|
+++ b/plugins/core/gs-appstream.c
|
|||
|
@@ -149,8 +149,12 @@ gs_appstream_new_icon (XbNode *component, XbNode *n, AsIconKind icon_kind, guint
|
|||
|
default:
|
|||
|
as_icon_set_name (icon, xb_node_get_text (n));
|
|||
|
}
|
|||
|
- if (sz == 0)
|
|||
|
- sz = xb_node_get_attr_as_uint (n, "width");
|
|||
|
+ if (sz == 0) {
|
|||
|
+ guint64 width = xb_node_get_attr_as_uint (n, "width");
|
|||
|
+ if (width > 0 && width < G_MAXUINT)
|
|||
|
+ sz = width;
|
|||
|
+ }
|
|||
|
+
|
|||
|
if (sz > 0) {
|
|||
|
as_icon_set_width (icon, sz);
|
|||
|
as_icon_set_height (icon, sz);
|
|||
|
--
|
|||
|
2.30.2
|
|||
|
|