check for RDP PDU size too small and remove 0x8000 length check

This commit is contained in:
jsorg71 2009-12-23 07:04:32 +00:00
parent 6cf7c913f8
commit bb4a15b5dc

View File

@ -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 */