[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