From 295102a6d91e5a71fbcc7fa3f17a2cea9c9eb9e6 Mon Sep 17 00:00:00 2001 From: Romain Vimont Date: Tue, 27 Feb 2024 09:59:23 +0100 Subject: [PATCH] Check device messages assumptions at runtime Do not assume the server behaves correctly (scrcpy should not require the device to be trusted). --- app/src/receiver.c | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/app/src/receiver.c b/app/src/receiver.c index 408e1db7..6be705e3 100644 --- a/app/src/receiver.c +++ b/app/src/receiver.c @@ -43,9 +43,19 @@ process_msg(struct sc_receiver *receiver, struct sc_device_msg *msg) { break; } case DEVICE_MSG_TYPE_ACK_CLIPBOARD: - assert(receiver->acksync); LOGD("Ack device clipboard sequence=%" PRIu64_, msg->ack_clipboard.sequence); + + // This is a programming error to receive this message if there is + // no ACK synchronization mechanism + assert(receiver->acksync); + + // Also check at runtime (do not trust the server) + if (!receiver->acksync) { + LOGE("Received unexpected ack"); + return; + } + sc_acksync_ack(receiver->acksync, msg->ack_clipboard.sequence); break; }