Fix some more warnings
[qemu] / vnc.c
diff --git a/vnc.c b/vnc.c
index 62dd317..e1ff4ed 100644 (file)
--- a/vnc.c
+++ b/vnc.c
@@ -171,7 +171,7 @@ struct VncState
     int client_blue_shift, client_blue_max, server_blue_shift, server_blue_max;
 
     CaptureVoiceOut *audio_cap;
-    audsettings_t as;
+    struct audsettings as;
 
     VncReadEvent *read_handler;
     size_t read_handler_expect;
@@ -183,7 +183,7 @@ static VncState *vnc_state; /* needed for info vnc */
 
 void do_info_vnc(void)
 {
-    if (vnc_state == NULL)
+    if (vnc_state == NULL || vnc_state->display == NULL)
        term_printf("VNC server disabled\n");
     else {
        term_printf("VNC server active on: ");
@@ -1503,10 +1503,13 @@ static int protocol_client_msg(VncState *vs, uint8_t *data, size_t len)
        if (len == 1)
            return 4;
 
-       if (len == 4)
-           return 4 + (read_u16(data, 2) * 4);
+       if (len == 4) {
+            limit = read_u16(data, 2);
+            if (limit > 0)
+                return 4 + (limit * 4);
+        } else
+            limit = read_u16(data, 2);
 
-       limit = read_u16(data, 2);
        for (i = 0; i < limit; i++) {
            int32_t val = read_s32(data, 4 + (i * 4));
            memcpy(data + 4 + (i * 4), &val, sizeof(val));
@@ -2543,8 +2546,8 @@ int vnc_display_open(DisplayState *ds, const char *display)
         char *dpy;
         dpy = qemu_malloc(256);
         if (strncmp(display, "unix:", 5) == 0) {
-            strcpy(dpy, "unix:");
-            vs->lsock = unix_listen(display, dpy+5, 256-5);
+            pstrcpy(dpy, 256, "unix:");
+            vs->lsock = unix_listen(display+5, dpy+5, 256-5);
         } else {
             vs->lsock = inet_listen(display, dpy, 256, SOCK_STREAM, 5900);
         }