st-clipboard: Add trailing 0 to pasted text

We translate the raw stream content far too directly into a char*,
it notably forgets that the stream does not have nul-ended data,
this means we are potentially adding garbage after the pasted content.

Tentatively fixes https://gitlab.gnome.org/GNOME/gnome-shell/issues/1570
This commit is contained in:
Carlos Garnacho 2019-09-09 17:43:17 +02:00 committed by Carlos Garnacho
parent 406d0900a7
commit 8d9cae45f9

View File

@ -128,14 +128,22 @@ transfer_cb (MetaSelection *selection,
GAsyncResult *res, GAsyncResult *res,
TransferData *data) TransferData *data)
{ {
const gchar *text = NULL; gchar *text = NULL;
if (meta_selection_transfer_finish (selection, res, NULL)) if (meta_selection_transfer_finish (selection, res, NULL))
text = g_memory_output_stream_get_data (G_MEMORY_OUTPUT_STREAM (data->stream)); {
gsize data_size;
data_size =
g_memory_output_stream_get_data_size (G_MEMORY_OUTPUT_STREAM (data->stream));
text = g_new0 (char, data_size + 1);
memcpy (text, g_memory_output_stream_get_data (G_MEMORY_OUTPUT_STREAM (data->stream)), data_size);
}
data->callback (data->clipboard, text, data->user_data); data->callback (data->clipboard, text, data->user_data);
g_object_unref (data->stream); g_object_unref (data->stream);
g_free (data); g_free (data);
g_free (text);
} }
/** /**