aboutsummaryrefslogtreecommitdiff
path: root/ui/vnc.c
diff options
context:
space:
mode:
authorDaniel P. Berrange <berrange@redhat.com>2012-02-14 12:37:29 +0000
committerAnthony Liguori <aliguori@us.ibm.com>2012-02-17 09:58:21 -0600
commit7dfbfc7927c1f7ab9f6910768ed6d966645b5866 (patch)
tree62fa7843679891c12ccbef59c19539c53be13838 /ui/vnc.c
parent4ed658ca925249021789d6a51fd6f99f68213f28 (diff)
downloadqemu-7dfbfc7927c1f7ab9f6910768ed6d966645b5866.zip
qemu-7dfbfc7927c1f7ab9f6910768ed6d966645b5866.tar.gz
qemu-7dfbfc7927c1f7ab9f6910768ed6d966645b5866.tar.bz2
vnc: Don't demote authentication scheme when changing password/disabling login
Currently when disabling login in VNC, the password is cleared out and the authentication protocol is forced to AUTH_VNC. If you're using a stronger authentication protocol, this has the effect of downgrading your security protocol. Fix this by only changing the authentication protocol if the current authentication protocol is AUTH_NONE. That ensures we're never downgrading. Signed-off-by: Daniel P. Berrange <berrange@redhat.com> Signed-off-by: Anthony Liguori <aliguori@us.ibm.com> -- NB. This patch is derived from one posted by Anthony last year, which got accidentally lost after Luiz took over the QMP series work https://lists.gnu.org/archive/html/qemu-devel/2011-09/msg00392.html v1 -> v2 - Make sure to not demote when changing password (Daniel) v2 -> v3 - Rebase to latest GIT master wrt QMP changes
Diffstat (limited to 'ui/vnc.c')
-rw-r--r--ui/vnc.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/ui/vnc.c b/ui/vnc.c
index 02b71bc..8ee39bc 100644
--- a/ui/vnc.c
+++ b/ui/vnc.c
@@ -2794,7 +2794,9 @@ int vnc_display_disable_login(DisplayState *ds)
}
vs->password = NULL;
- vs->auth = VNC_AUTH_VNC;
+ if (vs->auth == VNC_AUTH_NONE) {
+ vs->auth = VNC_AUTH_VNC;
+ }
return 0;
}
@@ -2818,7 +2820,9 @@ int vnc_display_password(DisplayState *ds, const char *password)
vs->password = NULL;
}
vs->password = g_strdup(password);
- vs->auth = VNC_AUTH_VNC;
+ if (vs->auth == VNC_AUTH_NONE) {
+ vs->auth = VNC_AUTH_VNC;
+ }
return 0;
}