More proof-of-concept:
* Send a hardcoded string to the server when it wants our clipboard data. git-svn-id: svn://svn.code.sf.net/p/rdesktop/code/trunk/rdesktop@384 423420c4-83ab-492f-b58f-81f9feb106b5
This commit is contained in:
parent
3e8d6179ad
commit
8c019fe34a
58
cliprdr.c
58
cliprdr.c
@ -294,8 +294,12 @@ cliprdr_send_format_announce(void)
|
|||||||
out_uint16_le(s, 0);
|
out_uint16_le(s, 0);
|
||||||
out_uint32_le(s, number_of_formats*36);
|
out_uint32_le(s, number_of_formats*36);
|
||||||
|
|
||||||
out_uint32_le(s, 0xd); // FIXME: This is a rather bogus unicode text description..
|
// out_uint32_le(s, 0xd); // FIXME: This is a rather bogus unicode text description..
|
||||||
// rdp_out_unistr(s, "", 16);
|
// rdp_out_unistr(s, "", 16);
|
||||||
|
// out_uint8s(s, 32);
|
||||||
|
|
||||||
|
|
||||||
|
out_uint32_le(s, 1); // FIXME: This is a rather bogus text description..
|
||||||
out_uint8s(s, 32);
|
out_uint8s(s, 32);
|
||||||
|
|
||||||
out_uint32_le(s, 0);
|
out_uint32_le(s, 0);
|
||||||
@ -346,6 +350,54 @@ void cliprdr_handle_server_data(uint32 length, STREAM s)
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void cliprdr_handle_server_data_request(STREAM s)
|
||||||
|
{
|
||||||
|
uint32 remaining_length;
|
||||||
|
uint32 wanted_formatcode, pad;
|
||||||
|
int ret;
|
||||||
|
STREAM out;
|
||||||
|
|
||||||
|
in_uint32_le(s, remaining_length);
|
||||||
|
in_uint32_le(s, wanted_formatcode);
|
||||||
|
in_uint32_le(s, pad);
|
||||||
|
|
||||||
|
/* FIXME: Check that we support this formatcode */
|
||||||
|
|
||||||
|
DEBUG_CLIPBOARD(("Request from server for format %d\n",
|
||||||
|
wanted_formatcode));
|
||||||
|
|
||||||
|
out = sec_init(encryption ? SEC_ENCRYPT : 0,
|
||||||
|
26);
|
||||||
|
out_uint32_le(out, 18);
|
||||||
|
out_uint32_le(out, 0x13);
|
||||||
|
out_uint16_le(out, 5);
|
||||||
|
out_uint16_le(out, 1);
|
||||||
|
out_uint32_le(out, 6);
|
||||||
|
out_uint8p(out, "fnorp", 6);
|
||||||
|
out_uint32_le(out, 0);
|
||||||
|
|
||||||
|
s_mark_end(out);
|
||||||
|
|
||||||
|
sec_send_to_channel(out, encryption ? SEC_ENCRYPT : 0, 1005); // FIXME: Don't hardcode channel!
|
||||||
|
|
||||||
|
/*
|
||||||
|
if (1 != wanted_formatcode)
|
||||||
|
{
|
||||||
|
out = sec_init(encryption ? SEC_ENCRYPT : 0,
|
||||||
|
20);
|
||||||
|
out_uint32_le(s, 12);
|
||||||
|
out_uint32_le(s, 0x13);
|
||||||
|
out_uint16_le(s, 5);
|
||||||
|
out_uint16_le(s, 2);
|
||||||
|
out_uint32_le(s, 0);
|
||||||
|
out_uint32_le(s, 0);
|
||||||
|
s_mark_end(s);
|
||||||
|
sec_send_to_channel(s, encryption ? SEC_ENCRYPT : 0, 1005); // FIXME: Don't hardcode channel!
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void cliprdr_callback(STREAM s)
|
void cliprdr_callback(STREAM s)
|
||||||
{
|
{
|
||||||
uint32 length, flags;
|
uint32 length, flags;
|
||||||
@ -384,7 +436,11 @@ void cliprdr_callback(STREAM s)
|
|||||||
} else if (5 == ptype0 && 1 == ptype1)
|
} else if (5 == ptype0 && 1 == ptype1)
|
||||||
{
|
{
|
||||||
cliprdr_handle_server_data(length, s);
|
cliprdr_handle_server_data(length, s);
|
||||||
|
} else if (4 == ptype0 && 0 == ptype1)
|
||||||
|
{
|
||||||
|
cliprdr_handle_server_data_request(s);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user