[Spice-devel] [PATCH spice-server 3/3] reds: Check QXL ID registering interface

Frediano Ziglio fziglio at redhat.com
Wed Feb 13 14:53:16 UTC 2019


Avoid to register multiple interface with the same ID.
This would results in issue as 2 channels would have same
(channel_type, channel_id) which should be unique.
Qemu always allocate QXL interface with IDs from 0.

Signed-off-by: Frediano Ziglio <fziglio at redhat.com>
---
 server/reds.c | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/server/reds.c b/server/reds.c
index fbc21f7be..2e5c69e60 100644
--- a/server/reds.c
+++ b/server/reds.c
@@ -3378,6 +3378,14 @@ SPICE_GNUC_VISIBLE int spice_server_add_interface(SpiceServer *reds,
         }
 
         qxl = SPICE_UPCAST(QXLInstance, sin);
+        if (qxl->id < 0) {
+            spice_warning("invalid QXL ID");
+            return -1;
+        }
+        if (reds_find_channel(reds, SPICE_CHANNEL_DISPLAY, qxl->id)) {
+            spice_warning("QXL ID already allocated");
+            return -1;
+        }
         red_qxl_init(reds, qxl);
         reds->qxl_instances = g_list_prepend(reds->qxl_instances, qxl);
 
-- 
2.20.1



More information about the Spice-devel mailing list