aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarc-André Lureau <marcandre.lureau@redhat.com>2025-01-13 23:31:33 +0400
committerMarc-André Lureau <marcandre.lureau@redhat.com>2025-02-03 21:15:57 +0400
commitccf86c392c5b8949bafd363e44d3abb112578044 (patch)
tree353a7745e2a5ca81fdde3166264606e4e2b94916
parentaeb6b818c1816304cdfdf846041e2b2ba0e73aca (diff)
downloadqemu-ccf86c392c5b8949bafd363e44d3abb112578044.zip
qemu-ccf86c392c5b8949bafd363e44d3abb112578044.tar.gz
qemu-ccf86c392c5b8949bafd363e44d3abb112578044.tar.bz2
ui/dbus: on win32, allow ANONYMOUS with p2p
GLib doesn't implement EXTERNAL on win32 at the moment, and disables ANONYMOUS by default. zbus dropped support for COOKIE_SHA1 in 5.0, making it no longer possible to connect to qemu -display dbus. Since p2p connections are gated by existing QMP (or a D-Bus connection), qemu -display dbus p2p can accept authentication with ANONYMOUS. Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
-rw-r--r--audio/dbusaudio.c8
-rw-r--r--ui/dbus-console.c8
-rw-r--r--ui/dbus.c10
3 files changed, 22 insertions, 4 deletions
diff --git a/audio/dbusaudio.c b/audio/dbusaudio.c
index 095e739..af77e7c 100644
--- a/audio/dbusaudio.c
+++ b/audio/dbusaudio.c
@@ -524,11 +524,17 @@ dbus_audio_register_listener(AudioState *s,
);
}
+ GDBusConnectionFlags flags =
+ G_DBUS_CONNECTION_FLAGS_AUTHENTICATION_SERVER;
+#ifdef WIN32
+ flags |= G_DBUS_CONNECTION_FLAGS_AUTHENTICATION_ALLOW_ANONYMOUS;
+#endif
+
listener_conn =
g_dbus_connection_new_sync(
G_IO_STREAM(socket_conn),
guid,
- G_DBUS_CONNECTION_FLAGS_AUTHENTICATION_SERVER,
+ flags,
NULL, NULL, &err);
if (err) {
error_report("Failed to setup peer connection: %s", err->message);
diff --git a/ui/dbus-console.c b/ui/dbus-console.c
index 5eb1d40..85e215e 100644
--- a/ui/dbus-console.c
+++ b/ui/dbus-console.c
@@ -305,10 +305,16 @@ dbus_console_register_listener(DBusDisplayConsole *ddc,
#endif
);
+ GDBusConnectionFlags flags =
+ G_DBUS_CONNECTION_FLAGS_AUTHENTICATION_SERVER;
+#ifdef WIN32
+ flags |= G_DBUS_CONNECTION_FLAGS_AUTHENTICATION_ALLOW_ANONYMOUS;
+#endif
+
listener_conn = g_dbus_connection_new_sync(
G_IO_STREAM(socket_conn),
guid,
- G_DBUS_CONNECTION_FLAGS_AUTHENTICATION_SERVER,
+ flags,
NULL, NULL, &err);
if (err) {
error_report("Failed to setup peer connection: %s", err->message);
diff --git a/ui/dbus.c b/ui/dbus.c
index 7b258c6..2eb03aa 100644
--- a/ui/dbus.c
+++ b/ui/dbus.c
@@ -317,11 +317,17 @@ dbus_display_add_client(int csock, Error **errp)
conn = g_socket_connection_factory_create_connection(socket);
dbus_display->add_client_cancellable = g_cancellable_new();
+ GDBusConnectionFlags flags =
+ G_DBUS_CONNECTION_FLAGS_AUTHENTICATION_SERVER |
+ G_DBUS_CONNECTION_FLAGS_DELAY_MESSAGE_PROCESSING;
+
+#ifdef WIN32
+ flags |= G_DBUS_CONNECTION_FLAGS_AUTHENTICATION_ALLOW_ANONYMOUS;
+#endif
g_dbus_connection_new(G_IO_STREAM(conn),
guid,
- G_DBUS_CONNECTION_FLAGS_AUTHENTICATION_SERVER |
- G_DBUS_CONNECTION_FLAGS_DELAY_MESSAGE_PROCESSING,
+ flags,
NULL,
dbus_display->add_client_cancellable,
dbus_display_add_client_ready,