From 2039bbe397b9cdd937eed196e987ade4e194e65c Mon Sep 17 00:00:00 2001 From: Jay Sorg Date: Mon, 20 May 2013 11:50:05 -0700 Subject: [PATCH] xrdp: fix for non 'new' cursor clients like rdesktop --- libxrdp/libxrdp.c | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/libxrdp/libxrdp.c b/libxrdp/libxrdp.c index 91ff1e35..19e8a2c6 100644 --- a/libxrdp/libxrdp.c +++ b/libxrdp/libxrdp.c @@ -428,17 +428,20 @@ libxrdp_send_pointer(struct xrdp_session *session, int cache_idx, int data_bytes; DEBUG(("libxrdp_send_pointer sending cursor")); + if (bpp == 0) + { + bpp = 24; + } /* error check */ if ((session->client_info->pointer_flags & 1) == 0) { - if (bpp != 0) + if (bpp != 24) { g_writeln("libxrdp_send_pointer: error"); return 1; } } - if ((bpp != 0) && (bpp == 15) && (bpp != 16) && - (bpp != 24) && (bpp != 32)) + if ((bpp == 15) && (bpp != 16) && (bpp != 24) && (bpp != 32)) { g_writeln("libxrdp_send_pointer: error"); return 1; @@ -446,7 +449,7 @@ libxrdp_send_pointer(struct xrdp_session *session, int cache_idx, make_stream(s); init_stream(s, 8192); xrdp_rdp_init_data((struct xrdp_rdp *)session->rdp, s); - if (bpp == 0) + if ((session->client_info->pointer_flags & 1) == 0) { out_uint16_le(s, RDP_POINTER_COLOR); out_uint16_le(s, 0); /* pad */ @@ -481,7 +484,6 @@ libxrdp_send_pointer(struct xrdp_session *session, int cache_idx, } } break; - case 0: case 24: p = data; for (i = 0; i < 32; i++)