[Spice-commits] server/reds.c server/spice-server.h

Frediano Ziglio fziglio at kemper.freedesktop.org
Wed May 11 15:58:35 UTC 2016


 server/reds.c         |    1 +
 server/spice-server.h |    5 +++++
 2 files changed, 6 insertions(+)

New commits:
commit 07b7abeb59fbdc5dd3d67d62951a1e8708b07089
Author: Frediano Ziglio <fziglio at redhat.com>
Date:   Tue May 10 15:13:14 2016 +0100

    fix crash if agent interface is removed
    
    Removing an interface cause SpiceBaseInstance->st to be set to NULL.
    This pointer was then deferenced in agent code.
    As SpiceBaseInstance should not be used after this call make sure
    we don't keep pointers to it.
    
    Signed-off-by: Frediano Ziglio <fziglio at redhat.com>
    Acked-by: Christophe Fergeau <cfergeau at redhat.com>

diff --git a/server/reds.c b/server/reds.c
index f0ebf0c..9898fe5 100644
--- a/server/reds.c
+++ b/server/reds.c
@@ -3265,6 +3265,7 @@ static void spice_server_char_device_remove_interface(RedsState *reds, SpiceBase
     if (strcmp(char_device->subtype, SUBTYPE_VDAGENT) == 0) {
         if (reds->vdagent) {
             reds_agent_remove(reds);
+            red_char_device_reset_dev_instance(RED_CHAR_DEVICE(reds->agent_dev), NULL);
         }
     }
 #ifdef USE_SMARTCARD
diff --git a/server/spice-server.h b/server/spice-server.h
index d309f18..87c5c59 100644
--- a/server/spice-server.h
+++ b/server/spice-server.h
@@ -67,6 +67,11 @@ int spice_server_add_ssl_client(SpiceServer *s, int socket, int skip_auth);
 
 int spice_server_add_interface(SpiceServer *s,
                                SpiceBaseInstance *sin);
+/**
+ * Remove an interface from SpiceServer.
+ * SpiceServer won't be using the interface anymore, so it can
+ * be freed or reused.
+ */
 int spice_server_remove_interface(SpiceBaseInstance *sin);
 
 // Needed for backward API compatibility


More information about the Spice-commits mailing list