Commit c8496408 authored by Gerd Hoffmann's avatar Gerd Hoffmann
Browse files

vnc: add display id to acl names



In case the display id is "default" (which is the one you get if you
don't explicitly assign one) we keep the old name scheme, without
display, for backward compatibility reasons.

Signed-off-by: default avatarGerd Hoffmann <kraxel@redhat.com>
Reviewed-by: default avatarGonglei <arei.gonglei@huawei.com>
parent 14f7143e
Loading
Loading
Loading
Loading
+20 −2
Original line number Diff line number Diff line
@@ -3207,18 +3207,36 @@ void vnc_display_open(const char *id, const char *display, Error **errp)

#ifdef CONFIG_VNC_TLS
    if (acl && x509 && vs->tls.x509verify) {
        if (!(vs->tls.acl = qemu_acl_init("vnc.x509dname"))) {
        char *aclname;

        if (strcmp(vs->id, "default") == 0) {
            aclname = g_strdup("vnc.x509dname");
        } else {
            aclname = g_strdup_printf("vnc.%s.x509dname", vs->id);
        }
        vs->tls.acl = qemu_acl_init(aclname);
        if (!vs->tls.acl) {
            fprintf(stderr, "Failed to create x509 dname ACL\n");
            exit(1);
        }
        g_free(aclname);
    }
#endif
#ifdef CONFIG_VNC_SASL
    if (acl && sasl) {
        if (!(vs->sasl.acl = qemu_acl_init("vnc.username"))) {
        char *aclname;

        if (strcmp(vs->id, "default") == 0) {
            aclname = g_strdup("vnc.username");
        } else {
            aclname = g_strdup_printf("vnc.%s.username", vs->id);
        }
        vs->sasl.acl = qemu_acl_init(aclname);
        if (!vs->sasl.acl) {
            fprintf(stderr, "Failed to create username ACL\n");
            exit(1);
        }
        g_free(aclname);
    }
#endif