diff options
author | Jay Sorg <jay.sorg@gmail.com> | 2013-05-20 11:50:05 -0700 |
---|---|---|
committer | Jay Sorg <jay.sorg@gmail.com> | 2013-05-20 11:50:05 -0700 |
commit | 2039bbe397b9cdd937eed196e987ade4e194e65c (patch) | |
tree | 4e547b24100598af2a1c7d981d0afc4cbb195fed /libxrdp | |
parent | bc2c50602e8370875c7c02299dbec09e8300797d (diff) | |
download | xrdp-proprietary-2039bbe397b9cdd937eed196e987ade4e194e65c.tar.gz xrdp-proprietary-2039bbe397b9cdd937eed196e987ade4e194e65c.zip |
xrdp: fix for non 'new' cursor clients like rdesktop
Diffstat (limited to 'libxrdp')
-rw-r--r-- | libxrdp/libxrdp.c | 12 |
1 files 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++) |