diff --git a/vnc.c b/vnc.c
index 9dbe82ac06..5eaef6a3e2 100644
--- a/vnc.c
+++ b/vnc.c
@@ -2274,6 +2274,11 @@ int vnc_display_password(DisplayState *ds, const char *password)
     if (password && password[0]) {
         if (!(vs->password = qemu_strdup(password)))
             return -1;
+        if (vs->auth == VNC_AUTH_NONE) {
+            vs->auth = VNC_AUTH_VNC;
+        }
+    } else {
+        vs->auth = VNC_AUTH_NONE;
     }
 
     return 0;