diff --git a/src/protocols/rdp/channels/cliprdr.c b/src/protocols/rdp/channels/cliprdr.c index 48c10c2b..6cff2581 100644 --- a/src/protocols/rdp/channels/cliprdr.c +++ b/src/protocols/rdp/channels/cliprdr.c @@ -397,8 +397,19 @@ static UINT guac_rdp_cliprdr_format_data_response(CliprdrClientContext* cliprdr, guac_rdp_clipboard* clipboard = (guac_rdp_clipboard*) cliprdr->custom; assert(clipboard != NULL); - guac_client_log(clipboard->client, GUAC_LOG_TRACE, "CLIPRDR: Received " - "format data response."); + guac_client* client = clipboard->client; + guac_rdp_client* rdp_client = (guac_rdp_client*) client->data; + guac_rdp_settings* settings = rdp_client->settings; + + guac_client_log(client, GUAC_LOG_TRACE, "CLIPRDR: Received format data response."); + + /* Ignore received data if copy has been disabled */ + if (settings->disable_copy) { + guac_client_log(clipboard->client, GUAC_LOG_DEBUG, "Ignoring received " + "clipboard data as copying from within the remote desktop has " + "been explicitly disabled."); + return CHANNEL_RC_OK; + } char received_data[GUAC_RDP_CLIPBOARD_MAX_LENGTH];