📄 vnc-protocol-fixes
字号:
# HG changeset patch# User Steven Smith <ssmith@xensource.com># Node ID ca3abb3804f4400b24037a4366cb2ca5e51ed742# Parent 7fca81d456b2cb40d4effe2492f7ed1aafd32f52[HVM][VNC] Make sure that qemu doesn't go into an infinite loop whenit receives certain invalid requests from the viewer.Signed-off-by: Steven Smith <sos22@cam.ac.uk>Index: ioemu/vnc.c===================================================================--- ioemu.orig/vnc.c 2007-05-03 19:49:33.000000000 +0100+++ ioemu/vnc.c 2007-05-03 19:49:43.000000000 +0100@@ -26,6 +26,7 @@ #include "vl.h" #include "qemu_socket.h"+#include <assert.h> #define VNC_REFRESH_INTERVAL (1000 / 30) @@ -710,8 +711,10 @@ memmove(vs->input.buffer, vs->input.buffer + len, vs->input.offset - len); vs->input.offset -= len;- } else+ } else {+ assert(ret > vs->read_handler_expect); vs->read_handler_expect = ret;+ } } } @@ -1100,8 +1103,12 @@ if (len == 1) return 4; - if (len == 4)- return 4 + (read_u16(data, 2) * 4);+ if (len == 4) {+ uint16_t v;+ v = read_u16(data, 2);+ if (v)+ return 4 + v * 4;+ } limit = read_u16(data, 2); for (i = 0; i < limit; i++) {@@ -1135,8 +1142,12 @@ if (len == 1) return 8; - if (len == 8)- return 8 + read_u32(data, 4);+ if (len == 8) {+ uint32_t v;+ v = read_u32(data, 4);+ if (v)+ return 8 + v;+ } client_cut_text(vs, read_u32(data, 4), data + 8); break;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -