summaryrefslogtreecommitdiffstats
path: root/libxrdp/xrdp_iso.c
diff options
context:
space:
mode:
Diffstat (limited to 'libxrdp/xrdp_iso.c')
-rw-r--r--libxrdp/xrdp_iso.c18
1 files changed, 12 insertions, 6 deletions
diff --git a/libxrdp/xrdp_iso.c b/libxrdp/xrdp_iso.c
index d851c1bb..04186ea9 100644
--- a/libxrdp/xrdp_iso.c
+++ b/libxrdp/xrdp_iso.c
@@ -86,7 +86,7 @@ xrdp_iso_recv_msg(struct xrdp_iso *self, struct stream *s, int *code)
}
else
{
- in_uint8s(s, 5);
+ in_uint8s(s, 13);
}
return 0;
@@ -126,14 +126,20 @@ xrdp_iso_send_msg(struct xrdp_iso *self, struct stream *s, int code)
return 1;
}
- out_uint8(s, 3);
- out_uint8(s, 0);
- out_uint16_be(s, 11); /* length */
- out_uint8(s, 6);
+ /* TPKT HEADER */
+ out_uint8(s, 3); /* version */
+ out_uint8(s, 0); /* RESERVED */
+ out_uint16_be(s, 19); /* length */
+ /* ISO LAYER */
+ out_uint8(s, 14); /* length */
out_uint8(s, code);
out_uint16_le(s, 0);
- out_uint16_le(s, 0);
+ out_uint16_le(s, 4660);
out_uint8(s, 0);
+ out_uint8(s, 2); /* TYPE_RDP_NEG_RSP */
+ out_uint8(s, 1); /* flags */
+ out_uint16_le(s, 8); /* length */
+ out_uint32_le(s, 0); /* selectedProtocol: 0 = RDP , 1 = TLS , 2 = CREDSSP */
s_mark_end(s);
if (xrdp_tcp_send(self->tcp_layer, s) != 0)