|
|
|
@ -60,12 +60,12 @@ typedef struct Buffer |
|
|
|
{ |
|
|
|
size_t capacity; |
|
|
|
size_t offset; |
|
|
|
char *buffer; |
|
|
|
uint8_t *buffer; |
|
|
|
} Buffer; |
|
|
|
|
|
|
|
typedef struct VncState VncState; |
|
|
|
|
|
|
|
typedef int VncReadEvent(VncState *vs, char *data, size_t len); |
|
|
|
typedef int VncReadEvent(VncState *vs, uint8_t *data, size_t len); |
|
|
|
|
|
|
|
typedef void VncWritePixels(VncState *vs, void *data, int size); |
|
|
|
|
|
|
|
@ -376,7 +376,7 @@ static void vnc_write_pixels_generic(VncState *vs, void *pixels1, int size) |
|
|
|
static void send_framebuffer_update_raw(VncState *vs, int x, int y, int w, int h) |
|
|
|
{ |
|
|
|
int i; |
|
|
|
char *row; |
|
|
|
uint8_t *row; |
|
|
|
|
|
|
|
vnc_framebuffer_update(vs, x, y, w, h, 0); |
|
|
|
|
|
|
|
@ -440,8 +440,8 @@ static void send_framebuffer_update(VncState *vs, int x, int y, int w, int h) |
|
|
|
static void vnc_copy(DisplayState *ds, int src_x, int src_y, int dst_x, int dst_y, int w, int h) |
|
|
|
{ |
|
|
|
int src, dst; |
|
|
|
char *src_row; |
|
|
|
char *dst_row; |
|
|
|
uint8_t *src_row; |
|
|
|
uint8_t *dst_row; |
|
|
|
char *old_row; |
|
|
|
int y = 0; |
|
|
|
int pitch = ds->linesize; |
|
|
|
@ -499,7 +499,7 @@ static void vnc_update_client(void *opaque) |
|
|
|
|
|
|
|
if (vs->need_update && vs->csock != -1) { |
|
|
|
int y; |
|
|
|
char *row; |
|
|
|
uint8_t *row; |
|
|
|
char *old_row; |
|
|
|
uint32_t width_mask[VNC_DIRTY_WORDS]; |
|
|
|
int n_rectangles; |
|
|
|
@ -516,10 +516,11 @@ static void vnc_update_client(void *opaque) |
|
|
|
for (y = 0; y < vs->height; y++) { |
|
|
|
if (vnc_and_bits(vs->dirty_row[y], width_mask, VNC_DIRTY_WORDS)) { |
|
|
|
int x; |
|
|
|
char *ptr, *old_ptr; |
|
|
|
uint8_t *ptr; |
|
|
|
char *old_ptr; |
|
|
|
|
|
|
|
ptr = row; |
|
|
|
old_ptr = old_row; |
|
|
|
old_ptr = (char*)old_row; |
|
|
|
|
|
|
|
for (x = 0; x < vs->ds->width; x += 16) { |
|
|
|
if (memcmp(old_ptr, ptr, 16 * vs->depth) == 0) { |
|
|
|
@ -622,7 +623,7 @@ static int buffer_empty(Buffer *buffer) |
|
|
|
return buffer->offset == 0; |
|
|
|
} |
|
|
|
|
|
|
|
static char *buffer_end(Buffer *buffer) |
|
|
|
static uint8_t *buffer_end(Buffer *buffer) |
|
|
|
{ |
|
|
|
return buffer->buffer + buffer->offset; |
|
|
|
} |
|
|
|
@ -853,7 +854,7 @@ static ssize_t vnc_tls_pull(gnutls_transport_ptr_t transport, |
|
|
|
} |
|
|
|
#endif /* CONFIG_VNC_TLS */ |
|
|
|
|
|
|
|
static void client_cut_text(VncState *vs, size_t len, char *text) |
|
|
|
static void client_cut_text(VncState *vs, size_t len, uint8_t *text) |
|
|
|
{ |
|
|
|
} |
|
|
|
|
|
|
|
@ -1181,7 +1182,7 @@ static void set_pixel_format(VncState *vs, |
|
|
|
vga_hw_update(); |
|
|
|
} |
|
|
|
|
|
|
|
static int protocol_client_msg(VncState *vs, char *data, size_t len) |
|
|
|
static int protocol_client_msg(VncState *vs, uint8_t *data, size_t len) |
|
|
|
{ |
|
|
|
int i; |
|
|
|
uint16_t limit; |
|
|
|
@ -1254,7 +1255,7 @@ static int protocol_client_msg(VncState *vs, char *data, size_t len) |
|
|
|
return 0; |
|
|
|
} |
|
|
|
|
|
|
|
static int protocol_client_init(VncState *vs, char *data, size_t len) |
|
|
|
static int protocol_client_init(VncState *vs, uint8_t *data, size_t len) |
|
|
|
{ |
|
|
|
char pad[3] = { 0, 0, 0 }; |
|
|
|
char buf[1024]; |
|
|
|
@ -1327,11 +1328,11 @@ static void make_challenge(VncState *vs) |
|
|
|
vs->challenge[i] = (int) (256.0*rand()/(RAND_MAX+1.0)); |
|
|
|
} |
|
|
|
|
|
|
|
static int protocol_client_auth_vnc(VncState *vs, char *data, size_t len) |
|
|
|
static int protocol_client_auth_vnc(VncState *vs, uint8_t *data, size_t len) |
|
|
|
{ |
|
|
|
char response[VNC_AUTH_CHALLENGE_SIZE]; |
|
|
|
unsigned char response[VNC_AUTH_CHALLENGE_SIZE]; |
|
|
|
int i, j, pwlen; |
|
|
|
char key[8]; |
|
|
|
unsigned char key[8]; |
|
|
|
|
|
|
|
if (!vs->password || !vs->password[0]) { |
|
|
|
VNC_DEBUG("No password configured on server"); |
|
|
|
@ -1738,7 +1739,7 @@ static int vnc_start_tls(struct VncState *vs) { |
|
|
|
return vnc_continue_handshake(vs); |
|
|
|
} |
|
|
|
|
|
|
|
static int protocol_client_vencrypt_auth(VncState *vs, char *data, size_t len) |
|
|
|
static int protocol_client_vencrypt_auth(VncState *vs, uint8_t *data, size_t len) |
|
|
|
{ |
|
|
|
int auth = read_u32(data, 0); |
|
|
|
|
|
|
|
@ -1768,7 +1769,7 @@ static int protocol_client_vencrypt_auth(VncState *vs, char *data, size_t len) |
|
|
|
return 0; |
|
|
|
} |
|
|
|
|
|
|
|
static int protocol_client_vencrypt_init(VncState *vs, char *data, size_t len) |
|
|
|
static int protocol_client_vencrypt_init(VncState *vs, uint8_t *data, size_t len) |
|
|
|
{ |
|
|
|
if (data[0] != 0 || |
|
|
|
data[1] != 2) { |
|
|
|
@ -1798,7 +1799,7 @@ static int start_auth_vencrypt(VncState *vs) |
|
|
|
} |
|
|
|
#endif /* CONFIG_VNC_TLS */ |
|
|
|
|
|
|
|
static int protocol_client_auth(VncState *vs, char *data, size_t len) |
|
|
|
static int protocol_client_auth(VncState *vs, uint8_t *data, size_t len) |
|
|
|
{ |
|
|
|
/* We only advertise 1 auth scheme at a time, so client
|
|
|
|
* must pick the one we sent. Verify this */ |
|
|
|
@ -1847,7 +1848,7 @@ static int protocol_client_auth(VncState *vs, char *data, size_t len) |
|
|
|
return 0; |
|
|
|
} |
|
|
|
|
|
|
|
static int protocol_version(VncState *vs, char *version, size_t len) |
|
|
|
static int protocol_version(VncState *vs, uint8_t *version, size_t len) |
|
|
|
{ |
|
|
|
char local[13]; |
|
|
|
|
|
|
|
|