diff options
author | Alon Levy <alevy@redhat.com> | 2012-08-30 14:33:04 +0300 |
---|---|---|
committer | Alon Levy <alevy@redhat.com> | 2012-08-30 17:08:10 +0300 |
commit | 897aaa7be51ab0b44436340cf6beedae03544199 (patch) | |
tree | f4c7121571ae27fdf7d9bc0397d206b2d42acf85 /server | |
parent | 3d28317e978271085ad274139f5646b2b171d509 (diff) | |
download | spice-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).
Diffstat (limited to 'server')
-rw-r--r-- | server/red_worker.c | 6 |
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); } |