Call-status bar bypasses the room screenshare/camera policy and the share confirmation #26

Closed
opened 2026-09-12 01:50:57 -04:00 by jared · 0 comments
Owner

Severity: medium · Type: bug · Confidence: high

Location: src/app/features/call-status/CallControl.tsx:300-307, src/app/features/call/CallControls.tsx:110-118,403-418

Problem

CallControls (the in-room bar) reads io.lotus.room_quality and hides the camera / screenshare buttons when allow_camera / allow_screenshare are false, and gates screenshare behind a "Share your screen?" confirmation. The persistent CallStatus bar — which is rendered app-wide for the whole call (Router.tsx:192CallStatusRenderer) — renders the same Video and ScreenShare buttons with no room-policy check and no confirmation, calling control.toggleScreenshare() straight away. So the client-side "audio-only room" / "no screensharing" enforcement is trivially bypassed by using the status bar instead of the call bar, and a single mis-click there starts a screenshare with no confirm.

How to trigger

in a room with Room Settings → Call Permissions → Allow Screen Sharing off, join the call and click the screenshare icon in the top call-status bar.

Suggested fix

hoist the roomQuality lookup into a shared hook and apply the same showCamera/showScreenshare gating plus the share-confirm dialog in features/call-status/CallControl.tsx.


Filed from the September 2026 client audit (branch lotus @ 4bea4895).

**Severity:** medium · **Type:** bug · **Confidence:** high **Location:** `src/app/features/call-status/CallControl.tsx:300-307`, `src/app/features/call/CallControls.tsx:110-118,403-418` ### Problem `CallControls` (the in-room bar) reads `io.lotus.room_quality` and hides the camera / screenshare buttons when `allow_camera` / `allow_screenshare` are `false`, and gates screenshare behind a "Share your screen?" confirmation. The persistent `CallStatus` bar — which is rendered app-wide for the whole call (`Router.tsx:192` → `CallStatusRenderer`) — renders the same Video and ScreenShare buttons with **no** room-policy check and **no** confirmation, calling `control.toggleScreenshare()` straight away. So the client-side "audio-only room" / "no screensharing" enforcement is trivially bypassed by using the status bar instead of the call bar, and a single mis-click there starts a screenshare with no confirm. ### How to trigger in a room with Room Settings → Call Permissions → Allow Screen Sharing off, join the call and click the screenshare icon in the top call-status bar. ### Suggested fix hoist the `roomQuality` lookup into a shared hook and apply the same `showCamera`/`showScreenshare` gating plus the share-confirm dialog in `features/call-status/CallControl.tsx`. --- _Filed from the September 2026 client audit (branch `lotus` @ 4bea4895)._
jared added this to the Audit 2026-09 · Medium & Low milestone 2026-09-12 01:50:57 -04:00
jared added the bugpriority: mediumarea: calls labels 2026-09-12 01:50:57 -04:00
jared self-assigned this 2026-09-12 01:50:57 -04:00
jared closed this issue 2026-09-12 19:46:18 -04:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
2026-11-14
Dependencies

No dependencies set.

Reference: LotusGuild/cinny#26