|
|
@ -428,17 +428,20 @@ libxrdp_send_pointer(struct xrdp_session *session, int cache_idx,
|
|
|
|
int data_bytes;
|
|
|
|
int data_bytes;
|
|
|
|
|
|
|
|
|
|
|
|
DEBUG(("libxrdp_send_pointer sending cursor"));
|
|
|
|
DEBUG(("libxrdp_send_pointer sending cursor"));
|
|
|
|
|
|
|
|
if (bpp == 0)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
bpp = 24;
|
|
|
|
|
|
|
|
}
|
|
|
|
/* error check */
|
|
|
|
/* error check */
|
|
|
|
if ((session->client_info->pointer_flags & 1) == 0)
|
|
|
|
if ((session->client_info->pointer_flags & 1) == 0)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
if (bpp != 0)
|
|
|
|
if (bpp != 24)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
g_writeln("libxrdp_send_pointer: error");
|
|
|
|
g_writeln("libxrdp_send_pointer: error");
|
|
|
|
return 1;
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if ((bpp != 0) && (bpp == 15) && (bpp != 16) &&
|
|
|
|
if ((bpp == 15) && (bpp != 16) && (bpp != 24) && (bpp != 32))
|
|
|
|
(bpp != 24) && (bpp != 32))
|
|
|
|
|
|
|
|
{
|
|
|
|
{
|
|
|
|
g_writeln("libxrdp_send_pointer: error");
|
|
|
|
g_writeln("libxrdp_send_pointer: error");
|
|
|
|
return 1;
|
|
|
|
return 1;
|
|
|
@ -446,7 +449,7 @@ libxrdp_send_pointer(struct xrdp_session *session, int cache_idx,
|
|
|
|
make_stream(s);
|
|
|
|
make_stream(s);
|
|
|
|
init_stream(s, 8192);
|
|
|
|
init_stream(s, 8192);
|
|
|
|
xrdp_rdp_init_data((struct xrdp_rdp *)session->rdp, s);
|
|
|
|
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, RDP_POINTER_COLOR);
|
|
|
|
out_uint16_le(s, 0); /* pad */
|
|
|
|
out_uint16_le(s, 0); /* pad */
|
|
|
@ -481,7 +484,6 @@ libxrdp_send_pointer(struct xrdp_session *session, int cache_idx,
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
break;
|
|
|
|
case 0:
|
|
|
|
|
|
|
|
case 24:
|
|
|
|
case 24:
|
|
|
|
p = data;
|
|
|
|
p = data;
|
|
|
|
for (i = 0; i < 32; i++)
|
|
|
|
for (i = 0; i < 32; i++)
|
|
|
|