server/red_worker: seamless: fix invalid memory reference

replace add_ref with add for stack allocated SpiceMigrateDataDisplay.

This fixes wrong MIGRATE_DATA message in display channel (symptom is
glz_encoder_max being way too big, and malloc failure at target) seen on
F18 with gcc-4.7.1-5.fc18.x86_64 and glibc-2.16-8.fc18.x86_64 (didn't
appear on RHEL 6).
This commit is contained in:
Alon Levy 2012-08-30 14:33:04 +03:00
parent 3d28317e97
commit 897aaa7be5

View File

@ -8442,7 +8442,7 @@ static void display_channel_marshall_migrate_data(RedChannelClient *rcc,
{
DisplayChannel *display_channel;
DisplayChannelClient *dcc = RCC_TO_DCC(rcc);
SpiceMigrateDataDisplay display_data;
SpiceMigrateDataDisplay display_data = {0,};
display_channel = SPICE_CONTAINEROF(rcc->channel, DisplayChannel, common.base);
@ -8471,8 +8471,8 @@ static void display_channel_marshall_migrate_data(RedChannelClient *rcc,
&dcc->glz_data.usr);
/* all data besided the surfaces ref */
spice_marshaller_add_ref(base_marshaller,
(uint8_t *)&display_data, sizeof(display_data) - sizeof(uint32_t));
spice_marshaller_add(base_marshaller,
(uint8_t *)&display_data, sizeof(display_data) - sizeof(uint32_t));
display_channel_marshall_migrate_data_surfaces(dcc, base_marshaller,
display_channel->enable_jpeg);
}