[Spice-devel] [PATCH] server: fix segfault if no migrate_info provided

Alon Levy alevy at redhat.com
Mon Jun 20 01:57:58 PDT 2011


qemu calls spice_server_migrate_switch even if it didn't do a
spice_server_migrate_info first. Fix the resulting error by not pushing
a switch host tag to the pipe in this case, and add a check anyway in the
marshalling code just in case.
---
 server/reds.c |   11 +++++++++++
 1 files changed, 11 insertions(+), 0 deletions(-)

diff --git a/server/reds.c b/server/reds.c
index 5fa50c1..5214ae7 100644
--- a/server/reds.c
+++ b/server/reds.c
@@ -3102,12 +3102,23 @@ static void reds_mig_finished(int completed)
 
 static void reds_mig_switch(void)
 {
+    if (!reds->mig_spice) {
+        // don't send a switch host if migrate info is not provided
+        return;
+    }
     main_channel_push_migrate_switch(reds->main_channel);
 }
 
 void reds_fill_mig_switch(SpiceMsgMainMigrationSwitchHost *migrate)
 {
     RedsMigSpice *s = reds->mig_spice;
+
+    if (s == NULL) {
+        red_printf(
+            "error: reds_fill_mig_switch called without migrate info set");
+        bzero(migrate, sizeof(*migrate));
+        return;
+    }
     migrate->port = s->port;
     migrate->sport = s->sport;
     migrate->host_size = strlen(s->host) + 1;
-- 
1.7.5.2



More information about the Spice-devel mailing list