check for RDP PDU size too small and remove 0x8000 length check
This commit is contained in:
parent
6cf7c913f8
commit
bb4a15b5dc
@ -226,14 +226,16 @@ xrdp_rdp_recv(struct xrdp_rdp* self, struct stream* s, int* code)
|
|||||||
{
|
{
|
||||||
s->p = s->next_packet;
|
s->p = s->next_packet;
|
||||||
}
|
}
|
||||||
in_uint16_le(s, len);
|
if (!s_check_rem(s, 6))
|
||||||
if (len == 0x8000)
|
|
||||||
{
|
{
|
||||||
s->next_packet += 8;
|
s->next_packet = 0;
|
||||||
*code = 0;
|
*code = 0;
|
||||||
DEBUG(("out xrdp_rdp_recv"));
|
DEBUG(("out xrdp_rdp_recv"));
|
||||||
|
len = (int)(s->end - s->p);
|
||||||
|
g_writeln("xrdp_rdp_recv: bad RDP packet, length [%d]", len);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
in_uint16_le(s, len);
|
||||||
in_uint16_le(s, pdu_code);
|
in_uint16_le(s, pdu_code);
|
||||||
*code = pdu_code & 0xf;
|
*code = pdu_code & 0xf;
|
||||||
in_uint8s(s, 2); /* mcs user id */
|
in_uint8s(s, 2); /* mcs user id */
|
||||||
|
Loading…
Reference in New Issue
Block a user