summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlon Levy <alevy@redhat.com>2012-08-30 14:33:04 +0300
committerAlon Levy <alevy@redhat.com>2012-08-30 17:08:10 +0300
commit897aaa7be51ab0b44436340cf6beedae03544199 (patch)
treef4c7121571ae27fdf7d9bc0397d206b2d42acf85
parent3d28317e978271085ad274139f5646b2b171d509 (diff)
downloadspice-897aaa7be51ab0b44436340cf6beedae03544199.tar.gz
spice-897aaa7be51ab0b44436340cf6beedae03544199.tar.xz
spice-897aaa7be51ab0b44436340cf6beedae03544199.zip
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).
-rw-r--r--server/red_worker.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/server/red_worker.c b/server/red_worker.c
index 61137272..44ffc33a 100644
--- a/server/red_worker.c
+++ b/server/red_worker.c
@@ -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);
}