From d9d141391234f9b4b6ef3ddd1ac6b930c0dd5051 Mon Sep 17 00:00:00 2001 From: Jeroen Meijer Date: Wed, 16 Feb 2005 22:28:17 +0000 Subject: [PATCH] Improve parsing of unknown text2 order members git-svn-id: svn://svn.code.sf.net/p/rdesktop/code/trunk/rdesktop@812 423420c4-83ab-492f-b58f-81f9feb106b5 --- orders.c | 24 +++++++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) diff --git a/orders.c b/orders.c index 6c1a105..14f83f4 100644 --- a/orders.c +++ b/orders.c @@ -606,9 +606,27 @@ process_text2(STREAM s, TEXT2_ORDER * os, uint32 present, BOOL delta) if (present & 0x002000) in_uint16_le(s, os->boxbottom); - if (present & 0x004000) /* fix for connecting to a server that */ - in_uint8s(s, 10); /* was disconnected with mstsc.exe */ - /* 0x008000, 0x020000, and 0x040000 are present too ??? */ + /* + * Unknown members, seen when connecting to a session that was disconnected with + * mstsc and with wintach's spreadsheet test. + */ + if (present & 0x004000) + in_uint8s(s, 1); + + if (present & 0x008000) + in_uint8s(s, 1); + + if (present & 0x010000) + { + in_uint8s(s, 1); /* guessing the length here */ + warning("Unknown order state member (0x010000) in text2 order.\n"); + } + + if (present & 0x020000) + in_uint8s(s, 4); + + if (present & 0x040000) + in_uint8s(s, 4); if (present & 0x080000) in_uint16_le(s, os->x);