File CVE-2024-36472.patch of Package gnome-shell.34806
Index: gnome-shell-3.20.4/js/ui/status/network.js
===================================================================
--- gnome-shell-3.20.4.orig/js/ui/status/network.js
+++ gnome-shell-3.20.4/js/ui/status/network.js
@@ -1644,6 +1644,7 @@ const NMApplet = new Lang.Class({
this._mainConnectionIconChangedId = 0;
this._notification = null;
+ this._PortalNotification = null;
this._nmDevices = [];
this._devices = { };
@@ -1855,6 +1856,8 @@ const NMApplet = new Lang.Class({
_mainConnectionStateChanged: function() {
if (this._mainConnection.state == NetworkManager.ActiveConnectionState.ACTIVATED && this._notification)
this._notification.destroy();
+ if (this._mainConnection.state == NetworkManager.ActiveConnectionState.ACTIVATED && this._PortalNotification)
+ this._PortalNotification.destroy();
},
_ignoreConnection: function(connection) {
@@ -2008,12 +2011,35 @@ const NMApplet = new Lang.Class({
if (!isPortal)
return;
+ let name = this._mainConnection.get_id();
let path = this._mainConnection.get_path();
for (let item of this._connectivityQueue) {
if (item == path)
return;
}
+ if (this._PortalNotification)
+ this._PortalNotification.destroy();
+ const source = new MessageTray.Source(
+ _('Network Manager'), 'network-wireless-acquiring-symbolic');
+ source.policy =
+ new MessageTray.NotificationApplicationPolicy('gnome-network-panel')
+
+ this._PortalNotification = new MessageTray.Notification(source,
+ _('Sign Into Wi–Fi Network'),
+ _(name));
+ this._PortalNotification.connect('destroy', function() {
+ this._PortalNotification = null;
+ });
+ this._PortalNotification.connect('activated', function() {
+ this._onNotificationActivated(path);
+ });
+
+ Main.messageTray.add(source);
+ source.notify(this._PortalNotification)
+ },
+
+ _onNotificationActivated: function(path) {
let timestamp = global.get_current_time();
if (this._portalHelperProxy) {
this._portalHelperProxy.AuthenticateRemote(path, '', timestamp);