diff -ur libvirt-8.4.0.orig/src/qemu/qemu_command.c libvirt-8.4.0/src/qemu/qemu_command.c --- libvirt-8.4.0.orig/src/qemu/qemu_command.c 2022-06-03 00:01:50.967940423 +0200 +++ libvirt-8.4.0/src/qemu/qemu_command.c 2022-06-03 00:02:10.338979122 +0200 @@ -8318,6 +8318,10 @@ virCommandAddEnvPair(cmd, "SASL_CONF_PATH", cfg->vncSASLdir); /* TODO: Support ACLs later */ + + if (cfg->vncACL) + virBufferAddLit(&opt, ",acl"); + } if (graphics->data.vnc.powerControl != VIR_TRISTATE_BOOL_ABSENT) { diff -ur libvirt-8.4.0.orig/src/qemu/qemu_conf.c libvirt-8.4.0/src/qemu/qemu_conf.c --- libvirt-8.4.0.orig/src/qemu/qemu_conf.c 2022-06-03 00:01:50.967940423 +0200 +++ libvirt-8.4.0/src/qemu/qemu_conf.c 2022-06-03 00:02:13.756985948 +0200 @@ -439,6 +439,8 @@ return -1; if (virConfGetValueBool(conf, "vnc_allow_host_audio", &cfg->vncAllowHostAudio) < 0) return -1; + if (virConfGetValueBool(conf, "vnc_acl", &cfg->vncACL) < 0) + return -1; if (cfg->vncPassword && strlen(cfg->vncPassword) > 8) { diff -ur libvirt-8.4.0.orig/src/qemu/qemu_conf.h libvirt-8.4.0/src/qemu/qemu_conf.h --- libvirt-8.4.0.orig/src/qemu/qemu_conf.h 2022-06-03 00:01:50.967940423 +0200 +++ libvirt-8.4.0/src/qemu/qemu_conf.h 2022-06-03 00:02:13.756985948 +0200 @@ -114,6 +114,7 @@ bool vncTLSx509verify; bool vncTLSx509verifyPresent; bool vncSASL; + bool vncACL; char *vncTLSx509certdir; char *vncTLSx509secretUUID; char *vncListen; diff -ur libvirt-8.4.0.orig/src/qemu/qemu.conf.in libvirt-8.4.0/src/qemu/qemu.conf.in --- libvirt-8.4.0.orig/src/qemu/qemu.conf.in 2022-06-03 00:01:50.966940421 +0200 +++ libvirt-8.4.0/src/qemu/qemu.conf.in 2022-06-03 00:03:50.351178936 +0200 @@ -147,6 +147,15 @@ #vnc_sasl = 1 +# Enable the VNC access control lists. When switched on this will +# initially block all vnc users from accessing the vnc server. To +# add and remove ids from the ACLs you will need to send the appropriate +# commands to the qemu monitor as required by your particular version of +# QEMU. See the QEMU documentation for more details. +# +# vnc_acl = 1 + + # The default SASL configuration file is located in /etc/sasl/ # When running libvirtd unprivileged, it may be desirable to # override the configs in this location. Set this parameter to