Compare commits

...

10 Commits

Author SHA1 Message Date
openeuler-ci-bot
0ff8263233
!48 bugfix this.bind_property is not a function
From: @beta_dz 
Reviewed-by: @open-bot 
Signed-off-by: @open-bot
2024-09-27 02:31:27 +00:00
beta
aef0b3fcc1
bugfix this.bind_property is not a function
Signed-off-by: beta <beta@yfqm.date>
2023-12-01 21:27:53 +08:00
openeuler-ci-bot
1a7f2d3ed4
!46 add mutter so path to /etc/ld.so.conf.d
From: @beta_dz 
Reviewed-by: @open-bot 
Signed-off-by: @open-bot
2023-11-28 07:27:59 +00:00
beta
1f2460e574
add mutter so path to /etc/ld.so.conf.d
Signed-off-by: beta <beta@yfqm.date>
2023-11-27 15:15:30 +08:00
openeuler-ci-bot
7cb4b17170
!45 Remove rpath
From: @zhangxianting 
Reviewed-by: @open123bot 
Signed-off-by: @open123bot
2023-11-13 05:32:53 +00:00
zhangxianting
839a17a1f6 Remove rpath 2023-11-09 11:23:32 +08:00
openeuler-ci-bot
120c57f1c0 !35 fix CVE-2019-3820
From: @weijin-deng
Reviewed-by: @dwl301
Signed-off-by: @dwl301
2021-09-28 07:17:01 +00:00
weijin deng
544f698f9e add install require xdg-utils,fix CVE-2019-3820 2021-09-28 14:53:30 +08:00
openeuler-ci-bot
19bb89117f !22 [sync] PR-21: fix CVE-2020-17489
From: @openeuler-sync-bot
Reviewed-by: @small_leek
Signed-off-by: @small_leek
2021-04-02 08:48:39 +08:00
wang_yue111
d57d63b7ce fix CVE-2020-17489
(cherry picked from commit 69782fa1b457653ad04f4d7ffa9dbd883bd3ac77)
2021-04-01 19:28:31 +08:00
6 changed files with 545 additions and 2 deletions

30
CVE-2019-3820-1.patch Normal file
View File

@ -0,0 +1,30 @@
From 362444c782d205cba63987bc5996c475bf056597 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Florian=20M=C3=BCllner?= <fmuellner@gnome.org>
Date: Wed, 23 Jan 2019 23:55:12 +0100
Subject: [PATCH] panel: Don't allow opening hidden menus via keybindings
We shouldn't allow toggling menus that aren't supported by the
current session mode, but as indicators are hidden rather than
destroyed on mode switches, it is not enough to check for an
indicator's existence.
https://gitlab.gnome.org/GNOME/gnome-shell/issues/851
patch proved:
https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=921490
diff --git a/js/ui/panel.js b/js/ui/panel.js
index 318ca52..414994f 100644
--- a/js/ui/panel.js
+++ b/js/ui/panel.js
@@ -996,8 +996,8 @@ var Panel = new Lang.Class({
},
_toggleMenu(indicator) {
- if (!indicator) // menu not supported by current session mode
- return;
+ if (!indicator || !indicator.container.visible)
+ return; // menu not supported by current session mode
let menu = indicator.menu;
if (!indicator.actor.reactive)

91
CVE-2019-3820-2.patch Normal file
View File

@ -0,0 +1,91 @@
From 74b372212f649984b79337c7118495be29cd4871 Mon Sep 17 00:00:00 2001
From: Ray Strode <rstrode@redhat.com>
Date: Wed, 23 Jan 2019 15:59:42 -0500
Subject: [PATCH] shellActionModes: disable POPUP keybindings in lock screen
Certain keybindings should continue to work even when a popup
menu is on screen. For instance, the keybinding for showing
the app menu and the keyinding for showing the calendar are
examples.
This is achieved by putting in place a special "POPUP" action
mode, whenever a popup menu is active. This mode replaces
the (e.g., "NORMAL" or "OVERVIEW") action mode that was in place
for as long as the popup menu is active.
But those keybindings should not work when the user is at the
unlock dialog (which uses an action mode of "UNLOCK").
Unfortunately, right now they do.
This commit addresses the problem by using a compound action
mode when a popup menu is open at the unlock dialog (the bitwise
OR of POPUP and UNLOCK).
Closes https://gitlab.gnome.org/GNOME/gnome-shell/issues/851
patch proved:
https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=921490
diff --git a/js/gdm/authPrompt.js b/js/gdm/authPrompt.js
index a6a0374..ac441b1 100644
--- a/js/gdm/authPrompt.js
+++ b/js/gdm/authPrompt.js
@@ -11,6 +11,7 @@ const Animation = imports.ui.animation;
const Batch = imports.gdm.batch;
const GdmUtil = imports.gdm.util;
const Params = imports.misc.params;
+const Shell = imports.gi.Shell;
const ShellEntry = imports.ui.shellEntry;
const Tweener = imports.ui.tweener;
const UserWidget = imports.ui.userWidget;
@@ -99,7 +100,7 @@ var AuthPrompt = new Lang.Class({
x_align: St.Align.START });
this._entry = new St.Entry({ style_class: 'login-dialog-prompt-entry',
can_focus: true });
- ShellEntry.addContextMenu(this._entry, { isPassword: true });
+ ShellEntry.addContextMenu(this._entry, { isPassword: true, actionMode: Shell.ActionMode.NONE });
this.actor.add(this._entry,
{ expand: true,
diff --git a/js/gdm/loginDialog.js b/js/gdm/loginDialog.js
index 2f89140..1bf8d6f 100644
--- a/js/gdm/loginDialog.js
+++ b/js/gdm/loginDialog.js
@@ -342,7 +342,8 @@ var SessionMenuButton = new Lang.Class({
this._button.remove_style_pseudo_class('active');
});
- this._manager = new PopupMenu.PopupMenuManager({ actor: this._button });
+ this._manager = new PopupMenu.PopupMenuManager({ actor: this._button },
+ { actionMode: Shell.ActionMode.NONE });
this._manager.addMenu(this._menu);
this._button.connect('clicked', () => { this._menu.toggle(); });
diff --git a/js/ui/shellEntry.js b/js/ui/shellEntry.js
index 9db5136..09bb9bb 100644
--- a/js/ui/shellEntry.js
+++ b/js/ui/shellEntry.js
@@ -9,6 +9,7 @@ const BoxPointer = imports.ui.boxpointer;
const Main = imports.ui.main;
const Params = imports.misc.params;
const PopupMenu = imports.ui.popupMenu;
+const Shell = imports.gi.Shell;
var EntryMenu = new Lang.Class({
Name: 'ShellEntryMenu',
@@ -150,11 +151,12 @@ function addContextMenu(entry, params) {
if (entry.menu)
return;
- params = Params.parse (params, { isPassword: false });
+ params = Params.parse (params, { isPassword: false, actionMode: Shell.ActionMode.POPUP });
entry.menu = new EntryMenu(entry);
entry.menu.isPassword = params.isPassword;
- entry._menuManager = new PopupMenu.PopupMenuManager({ actor: entry });
+ entry._menuManager = new PopupMenu.PopupMenuManager({ actor: entry },
+ { actionMode: params.actionMode });
entry._menuManager.addMenu(entry.menu);
// Add an event handler to both the entry and its clutter_text; the former

265
CVE-2020-17489-pre1.patch Normal file
View File

@ -0,0 +1,265 @@
From e2f0647091b2475f78c0a52c0acef5f1be4d52d9 Mon Sep 17 00:00:00 2001
From: rpm-build <rpm-build>
Date: Tue, 30 Mar 2021 14:42:11 +0800
Subject: [PATCH] cleanup: Use arrow functions for tweener callbacks
While it is legal to use method syntax for the function properties
here, arrow notation is less unexpected and allows us to drop the
separate scope properties.
https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/608
---
js/gdm/authPrompt.js | 3 +--
js/gdm/loginDialog.js | 16 ++++++----------
js/ui/dnd.js | 5 ++---
js/ui/messageList.js | 3 +--
js/ui/panel.js | 8 +++-----
js/ui/popupMenu.js | 12 ++++--------
js/ui/screenShield.js | 15 ++++++---------
js/ui/workspaceSwitcherPopup.js | 3 +--
js/ui/workspaceThumbnail.js | 5 ++---
9 files changed, 26 insertions(+), 44 deletions(-)
diff --git a/js/gdm/authPrompt.js b/js/gdm/authPrompt.js
index a0a4a21..a6a0374 100644
--- a/js/gdm/authPrompt.js
+++ b/js/gdm/authPrompt.js
@@ -302,8 +302,7 @@ var AuthPrompt = new Lang.Class({
time: DEFAULT_BUTTON_WELL_ANIMATION_TIME,
delay: DEFAULT_BUTTON_WELL_ANIMATION_DELAY,
transition: 'linear',
- onCompleteScope: this,
- onComplete() {
+ onComplete: () => {
if (wasSpinner) {
if (this._spinner)
this._spinner.stop();
diff --git a/js/gdm/loginDialog.js b/js/gdm/loginDialog.js
index bf79677..0e0001f 100644
--- a/js/gdm/loginDialog.js
+++ b/js/gdm/loginDialog.js
@@ -926,7 +926,7 @@ var LoginDialog = new Lang.Class({
{ opacity: 255,
time: _FADE_ANIMATION_TIME,
transition: 'easeOutQuad',
- onUpdate() {
+ onUpdate: () => {
let children = Main.layoutManager.uiGroup.get_children();
for (let i = 0; i < children.length; i++) {
@@ -934,12 +934,10 @@ var LoginDialog = new Lang.Class({
children[i].opacity = this.actor.opacity;
}
},
- onUpdateScope: this,
- onComplete() {
+ onComplete: () => {
if (this._authPrompt.verificationStatus != AuthPrompt.AuthPromptStatus.NOT_VERIFYING)
this._authPrompt.reset();
- },
- onCompleteScope: this });
+ } });
},
_gotGreeterSessionProxy(proxy) {
@@ -956,7 +954,7 @@ var LoginDialog = new Lang.Class({
{ opacity: 0,
time: _FADE_ANIMATION_TIME,
transition: 'easeOutQuad',
- onUpdate() {
+ onUpdate: () => {
let children = Main.layoutManager.uiGroup.get_children();
for (let i = 0; i < children.length; i++) {
@@ -964,11 +962,9 @@ var LoginDialog = new Lang.Class({
children[i].opacity = this.actor.opacity;
}
},
- onUpdateScope: this,
- onComplete() {
+ onComplete: () => {
this._greeter.call_start_session_when_ready_sync(serviceName, true, null);
- },
- onCompleteScope: this });
+ } });
},
_onSessionOpened(client, serviceName) {
diff --git a/js/ui/dnd.js b/js/ui/dnd.js
index 8483e89..83778e0 100644
--- a/js/ui/dnd.js
+++ b/js/ui/dnd.js
@@ -385,14 +385,13 @@ var _Draggable = new Lang.Class({
scale_y: scale * origScale,
time: SCALE_ANIMATION_TIME,
transition: 'easeOutQuad',
- onUpdate() {
+ onUpdate: () => {
let currentScale = this._dragActor.scale_x / origScale;
this._dragOffsetX = currentScale * origDragOffsetX;
this._dragOffsetY = currentScale * origDragOffsetY;
this._dragActor.set_position(this._dragX + this._dragOffsetX,
this._dragY + this._dragOffsetY);
- },
- onUpdateScope: this });
+ } });
}
}
},
diff --git a/js/ui/messageList.js b/js/ui/messageList.js
index 547135a..91670ba 100644
--- a/js/ui/messageList.js
+++ b/js/ui/messageList.js
@@ -483,8 +483,7 @@ var Message = new Lang.Class({
{ scale_y: 0,
time: MessageTray.ANIMATION_TIME,
transition: 'easeOutQuad',
- onCompleteScope: this,
- onComplete() {
+ onComplete: () => {
this._actionBin.hide();
this.expanded = false;
}});
diff --git a/js/ui/panel.js b/js/ui/panel.js
index 3726b84..318ca52 100644
--- a/js/ui/panel.js
+++ b/js/ui/panel.js
@@ -174,10 +174,9 @@ var AppMenuButton = new Lang.Class({
{ opacity: 0,
time: Overview.ANIMATION_TIME,
transition: 'easeOutQuad',
- onComplete() {
+ onComplete: () => {
this.actor.hide();
- },
- onCompleteScope: this });
+ } });
},
_onStyleChanged(actor) {
@@ -219,8 +218,7 @@ var AppMenuButton = new Lang.Class({
{ opacity: 0,
time: SPINNER_ANIMATION_TIME,
transition: "easeOutQuad",
- onCompleteScope: this,
- onComplete() {
+ onComplete: () => {
this._spinner.stop();
this._spinner.actor.opacity = 255;
this._spinner.actor.hide();
diff --git a/js/ui/popupMenu.js b/js/ui/popupMenu.js
index f449d6e..3d92a1a 100644
--- a/js/ui/popupMenu.js
+++ b/js/ui/popupMenu.js
@@ -1004,12 +1004,10 @@ var PopupSubMenu = new Lang.Class({
{ _arrowRotation: targetAngle,
height: naturalHeight,
time: 0.25,
- onUpdateScope: this,
- onUpdate() {
+ onUpdate: () => {
this._arrow.rotation_angle_z = this.actor._arrowRotation;
},
- onCompleteScope: this,
- onComplete() {
+ onComplete: () => {
this.actor.set_height(-1);
}
});
@@ -1037,12 +1035,10 @@ var PopupSubMenu = new Lang.Class({
{ _arrowRotation: 0,
height: 0,
time: 0.25,
- onUpdateScope: this,
- onUpdate() {
+ onUpdate: () => {
this._arrow.rotation_angle_z = this.actor._arrowRotation;
},
- onCompleteScope: this,
- onComplete() {
+ onComplete: () => {
this.actor.hide();
this.actor.set_height(-1);
},
diff --git a/js/ui/screenShield.js b/js/ui/screenShield.js
index dee290b..72d1317 100644
--- a/js/ui/screenShield.js
+++ b/js/ui/screenShield.js
@@ -265,11 +265,10 @@ var NotificationsBox = new Lang.Class({
{ height: natHeight,
transition: 'easeOutQuad',
time: 0.25,
- onComplete() {
+ onComplete: () => {
this._scrollView.vscrollbar_policy = Gtk.PolicyType.AUTOMATIC;
widget.set_height(-1);
- },
- onCompleteScope: this
+ }
});
this._updateVisibility();
@@ -795,11 +794,10 @@ var ScreenShield = new Lang.Class({
{ y: 0,
time: time,
transition: 'easeInQuad',
- onComplete() {
+ onComplete: () => {
this._lockScreenGroup.fixed_position_set = false;
this._lockScreenState = MessageTray.State.SHOWN;
- },
- onCompleteScope: this,
+ }
});
this._maybeCancelDialog();
@@ -1020,11 +1018,10 @@ var ScreenShield = new Lang.Class({
{ y: 0,
time: MANUAL_FADE_TIME,
transition: 'easeOutQuad',
- onComplete() {
+ onComplete: () => {
this._lockScreenShown({ fadeToBlack: fadeToBlack,
animateFade: true });
- },
- onCompleteScope: this
+ }
});
} else {
this._lockScreenGroup.fixed_position_set = false;
diff --git a/js/ui/workspaceSwitcherPopup.js b/js/ui/workspaceSwitcherPopup.js
index 351a907..49caabc 100644
--- a/js/ui/workspaceSwitcherPopup.js
+++ b/js/ui/workspaceSwitcherPopup.js
@@ -159,8 +159,7 @@ var WorkspaceSwitcherPopup = new Lang.Class({
Tweener.addTween(this._container, { opacity: 0.0,
time: ANIMATION_TIME,
transition: 'easeOutQuad',
- onComplete() { this.destroy(); },
- onCompleteScope: this
+ onComplete: () => this.destroy()
});
return GLib.SOURCE_REMOVE;
},
diff --git a/js/ui/workspaceThumbnail.js b/js/ui/workspaceThumbnail.js
index 76a7416..dc1a749 100644
--- a/js/ui/workspaceThumbnail.js
+++ b/js/ui/workspaceThumbnail.js
@@ -1347,11 +1347,10 @@ var ThumbnailsBox = new Lang.Class({
{ indicatorY: thumbnail.actor.allocation.y1,
time: WorkspacesView.WORKSPACE_SWITCH_TIME,
transition: 'easeOutQuad',
- onComplete() {
+ onComplete: () => {
this._animatingIndicator = false;
this._queueUpdateStates();
- },
- onCompleteScope: this
+ }
});
}
});
--
2.23.0

81
CVE-2020-17489-pre2.patch Normal file
View File

@ -0,0 +1,81 @@
From 7e4e3c19d010b8204f89703706c605a97153a60a Mon Sep 17 00:00:00 2001
From: rpm-build <rpm-build>
Date: Tue, 30 Mar 2021 14:56:46 +0800
Subject: [PATCH] loginDialog: Use GObject bindings over onUpdate handler
Instead of iterating over all actors each frame and sync'ing their
opacities, we can set up bindings once before the animation.
https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/654
---
js/gdm/loginDialog.js | 30 ++++++++++++++----------------
1 file changed, 14 insertions(+), 16 deletions(-)
diff --git a/js/gdm/loginDialog.js b/js/gdm/loginDialog.js
index faecff8..29954f7 100644
--- a/js/gdm/loginDialog.js
+++ b/js/gdm/loginDialog.js
@@ -918,25 +918,29 @@ var LoginDialog = new Lang.Class({
this._showPrompt();
},
+ _bindOpacity() {
+ this._bindings = Main.layoutManager.uiGroup.get_children()
+ .filter(c => c != Main.layoutManager.screenShieldGroup)
+ .map(c => this.actor.bind_property('opacity', c, 'opacity', 0));
+ },
+
+ _unbindOpacity() {
+ this._bindings.forEach(b => b.unbind());
+ },
+
_loginScreenSessionActivated() {
if (this.actor.opacity == 255 && this._authPrompt.verificationStatus == AuthPrompt.AuthPromptStatus.NOT_VERIFYING)
return;
+ this._bindOpacity();
Tweener.addTween(this.actor,
{ opacity: 255,
time: _FADE_ANIMATION_TIME,
transition: 'easeOutQuad',
- onUpdate: () => {
- let children = Main.layoutManager.uiGroup.get_children();
-
- for (let i = 0; i < children.length; i++) {
- if (children[i] != Main.layoutManager.screenShieldGroup)
- children[i].opacity = this.actor.opacity;
- }
- },
onComplete: () => {
if (this._authPrompt.verificationStatus != AuthPrompt.AuthPromptStatus.NOT_VERIFYING)
this._authPrompt.reset();
+ this._unbindOpacity();
} });
},
@@ -950,20 +954,14 @@ var LoginDialog = new Lang.Class({
},
_startSession(serviceName) {
+ this._bindOpacity();
Tweener.addTween(this.actor,
{ opacity: 0,
time: _FADE_ANIMATION_TIME,
transition: 'easeOutQuad',
- onUpdate: () => {
- let children = Main.layoutManager.uiGroup.get_children();
-
- for (let i = 0; i < children.length; i++) {
- if (children[i] != Main.layoutManager.screenShieldGroup)
- children[i].opacity = this.actor.opacity;
- }
- },
onComplete: () => {
this._greeter.call_start_session_when_ready_sync(serviceName, true, null);
+ this._unbindOpacity();
} });
},
--
2.23.0

44
CVE-2020-17489.patch Normal file
View File

@ -0,0 +1,44 @@
From b0d6742bcdba59991fbf0b31c6c670db7939cfa7 Mon Sep 17 00:00:00 2001
From: rpm-build <rpm-build>
Date: Tue, 30 Mar 2021 15:35:52 +0800
Subject: [PATCH] cleanup: Port GObject classes to JS6 classes
GJS added API for defining GObject classes with ES6 class syntax
last cycle, use it to port the remaining Lang.Class classes to
the new syntax.
https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/361
---
js/gdm/loginDialog.js | 9 ++++-----
1 file changed, 4 insertions(+), 5 deletions(-)
diff --git a/js/gdm/loginDialog.js b/js/gdm/loginDialog.js
index 29954f7..2f89140 100644
--- a/js/gdm/loginDialog.js
+++ b/js/gdm/loginDialog.js
@@ -931,17 +931,16 @@ var LoginDialog = new Lang.Class({
_loginScreenSessionActivated() {
if (this.actor.opacity == 255 && this._authPrompt.verificationStatus == AuthPrompt.AuthPromptStatus.NOT_VERIFYING)
return;
+ if (this._authPrompt.verificationStatus !== AuthPrompt.AuthPromptStatus.NOT_VERIFYING)
+ this._authPrompt.reset();
this._bindOpacity();
Tweener.addTween(this.actor,
{ opacity: 255,
time: _FADE_ANIMATION_TIME,
transition: 'easeOutQuad',
- onComplete: () => {
- if (this._authPrompt.verificationStatus != AuthPrompt.AuthPromptStatus.NOT_VERIFYING)
- this._authPrompt.reset();
- this._unbindOpacity();
- } });
+ onComplete: () => this._unbindOpacity(),
+ });
},
_gotGreeterSessionProxy(proxy) {
--
2.23.0

View File

@ -1,6 +1,6 @@
Name: gnome-shell
Version: 3.30.1
Release: 7
Release: 13
Summary: Core user interface functions for the GNOME 3 desktop
Group: User Interface/Desktops
License: GPLv2+
@ -12,6 +12,11 @@ Patch2: 0001-endSessionDialog-Immediately-add-buttons-to-the-dial.patch
Patch3: 0002-endSessionDialog-Support-rebooting-into-the-bootload.patch
Patch4: 0001-keyboardManager-Avoid-idempotent-calls-to-meta_backe.patch
Patch5: 0001-Include-the-libcroco-sources-directly-under-src-st-c.patch
Patch6: CVE-2020-17489-pre1.patch
Patch7: CVE-2020-17489-pre2.patch
Patch8: CVE-2020-17489.patch
Patch9: CVE-2019-3820-1.patch
Patch10: CVE-2019-3820-2.patch
BuildRequires: meson git ibus-devel chrpath dbus-glib-devel desktop-file-utils
BuildRequires: evolution-data-server-devel gcr-devel gjs-devel glib2-devel
@ -25,7 +30,7 @@ Requires: gnome-desktop3 gobject-introspection gjs gtk3 libnma librsvg2
Requires: json-glib mozilla-filesystem mutter upower polkit glib2
Requires: gsettings-desktop-schemas gstreamer1 at-spi2-atk
Requires: ibus accountsservice-libs gdm control-center python3
Requires: switcheroo-control geoclue2 libgweather bolt
Requires: switcheroo-control geoclue2 libgweather bolt xdg-utils
Provides: desktop-notification-daemon
@ -61,6 +66,14 @@ Help files for %{name}
%find_lang %{name}
chrpath -d %{buildroot}%{_bindir}/%{name}
chrpath -d %{buildroot}%{_libdir}/%{name}/libgvc.so
chrpath -d %{buildroot}%{_libdir}/%{name}/libst-1.0.so
chrpath -d %{buildroot}%{_libdir}/%{name}/lib%{name}.so
chrpath -d %{buildroot}%{_libdir}/%{name}/lib%{name}-menu.so
mkdir -p %{buildroot}/etc/ld.so.conf.d
echo "%{_libdir}/%{name}" > %{buildroot}/etc/ld.so.conf.d/%{name}-%{_arch}.conf
echo "%{_libdir}/mutter" >> %{buildroot}/etc/ld.so.conf.d/%{name}-%{_arch}.conf
%check
desktop-file-validate %{buildroot}%{_datadir}/applications/org.gnome.Shell.desktop
@ -116,11 +129,30 @@ glib-compile-schemas --allow-any-name %{_datadir}/glib-2.0/schemas &> /dev/null
%dir %{_datadir}/GConf
%dir %{_datadir}/GConf/gsettings
%{_datadir}/GConf/gsettings/gnome-shell-overrides.convert
%config(noreplace) /etc/ld.so.conf.d/*
%files help
%{_mandir}/man1/%{name}.1.gz
%changelog
* Fri Dec 01 2023 beta <beta@yfqm.date> - 3.30.1-13
- bugfix this.bind_property is not a function
* Mon Nov 27 2023 beta <beta@yfqm.date> - 3.30.1-12
- add mutter so path to /etc/ld.so.conf.d
* Thu Nov 09 2023 zhangxianting <zhangxianting@uniontech.com> - 3.30.1-11
- Remove rpath
* Tue Sep 28 2021 weijin deng <weijin.deng@turbolinux.com.cn> - 3.30.1-10
- fix CVE-2019-3820
* Tue Jul 27 2021 caodongxia<caodongxia@huawei.com> - 3.30.1-9
- add install require xdg-utils
* Tue Mar 30 2021 wangyue<wangyue92@huawei.com> - 3.30.1-8
- fix CVE-2020-17489
* Mon Dec 07 2020 wangxiao<wangxia65@huawei.com> -3.30.1-7
- delete libcroco requires