Commit c802cdce for guacamole.apache.org
commit c802cdce5627b4e0df77987878824cb167a1f9ba
Merge: f076a54b d35ed8f7
Author: Virtually Nick <vnick@apache.org>
Date: Tue May 5 13:49:34 2026 -0400
Merge patch branch changes to main.
diff --cc src/protocols/vnc/clipboard.c
index 83334250,4af5b458..59674850
--- a/src/protocols/vnc/clipboard.c
+++ b/src/protocols/vnc/clipboard.c
@@@ -116,13 -110,7 +124,14 @@@ int guac_vnc_clipboard_blob_handler(gua
int guac_vnc_clipboard_end_handler(guac_user* user, guac_stream* stream) {
guac_vnc_client* vnc_client = (guac_vnc_client*) user->client->data;
+
+ /* Ignore end of stream if no clipboard structure is available to handle
+ * the data that was received */
+ guac_common_clipboard* clipboard = vnc_client->clipboard;
+ if (clipboard == NULL)
+ return 0;
+
+ guac_client* client = user->client;
rfbClient* rfb_client = vnc_client->rfb_client;
/* Send via VNC only if finished connecting */
@@@ -154,10 -142,15 +163,16 @@@
}
/* Fall back to classic clipboard with encoding conversion */
- char* output_data = guac_mem_alloc(GUAC_COMMON_CLIPBOARD_MAX_LENGTH);
+ int output_buf_size = clipboard->available;
+ char* output_data = guac_mem_alloc(output_buf_size);
+ if (output_data == NULL) {
+ guac_client_log(client, GUAC_LOG_WARNING,
+ "Clipboard conversion failed: unable to allocate output "
+ "buffer.");
+ return 1;
+ }
- const char* input = vnc_client->clipboard->buffer;
+ const char* input = clipboard->buffer;
char* output = output_data;
guac_iconv_write* writer = vnc_client->clipboard_writer;
@@@ -181,8 -173,13 +196,14 @@@ void guac_vnc_cut_text(rfbClient* clien
if (vnc_client->settings->disable_copy)
return;
- char* received_data = guac_mem_alloc(GUAC_COMMON_CLIPBOARD_MAX_LENGTH);
+ int output_buf_size = vnc_client->clipboard->available;
+ char* received_data = guac_mem_alloc(output_buf_size);
+ if (received_data == NULL) {
+ guac_client_log(gc, GUAC_LOG_WARNING,
+ "Clipboard conversion failed: unable to allocate receive "
+ "buffer.");
+ return;
+ }
const char* input = text;
char* output = received_data;