Fix input policy control packet framing and declaration order
Some checks failed
ci-bundle.yml / Fix input policy control packet framing and declaration order (push) Failing after 0s
ci-copr.yml / Fix input policy control packet framing and declaration order (push) Failing after 0s
ci-homebrew.yml / Fix input policy control packet framing and declaration order (push) Failing after 0s

This commit is contained in:
Joey Yakimowich-Payne 2026-02-12 00:42:02 -07:00
commit 07c8a7b5fb

View file

@ -462,6 +462,9 @@ namespace stream {
std::atomic<session::state_e> state;
};
template<std::size_t max_payload_size>
static inline std::string_view encode_control(session_t *session, const std::string_view &plaintext, std::array<std::uint8_t, max_payload_size> &tagged_cipher);
static void apply_session_input_policy(session_t *session, bool allow_keyboard, bool allow_mouse, bool allow_gamepad, uint8_t reason) {
auto effective_keyboard = config::input.keyboard && allow_keyboard;
auto effective_mouse = config::input.mouse && allow_mouse;
@ -485,13 +488,17 @@ namespace stream {
return -1;
}
control_set_input_policy_t plaintext;
struct control_set_input_policy_msg_t {
control_header_v2 header;
control_set_input_policy_t payload;
} plaintext;
plaintext.header.type = packetTypes[IDX_SET_INPUT_POLICY];
plaintext.header.payloadLength = sizeof(plaintext) - sizeof(control_header_v2);
plaintext.allow_keyboard = session->input_policy.allow_keyboard.load(std::memory_order_relaxed) ? 1 : 0;
plaintext.allow_mouse = session->input_policy.allow_mouse.load(std::memory_order_relaxed) ? 1 : 0;
plaintext.allow_gamepad = session->input_policy.allow_gamepad.load(std::memory_order_relaxed) ? 1 : 0;
plaintext.reason = reason;
plaintext.payload.allow_keyboard = session->input_policy.allow_keyboard.load(std::memory_order_relaxed) ? 1 : 0;
plaintext.payload.allow_mouse = session->input_policy.allow_mouse.load(std::memory_order_relaxed) ? 1 : 0;
plaintext.payload.allow_gamepad = session->input_policy.allow_gamepad.load(std::memory_order_relaxed) ? 1 : 0;
plaintext.payload.reason = reason;
std::array<std::uint8_t, sizeof(control_encrypted_t) + crypto::cipher::round_to_pkcs7_padded(sizeof(plaintext)) + crypto::cipher::tag_size>
encrypted_payload;