qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Alexander Graf <agraf@suse.de>
To: qemu-devel@nongnu.org
Subject: [Qemu-devel] [PATCH 5/7] Split vnc authentication code
Date: Thu, 29 Jan 2009 12:24:56 +0100	[thread overview]
Message-ID: <1233228298-4844-6-git-send-email-agraf@suse.de> (raw)
In-Reply-To: <1233228298-4844-5-git-send-email-agraf@suse.de>

This patch splits the authentication code, mostly for readability
reasons.

Signed-off-by: Alexander Graf <agraf@suse.de>
---
 vnc.c |   67 ++++++++++++++++++++++++++++++++++------------------------------
 1 files changed, 36 insertions(+), 31 deletions(-)

diff --git a/vnc.c b/vnc.c
index d0d9580..b4b0843 100644
--- a/vnc.c
+++ b/vnc.c
@@ -180,6 +180,7 @@ static void vnc_write_u8(VncState *vs, uint8_t value);
 static void vnc_flush(VncState *vs);
 static void vnc_update_client(void *opaque);
 static void vnc_client_read(void *opaque);
+static int protocol_client_auth(VncState *vs, uint8_t *data, size_t len);
 
 static void vnc_colordepth(DisplayState *ds);
 
@@ -1555,6 +1556,39 @@ static int start_auth_vnc(VncState *vs)
     return 0;
 }
 
+static int vnc_start_auth(VncState *vs, int auth)
+{
+    switch (auth) {
+    case VNC_AUTH_NONE:
+        VNC_DEBUG("Accept auth none\n");
+        if (vs->minor >= 8) {
+            vnc_write_u32(vs, 0); /* Accept auth completion */
+            vnc_flush(vs);
+        }
+        vnc_read_when(vs, protocol_client_init, 1);
+        break;
+    case VNC_AUTH_VNC:
+        VNC_DEBUG("Start VNC auth\n");
+        return start_auth_vnc(vs);
+#ifdef CONFIG_VNC_TLS
+    case VNC_AUTH_VENCRYPT:
+        VNC_DEBUG("Accept VeNCrypt auth\n");;
+        return start_auth_vencrypt(vs);
+#endif /* CONFIG_VNC_TLS */
+    default: /* Should not be possible, but just in case */
+        VNC_DEBUG("Reject auth %d unknown\n", auth);
+        vnc_write_u8(vs, 1);
+        if (vs->minor >= 8) {
+            static const char err[] = "Authentication failed";
+            vnc_write_u32(vs, sizeof(err));
+            vnc_write(vs, err, sizeof(err));
+        }
+        vnc_client_error(vs);
+    }
+
+    return 0;
+}
+
 
 #ifdef CONFIG_VNC_TLS
 #define DH_BITS 1024
@@ -1979,37 +2013,8 @@ static int protocol_client_auth(VncState *vs, uint8_t *data, size_t len)
        }
        vnc_client_error(vs);
     } else { /* Accept requested auth */
-       VNC_DEBUG("Client requested auth %d\n", (int)data[0]);
-       switch (vs->auth) {
-       case VNC_AUTH_NONE:
-           VNC_DEBUG("Accept auth none\n");
-           if (vs->minor >= 8) {
-               vnc_write_u32(vs, 0); /* Accept auth completion */
-               vnc_flush(vs);
-           }
-           vnc_read_when(vs, protocol_client_init, 1);
-           break;
-
-       case VNC_AUTH_VNC:
-           VNC_DEBUG("Start VNC auth\n");
-           return start_auth_vnc(vs);
-
-#ifdef CONFIG_VNC_TLS
-       case VNC_AUTH_VENCRYPT:
-           VNC_DEBUG("Accept VeNCrypt auth\n");;
-           return start_auth_vencrypt(vs);
-#endif /* CONFIG_VNC_TLS */
-
-       default: /* Should not be possible, but just in case */
-           VNC_DEBUG("Reject auth %d\n", vs->auth);
-           vnc_write_u8(vs, 1);
-           if (vs->minor >= 8) {
-               static const char err[] = "Authentication failed";
-               vnc_write_u32(vs, sizeof(err));
-               vnc_write(vs, err, sizeof(err));
-           }
-           vnc_client_error(vs);
-       }
+       VNC_DEBUG("Client requested auth %d\n", auth);
+       return vnc_start_auth(vs, data[0]);
     }
     return 0;
 }
-- 
1.6.0.2

  reply	other threads:[~2009-01-29 11:25 UTC|newest]

Thread overview: 19+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-01-29 11:24 [Qemu-devel] [PATCH 0/7] Add tight support to VNC Alexander Graf
2009-01-29 11:24 ` [Qemu-devel] [PATCH 1/7] Split VNC defines to vnc.h Alexander Graf
2009-01-29 11:24   ` [Qemu-devel] [PATCH 2/7] Use VNC protocol defines Alexander Graf
2009-01-29 11:24     ` [Qemu-devel] [PATCH 3/7] Fix invalid #if in vnc.c when debugging is enabled Alexander Graf
2009-01-29 11:24       ` [Qemu-devel] [PATCH 4/7] Make vnc buffer big-chunk aware Alexander Graf
2009-01-29 11:24         ` Alexander Graf [this message]
2009-01-29 11:24           ` [Qemu-devel] [PATCH 6/7] Add tight protocol awareness to vnc.c Alexander Graf
2009-01-29 11:24             ` [Qemu-devel] [PATCH 7/7] Add tight encoding (jpeg) " Alexander Graf
2009-01-29 15:17               ` [Qemu-devel] " Anthony Liguori
2009-01-29 15:23                 ` Stefano Stabellini
2009-01-29 15:47                   ` Anthony Liguori
2009-01-29 15:13             ` [Qemu-devel] Re: [PATCH 6/7] Add tight protocol awareness " Anthony Liguori
2009-01-29 15:24               ` Alexander Graf
2009-01-29 15:43                 ` Anthony Liguori
2009-01-29 15:11         ` [Qemu-devel] Re: [PATCH 4/7] Make vnc buffer big-chunk aware Anthony Liguori
2009-01-29 15:16           ` Alexander Graf
2009-01-29 15:22   ` [Qemu-devel] Re: [PATCH 1/7] Split VNC defines to vnc.h Anthony Liguori
2009-01-29 15:29     ` Alexander Graf
2009-01-29 15:46       ` Anthony Liguori

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1233228298-4844-6-git-send-email-agraf@suse.de \
    --to=agraf@suse.de \
    --cc=qemu-devel@nongnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).