clients: use fine-grained capabilities for privileged protocols
This commit is contained in:
parent
e543646944
commit
ef53d72ff8
13 changed files with 78 additions and 55 deletions
|
|
@ -1,6 +1,6 @@
|
|||
use {
|
||||
crate::{
|
||||
client::{Client, ClientError},
|
||||
client::{Client, ClientCaps, ClientError, CAP_FOREIGN_TOPLEVEL_LIST},
|
||||
globals::{Global, GlobalName},
|
||||
ifs::{
|
||||
ext_foreign_toplevel_handle_v1::ExtForeignToplevelHandleV1,
|
||||
|
|
@ -145,8 +145,8 @@ impl Global for ExtForeignToplevelListV1Global {
|
|||
1
|
||||
}
|
||||
|
||||
fn secure(&self) -> bool {
|
||||
true
|
||||
fn required_caps(&self) -> ClientCaps {
|
||||
CAP_FOREIGN_TOPLEVEL_LIST
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
use {
|
||||
crate::{
|
||||
client::{Client, ClientError},
|
||||
client::{Client, ClientCaps, ClientError, CAP_IDLE_NOTIFIER},
|
||||
globals::{Global, GlobalName},
|
||||
ifs::ext_idle_notification_v1::ExtIdleNotificationV1,
|
||||
leaks::Tracker,
|
||||
|
|
@ -117,8 +117,8 @@ impl Global for ExtIdleNotifierV1Global {
|
|||
1
|
||||
}
|
||||
|
||||
fn secure(&self) -> bool {
|
||||
true
|
||||
fn required_caps(&self) -> ClientCaps {
|
||||
CAP_IDLE_NOTIFIER
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
use {
|
||||
crate::{
|
||||
client::{Client, ClientError},
|
||||
client::{Client, ClientCaps, ClientError, CAP_SESSION_LOCK_MANAGER},
|
||||
globals::{Global, GlobalName},
|
||||
ifs::ext_session_lock_v1::ExtSessionLockV1,
|
||||
leaks::Tracker,
|
||||
|
|
@ -98,8 +98,8 @@ impl Global for ExtSessionLockManagerV1Global {
|
|||
1
|
||||
}
|
||||
|
||||
fn secure(&self) -> bool {
|
||||
true
|
||||
fn required_caps(&self) -> ClientCaps {
|
||||
CAP_SESSION_LOCK_MANAGER
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
use {
|
||||
crate::{
|
||||
client::{Client, ClientError},
|
||||
client::{Client, ClientCaps, ClientError, CAP_DATA_CONTROL_MANAGER},
|
||||
globals::{Global, GlobalName},
|
||||
ifs::ipc::{
|
||||
zwlr_data_control_device_v1::{ZwlrDataControlDeviceV1, PRIMARY_SELECTION_SINCE},
|
||||
|
|
@ -111,8 +111,8 @@ impl Global for ZwlrDataControlManagerV1Global {
|
|||
2
|
||||
}
|
||||
|
||||
fn secure(&self) -> bool {
|
||||
true
|
||||
fn required_caps(&self) -> ClientCaps {
|
||||
CAP_DATA_CONTROL_MANAGER
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
use {
|
||||
crate::{
|
||||
cli::CliLogLevel,
|
||||
client::{Client, ClientError},
|
||||
client::{Client, ClientCaps, ClientError, CAP_JAY_COMPOSITOR},
|
||||
globals::{Global, GlobalName},
|
||||
ifs::{
|
||||
jay_idle::JayIdle,
|
||||
|
|
@ -68,8 +68,8 @@ impl Global for JayCompositorGlobal {
|
|||
1
|
||||
}
|
||||
|
||||
fn secure(&self) -> bool {
|
||||
true
|
||||
fn required_caps(&self) -> ClientCaps {
|
||||
CAP_JAY_COMPOSITOR
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -48,7 +48,7 @@ impl WlRegistryRequestHandler for WlRegistry {
|
|||
fn bind(&self, bind: Bind, _slf: &Rc<Self>) -> Result<(), Self::Error> {
|
||||
let name = GlobalName::from_raw(bind.name);
|
||||
let globals = &self.client.state.globals;
|
||||
let global = globals.get(name, self.client.secure, self.client.is_xwayland)?;
|
||||
let global = globals.get(name, self.client.caps, self.client.is_xwayland)?;
|
||||
if global.interface().name() != bind.interface {
|
||||
return Err(WlRegistryError::InvalidInterface(InterfaceError {
|
||||
name: global.name(),
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
use {
|
||||
crate::{
|
||||
client::{Client, ClientError},
|
||||
client::{Client, ClientCaps, ClientError, CAP_VIRTUAL_KEYBOARD_MANAGER},
|
||||
globals::{Global, GlobalName},
|
||||
ifs::wl_seat::zwp_virtual_keyboard_v1::ZwpVirtualKeyboardV1,
|
||||
leaks::Tracker,
|
||||
|
|
@ -61,8 +61,8 @@ impl Global for ZwpVirtualKeyboardManagerV1Global {
|
|||
1
|
||||
}
|
||||
|
||||
fn secure(&self) -> bool {
|
||||
true
|
||||
fn required_caps(&self) -> ClientCaps {
|
||||
CAP_VIRTUAL_KEYBOARD_MANAGER
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
use {
|
||||
crate::{
|
||||
client::{Client, ClientError},
|
||||
client::{Client, ClientCaps, ClientError, CAP_LAYER_SHELL},
|
||||
globals::{Global, GlobalName},
|
||||
ifs::wl_surface::zwlr_layer_surface_v1::{ZwlrLayerSurfaceV1, ZwlrLayerSurfaceV1Error},
|
||||
leaks::Tracker,
|
||||
|
|
@ -110,8 +110,8 @@ impl Global for ZwlrLayerShellV1Global {
|
|||
4
|
||||
}
|
||||
|
||||
fn secure(&self) -> bool {
|
||||
true
|
||||
fn required_caps(&self) -> ClientCaps {
|
||||
CAP_LAYER_SHELL
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
use {
|
||||
crate::{
|
||||
client::{Client, ClientError},
|
||||
client::{Client, ClientCaps, ClientError, CAP_SCREENCOPY_MANAGER},
|
||||
globals::{Global, GlobalName},
|
||||
ifs::zwlr_screencopy_frame_v1::ZwlrScreencopyFrameV1,
|
||||
leaks::Tracker,
|
||||
|
|
@ -59,8 +59,8 @@ impl Global for ZwlrScreencopyManagerV1Global {
|
|||
3
|
||||
}
|
||||
|
||||
fn secure(&self) -> bool {
|
||||
true
|
||||
fn required_caps(&self) -> ClientCaps {
|
||||
CAP_SCREENCOPY_MANAGER
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue