introspect: Fix whitelist check
The whitelist is a list of well-known D-Bus names, which we then search
for the unique name we get from the method invocation - unsuccesfully.
Fix this by watching the bus for any name in the whitelist in order
to maintain a map from wel-known to unique name that we can use for
matching.
https://gitlab.gnome.org/GNOME/gnome-shell/issues/1916
(cherry picked from commit eee1ab4890
)
This commit is contained in:
parent
88e3dfa104
commit
334762ee9e
@ -40,6 +40,15 @@ var IntrospectService = class {
|
|||||||
});
|
});
|
||||||
|
|
||||||
this._syncRunningApplications();
|
this._syncRunningApplications();
|
||||||
|
|
||||||
|
this._whitelistMap = new Map();
|
||||||
|
APP_WHITELIST.forEach(appName => {
|
||||||
|
Gio.DBus.watch_name(Gio.BusType.SESSION,
|
||||||
|
appName,
|
||||||
|
Gio.BusNameWatcherFlags.NONE,
|
||||||
|
(conn, name, owner) => this._whitelistMap.set(name, owner),
|
||||||
|
(conn, name) => this._whitelistMap.delete(name));
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
_isStandaloneApp(app) {
|
_isStandaloneApp(app) {
|
||||||
@ -51,7 +60,7 @@ var IntrospectService = class {
|
|||||||
}
|
}
|
||||||
|
|
||||||
_isSenderWhitelisted(sender) {
|
_isSenderWhitelisted(sender) {
|
||||||
return APP_WHITELIST.includes(sender);
|
return [...this._whitelistMap.values()].includes(sender);
|
||||||
}
|
}
|
||||||
|
|
||||||
_getSandboxedAppId(app) {
|
_getSandboxedAppId(app) {
|
||||||
|
Loading…
Reference in New Issue
Block a user