From efbbedfa704e3d90da66c8394e859cd0380a435c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc-Andr=C3=A9=20Moreau?= Date: Sun, 7 Aug 2011 09:27:52 -0400 Subject: [PATCH] libfreerdp-core: parse all updates in the update array --- libfreerdp-core/update.c | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/libfreerdp-core/update.c b/libfreerdp-core/update.c index ce3ea9e59..52c3b024c 100644 --- a/libfreerdp-core/update.c +++ b/libfreerdp-core/update.c @@ -189,6 +189,25 @@ void update_recv(rdpUpdate* update, STREAM* s) } IFCALL(update->EndPaint, update); + + if (stream_get_left(s) > RDP_SHARE_DATA_HEADER_LENGTH) + { + uint8 type; + uint16 pduType; + uint16 length; + uint16 source; + uint32 shareId; + + rdp_read_share_control_header(s, &length, &pduType, &source); + + if (pduType != PDU_TYPE_DATA) + return; + + rdp_read_share_data_header(s, &length, &type, &shareId); + + if (type == DATA_PDU_TYPE_UPDATE) + update_recv(update, s); + } } rdpUpdate* update_new(rdpRdp* rdp)