guac_client_data->rdp_inst = rdp_inst;
guac_client_data->mouse_button_mask = 0;
guac_client_data->current_surface = GUAC_DEFAULT_LAYER;
- guac_client_data->clipboard = "";
+ guac_client_data->clipboard = NULL;
/* Clear keysym state mapping and keymap */
memset(guac_client_data->keysym_state, 0,
RDP_EVENT_TYPE_CB_FORMAT_LIST,
NULL, NULL);
+ /* Free existing data */
+ free(((rdp_guac_client_data*) client->data)->clipboard);
+
/* Store data in client */
((rdp_guac_client_data*) client->data)->clipboard = strdup(data);
NULL, NULL);
/* Set data and length */
- data_response->data = (uint8*) strdup(clipboard);
- data_response->size = strlen(clipboard) + 1;
+ if (clipboard != NULL) {
+ data_response->data = (uint8*) strdup(clipboard);
+ data_response->size = strlen(clipboard) + 1;
+ }
+ else {
+ data_response->data = (uint8*) strdup("");
+ data_response->size = 1;
+ }
/* Send response */
freerdp_channels_send_event(channels, (RDP_EVENT*) data_response);
/* Received clipboard data */
if (event->data[event->size - 1] == '\0') {
+ /* Free existing data */
+ free(((rdp_guac_client_data*) client->data)->clipboard);
+
/* Store clipboard data */
((rdp_guac_client_data*) client->data)->clipboard =
strdup((char*) event->data);