diff options
author | akallabeth <akallabeth@posteo.net> | 2022-11-04 11:38:53 +0300 |
---|---|---|
committer | David Fort <rdp.effort@gmail.com> | 2022-11-04 16:46:58 +0300 |
commit | dbbff452cd8162f24352b4b50f3d96c0332e4373 (patch) | |
tree | 55fcedf9ae34a333423654c33638c49f1f966a90 | |
parent | 2ef506cff2d2ac41d09974ff209b802481e1b598 (diff) |
Added better logging for font map PDU
rdp_recv_font_map_pdu now logs some warnings if some expected values
are not found in the PDU
-rw-r--r-- | libfreerdp/core/activation.c | 32 |
1 files changed, 28 insertions, 4 deletions
diff --git a/libfreerdp/core/activation.c b/libfreerdp/core/activation.c index 90cd4d134..af9e9ce35 100644 --- a/libfreerdp/core/activation.c +++ b/libfreerdp/core/activation.c @@ -511,6 +511,8 @@ BOOL rdp_send_client_font_list_pdu(rdpRdp* rdp, UINT16 flags) BOOL rdp_recv_font_map_pdu(rdpRdp* rdp, wStream* s) { + UINT16 numberEntries, totalNumEntries, mapFlags, entrySize; + WINPR_ASSERT(rdp); WINPR_ASSERT(rdp->settings); WINPR_ASSERT(s); @@ -519,10 +521,32 @@ BOOL rdp_recv_font_map_pdu(rdpRdp* rdp, wStream* s) if (!Stream_CheckAndLogRequiredLength(TAG, s, 8)) return FALSE; - Stream_Seek_UINT16(s); /* numberEntries (2 bytes) */ - Stream_Seek_UINT16(s); /* totalNumEntries (2 bytes) */ - Stream_Seek_UINT16(s); /* mapFlags (2 bytes) */ - Stream_Seek_UINT16(s); /* entrySize (2 bytes) */ + Stream_Read_UINT16(s, numberEntries); /* numberEntries (2 bytes) */ + if (numberEntries != 0) + WLog_WARN(TAG, + "[MS-RDPBCGR] 2.2.1.22.1 Font Map PDU Data (TS_FONT_MAP_PDU)::numberEntries != 0 " + "[%" PRIu16 "]", + numberEntries); + Stream_Read_UINT16(s, totalNumEntries); /* totalNumEntries (2 bytes) */ + if (totalNumEntries != 0) + WLog_WARN(TAG, + "[MS-RDPBCGR] 2.2.1.22.1 Font Map PDU Data (TS_FONT_MAP_PDU)::totalNumEntries != " + "0 [%" PRIu16 "]", + totalNumEntries); + Stream_Read_UINT16(s, mapFlags); /* mapFlags (2 bytes) */ + if (mapFlags != 0) + WLog_WARN(TAG, + "[MS-RDPBCGR] 2.2.1.22.1 Font Map PDU Data (TS_FONT_MAP_PDU)::mapFlags != 0x0003 " + "(FONTLIST_FIRST | FONTLIST_LAST) " + "[0x%04" PRIx16 "]", + mapFlags); + Stream_Read_UINT16(s, entrySize); /* entrySize (2 bytes) */ + if (entrySize != 4) + WLog_WARN( + TAG, + "[MS-RDPBCGR] 2.2.1.22.1 Font Map PDU Data (TS_FONT_MAP_PDU)::entrySize != 4 [%" PRIu16 + "]", + entrySize); return rdp_finalize_set_flag(rdp, FINALIZE_SC_FONT_MAP_PDU); } |