[client] spice: validate clipboard responses

This commit is contained in:
Geoffrey McRae
2026-07-28 13:08:16 +10:00
parent e73a3dec60
commit e4658b4263
3 changed files with 32 additions and 15 deletions

View File

@@ -71,6 +71,21 @@ void cb_spiceData(const PSDataType type, uint8_t * buffer, uint32_t size)
if (!g_params.clipboardToLocal)
return;
struct CBRequest * cbr;
if (!ll_shift(g_state.cbRequestList, (void **)&cbr))
{
DEBUG_ERROR("Received unsolicited SPICE clipboard data");
return;
}
if (type != cbr->type || (size && !buffer))
{
DEBUG_ERROR("Invalid SPICE clipboard response");
cbr->replyFn(cbr->opaque, LG_CLIPBOARD_DATA_NONE, NULL, 0);
free(cbr);
return;
}
if (type == SPICE_DATA_TEXT)
{
// dos2unix
@@ -89,12 +104,8 @@ void cb_spiceData(const PSDataType type, uint8_t * buffer, uint32_t size)
size = newSize;
}
struct CBRequest * cbr;
if (ll_shift(g_state.cbRequestList, (void **)&cbr))
{
cbr->replyFn(cbr->opaque, cb_spiceTypeToLGType(type), buffer, size);
free(cbr);
}
cbr->replyFn(cbr->opaque, cb_spiceTypeToLGType(type), buffer, size);
free(cbr);
}
void cb_spiceRelease(void)