platform/upstream/freerdp.git
5 years agoRemoved duplcate NULL checks.
Armin Novak [Thu, 22 Nov 2018 10:21:57 +0000 (11:21 +0100)]
Removed duplcate NULL checks.

5 years agoFixed NULL access checks.
Armin Novak [Thu, 22 Nov 2018 10:19:12 +0000 (11:19 +0100)]
Fixed NULL access checks.

5 years agoFixed freerdp_assistance_parse_address_list
Armin Novak [Thu, 22 Nov 2018 10:17:13 +0000 (11:17 +0100)]
Fixed freerdp_assistance_parse_address_list

* Return a proper error in case parsing fails.
* Don't duplicate string as we already operate on a duplicate.

5 years agoFixed test_msrsc_incident_file_type1 return checks.
Armin Novak [Thu, 22 Nov 2018 10:16:43 +0000 (11:16 +0100)]
Fixed test_msrsc_incident_file_type1 return checks.

5 years agoFixed memory leak in reallocate.
Armin Novak [Wed, 21 Nov 2018 14:03:30 +0000 (15:03 +0100)]
Fixed memory leak in reallocate.

5 years agoUpdated windows shadow server assistance usage.
Armin Novak [Mon, 12 Nov 2018 12:40:40 +0000 (13:40 +0100)]
Updated windows shadow server assistance usage.

5 years agoUse blocking sockets in freerdp_tcp_connect_multi
Armin Novak [Mon, 12 Nov 2018 11:37:33 +0000 (12:37 +0100)]
Use blocking sockets in freerdp_tcp_connect_multi

The non blocking connect in freerdp_tcp_connect_multi did not
work reliably.
Fall back to blocking connect (which might take longer until the connection
is established) instead of not being able to connect at all.

5 years agoFixed socket cleanup in connect multi.
Armin Novak [Mon, 12 Nov 2018 10:16:24 +0000 (11:16 +0100)]
Fixed socket cleanup in connect multi.

5 years agoDisable NLA for remote assistance.
Armin Novak [Mon, 12 Nov 2018 09:34:21 +0000 (10:34 +0100)]
Disable NLA for remote assistance.

5 years agoFixed version check for remote assistance channel.
Armin Novak [Mon, 12 Nov 2018 09:33:46 +0000 (10:33 +0100)]
Fixed version check for remote assistance channel.

5 years agoFixed assistance unit test.
Armin Novak [Mon, 12 Nov 2018 08:19:38 +0000 (09:19 +0100)]
Fixed assistance unit test.

5 years agoFixed event check in freerdp_tcp_connect_multi
Armin Novak [Fri, 9 Nov 2018 14:21:13 +0000 (15:21 +0100)]
Fixed event check in freerdp_tcp_connect_multi

5 years agoSet username from assistance file.
Armin Novak [Fri, 9 Nov 2018 14:20:37 +0000 (15:20 +0100)]
Set username from assistance file.

5 years agoUnified address parsing for assistance files.
Armin Novak [Fri, 9 Nov 2018 13:42:10 +0000 (14:42 +0100)]
Unified address parsing for assistance files.

5 years agoassistance v2 support
Armin Novak [Thu, 8 Nov 2018 08:27:57 +0000 (09:27 +0100)]
assistance v2 support

5 years agoMerge pull request #5051 from akallabeth/libressl_fix
Martin Fleisz [Thu, 22 Nov 2018 09:45:12 +0000 (10:45 +0100)]
Merge pull request #5051 from akallabeth/libressl_fix

Fix #5049: LibreSSL does not have SSL_CTX_set_security_level

5 years agoFix #5049: LibreSSL does not have SSL_CTX_set_security_level
Armin Novak [Thu, 22 Nov 2018 08:23:46 +0000 (09:23 +0100)]
Fix #5049: LibreSSL does not have SSL_CTX_set_security_level

5 years agoMerge pull request #5045 from akallabeth/license_double_free_fix
David Fort [Wed, 21 Nov 2018 15:03:18 +0000 (16:03 +0100)]
Merge pull request #5045 from akallabeth/license_double_free_fix

Fixed double free in license_free_binary_blob

5 years agoMerge pull request #5016 from akallabeth/windows_server_build_fix
Martin Fleisz [Wed, 21 Nov 2018 15:02:47 +0000 (16:02 +0100)]
Merge pull request #5016 from akallabeth/windows_server_build_fix

Windows server build fix

5 years agoFixed double free in license_free_binary_blob
Armin Novak [Wed, 21 Nov 2018 14:03:42 +0000 (15:03 +0100)]
Fixed double free in license_free_binary_blob

5 years agoMerge pull request #5041 from akallabeth/compile_fix
MartinHaimberger [Wed, 21 Nov 2018 14:06:58 +0000 (15:06 +0100)]
Merge pull request #5041 from akallabeth/compile_fix

Fix #5037: Fix calls to ntlm_print_av_pair_list

5 years agoMerge pull request #5039 from mcsong/master
akallabeth [Wed, 21 Nov 2018 10:49:45 +0000 (11:49 +0100)]
Merge pull request #5039 from mcsong/master

Fixed recreate activity issue with bluetooth devices.

5 years agoFixed broken DEBUG_RDP log message.
Armin Novak [Wed, 21 Nov 2018 08:55:38 +0000 (09:55 +0100)]
Fixed broken DEBUG_RDP log message.

5 years agoFix #5037: Fix calls to ntlm_print_av_pair_list
Armin Novak [Wed, 21 Nov 2018 08:18:38 +0000 (09:18 +0100)]
Fix #5037: Fix calls to ntlm_print_av_pair_list

5 years agoFixed recreate activity issue when a bluetooth device connected or disconnected
mcsong [Tue, 20 Nov 2018 21:11:14 +0000 (13:11 -0800)]
Fixed recreate activity issue when a bluetooth device connected or disconnected

5 years agoFixed recreate activity issue when a bluetooth device connected or disconnected.
mcsong [Tue, 20 Nov 2018 20:57:07 +0000 (12:57 -0800)]
Fixed recreate activity issue when a bluetooth device connected or disconnected.

5 years agoMerge pull request #5008 from wintersandroid/master
akallabeth [Tue, 20 Nov 2018 11:14:28 +0000 (12:14 +0100)]
Merge pull request #5008 from wintersandroid/master

Android library build script fixes, and Android thread lock on remote disconnect.

5 years agoMerge pull request #5033 from bmiklautz/dev5
akallabeth [Tue, 20 Nov 2018 11:05:47 +0000 (12:05 +0100)]
Merge pull request #5033 from bmiklautz/dev5

new: development cycle dev5

5 years agonew: development cycle dev5
Bernhard Miklautz [Tue, 20 Nov 2018 10:49:34 +0000 (11:49 +0100)]
new: development cycle dev5

5 years agoMerge pull request #5032 from bmiklautz/rc4 2.0.0-rc4
akallabeth [Tue, 20 Nov 2018 10:43:51 +0000 (11:43 +0100)]
Merge pull request #5032 from bmiklautz/rc4

new: version 2.0.0-rc4

5 years agonew: version 2.0.0-rc4
Bernhard Miklautz [Mon, 12 Nov 2018 13:46:01 +0000 (14:46 +0100)]
new: version 2.0.0-rc4

ChangeLog and version updated

5 years agoMerge pull request #5031 from akallabeth/cve_fixes_final
Bernhard Miklautz [Tue, 20 Nov 2018 10:20:43 +0000 (10:20 +0000)]
Merge pull request #5031 from akallabeth/cve_fixes_final

Cve fixes

5 years agoRefactored ntlm_av_pairs API
Armin Novak [Mon, 22 Oct 2018 14:59:28 +0000 (16:59 +0200)]
Refactored ntlm_av_pairs API

Tightened checks, cleaned up code and improved redability.

5 years agoFixed CVE-2018-8784
Armin Novak [Mon, 22 Oct 2018 15:51:26 +0000 (17:51 +0200)]
Fixed CVE-2018-8784

Thanks to Eyal Itkin from Check Point Software Technologies.

5 years agoFixed CVE-2018-8788
Armin Novak [Mon, 22 Oct 2018 14:52:21 +0000 (16:52 +0200)]
Fixed CVE-2018-8788

Thanks to Eyal Itkin from Check Point Software Technologies.

5 years agoFixed CVE-2018-8787
Armin Novak [Mon, 22 Oct 2018 14:30:20 +0000 (16:30 +0200)]
Fixed CVE-2018-8787

Thanks to Eyal Itkin from Check Point Software Technologies.

5 years agoFixed CVE-2018-8786
Armin Novak [Mon, 22 Oct 2018 14:25:13 +0000 (16:25 +0200)]
Fixed CVE-2018-8786

Thanks to Eyal Itkin from Check Point Software Technologies.

5 years agoFixed CVE-2018-8785
Armin Novak [Mon, 22 Oct 2018 14:20:34 +0000 (16:20 +0200)]
Fixed CVE-2018-8785

Thanks to Eyal Itkin from Check Point Software Technologies.

5 years agoFixed CVE-2018-8789
Armin Novak [Mon, 22 Oct 2018 14:00:03 +0000 (16:00 +0200)]
Fixed CVE-2018-8789

Thanks to Eyal Itkin from Check Point Software Technologies.

5 years agoMerge pull request #4953 from akallabeth/region_signed
Bernhard Miklautz [Tue, 20 Nov 2018 10:07:30 +0000 (10:07 +0000)]
Merge pull request #4953 from akallabeth/region_signed

signed gdi regions to adjust negative coordinates

5 years agoMerge pull request #5030 from akallabeth/pointer_cache_optional
Martin Fleisz [Tue, 20 Nov 2018 09:53:40 +0000 (10:53 +0100)]
Merge pull request #5030 from akallabeth/pointer_cache_optional

Fix #4864: Register pointer cache after PostConnect is called

5 years agoFix #4864: Register pointer cache after PostConnect is called
Armin Novak [Tue, 20 Nov 2018 08:09:52 +0000 (09:09 +0100)]
Fix #4864: Register pointer cache after PostConnect is called

With #4950 client side pointer implementation was made optional.
This addresses an issue that each client had to call
pointer_cache_register_callbacks on its own.

5 years agoFixed invalid NULL check
Armin Novak [Tue, 20 Nov 2018 08:38:02 +0000 (09:38 +0100)]
Fixed invalid NULL check

5 years agoMerge pull request #5029 from mcsong/master
akallabeth [Tue, 20 Nov 2018 08:00:39 +0000 (09:00 +0100)]
Merge pull request #5029 from mcsong/master

added korean translation for aFreeRDP

5 years agoadded korean translation
mcsong [Mon, 19 Nov 2018 22:38:48 +0000 (14:38 -0800)]
added korean translation

5 years agoClip coordinates for lineTo and polyLine
Armin Novak [Mon, 19 Nov 2018 16:24:24 +0000 (17:24 +0100)]
Clip coordinates for lineTo and polyLine

5 years agoFixed signed/unsigned warnings.
Armin Novak [Mon, 19 Nov 2018 16:24:06 +0000 (17:24 +0100)]
Fixed signed/unsigned warnings.

5 years agoFixed glyph cache bounds setting.
Armin Novak [Mon, 19 Nov 2018 12:58:53 +0000 (13:58 +0100)]
Fixed glyph cache bounds setting.

5 years agoFixed gdi_BitBlt coordinate clipping.
Armin Novak [Tue, 13 Nov 2018 16:06:09 +0000 (17:06 +0100)]
Fixed gdi_BitBlt coordinate clipping.

5 years agoFixed opaque rect bounding rectangle.
Armin Novak [Mon, 22 Oct 2018 12:12:22 +0000 (14:12 +0200)]
Fixed opaque rect bounding rectangle.

5 years agosigned gdi regions to adjust negative coordinates
akallabeth [Fri, 19 Oct 2018 15:02:33 +0000 (17:02 +0200)]
signed gdi regions to adjust negative coordinates

5 years agoMerge pull request #5021 from akallabeth/profiler_api_rework
Martin Fleisz [Mon, 19 Nov 2018 09:20:52 +0000 (10:20 +0100)]
Merge pull request #5021 from akallabeth/profiler_api_rework

Fixed profiler API

5 years agoMerge pull request #4940 from akallabeth/check_window_order_support
Bernhard Miklautz [Mon, 19 Nov 2018 09:15:14 +0000 (09:15 +0000)]
Merge pull request #4940 from akallabeth/check_window_order_support

Added checks for order type window support.

5 years agoMerge pull request #5025 from DustPuppyNet/openssl_1_1_1
Bernhard Miklautz [Mon, 19 Nov 2018 08:57:53 +0000 (08:57 +0000)]
Merge pull request #5025 from DustPuppyNet/openssl_1_1_1

fix for connection with openssl 1.1.1

5 years agoRevert store password variable
Mathew Winters [Sun, 18 Nov 2018 19:27:36 +0000 (08:27 +1300)]
Revert store password variable

5 years ago* remove obsolete SSLv23_client_method in tls_connect()
Christian Gall [Sun, 18 Nov 2018 14:09:37 +0000 (14:09 +0000)]
* remove obsolete SSLv23_client_method in tls_connect()
* set min TLS Version

5 years agoMerge pull request #5023 from ileGITimo/master
Bernhard Miklautz [Sat, 17 Nov 2018 18:47:08 +0000 (18:47 +0000)]
Merge pull request #5023 from ileGITimo/master

call xf_SetWindowTitle before XMapWindow

5 years agocall xf_SetWindowTitle before XMapWindow, so window manager can act on window name
ileGITimo [Sat, 17 Nov 2018 14:32:52 +0000 (06:32 -0800)]
call xf_SetWindowTitle before XMapWindow, so window manager can act on window name

5 years agoFixed profiler API
Armin Novak [Thu, 15 Nov 2018 16:52:43 +0000 (17:52 +0100)]
Fixed profiler API

* Duplicate the name internally to avoid issues with stack
* Made API opaque and removed direct dereferencing of struct.

5 years agoMerge pull request #5018 from hardening/windowpos
Bernhard Miklautz [Thu, 15 Nov 2018 16:46:57 +0000 (16:46 +0000)]
Merge pull request #5018 from hardening/windowpos

cmdline: add window-position argument to set initial window position

5 years agoMerge pull request #4989 from akallabeth/dsp_encode_resample
Bernhard Miklautz [Thu, 15 Nov 2018 15:54:56 +0000 (15:54 +0000)]
Merge pull request #4989 from akallabeth/dsp_encode_resample

Added resampling to freerdp_dsp_encode.

5 years agoMerge pull request #4976 from hardening/rfx_flush
Bernhard Miklautz [Thu, 15 Nov 2018 15:25:25 +0000 (15:25 +0000)]
Merge pull request #4976 from hardening/rfx_flush

remotefx: fix rlgr last bits of encoder

5 years agoMerge pull request #4964 from akallabeth/rdg_fixes
Bernhard Miklautz [Thu, 15 Nov 2018 13:48:22 +0000 (13:48 +0000)]
Merge pull request #4964 from akallabeth/rdg_fixes

Rdg/RPC and gateway fixes

5 years agocmdline: add window-position argument to set initial window position
David Fort [Thu, 15 Nov 2018 13:40:03 +0000 (14:40 +0100)]
cmdline: add window-position argument to set initial window position

This is useful if you want the window to be at a given position. The patch also mutualizes
the parsing of <xpos>x<ypos> or <width>x<height> arguments.

5 years agoFixed order mask
Armin Novak [Fri, 19 Oct 2018 09:14:09 +0000 (11:14 +0200)]
Fixed order mask

5 years agoAllow window orders with AllowUnanouncedOrdersFromServer
Armin Novak [Thu, 18 Oct 2018 15:23:06 +0000 (17:23 +0200)]
Allow window orders with AllowUnanouncedOrdersFromServer

5 years agoAdded checks for order type window support.
Armin Novak [Thu, 18 Oct 2018 08:55:48 +0000 (10:55 +0200)]
Added checks for order type window support.

5 years agoMerge pull request #5012 from akallabeth/rail_app_icons
Bernhard Miklautz [Thu, 15 Nov 2018 08:50:56 +0000 (08:50 +0000)]
Merge pull request #5012 from akallabeth/rail_app_icons

Rail app icons

5 years agoReenabled and fixed windows server compile.
Armin Novak [Wed, 14 Nov 2018 14:13:11 +0000 (15:13 +0100)]
Reenabled and fixed windows server compile.

5 years agoFixed windows build warnings.
Armin Novak [Wed, 14 Nov 2018 13:59:58 +0000 (14:59 +0100)]
Fixed windows build warnings.

5 years agoMerge pull request #5015 from chipitsine/cleanup
akallabeth [Thu, 15 Nov 2018 07:43:54 +0000 (08:43 +0100)]
Merge pull request #5015 from chipitsine/cleanup

cleanup based on PVS analyzer findings

5 years agoremove not needed check
Ilya Shipitsin [Wed, 14 Nov 2018 20:54:39 +0000 (01:54 +0500)]
remove not needed check

PVS analyzer: A part of conditional expression is always true: DomainMatch.

5 years agoremove not needed check
Ilya Shipitsin [Wed, 14 Nov 2018 20:51:44 +0000 (01:51 +0500)]
remove not needed check

PVS analyzer: A part of conditional expression is always true: bWaitAll.

5 years agoFixes as per merge request
Mathew Winters [Wed, 14 Nov 2018 19:29:51 +0000 (08:29 +1300)]
Fixes as per merge request

5 years agoMerge pull request #4979 from hardening/CAL
akallabeth [Wed, 14 Nov 2018 12:45:31 +0000 (13:45 +0100)]
Merge pull request #4979 from hardening/CAL

license: support CAL license

5 years agoMerge pull request #5009 from akallabeth/rdp_version_update
Martin Fleisz [Wed, 14 Nov 2018 12:35:42 +0000 (13:35 +0100)]
Merge pull request #5009 from akallabeth/rdp_version_update

Updated RDP_VERSION definitions.

5 years agoMerge pull request #5013 from bmiklautz/sspi_symbols
akallabeth [Wed, 14 Nov 2018 12:29:03 +0000 (13:29 +0100)]
Merge pull request #5013 from bmiklautz/sspi_symbols

fix [winpr/sspi]: export symbols on all systems

5 years agoFixed source format for freerdp_dsp_encode in rdpsnd_server_send_wave_pdu
Armin Novak [Tue, 13 Nov 2018 13:46:51 +0000 (14:46 +0100)]
Fixed source format for freerdp_dsp_encode in rdpsnd_server_send_wave_pdu

5 years agoAdd soxr library and include paths.
Armin Novak [Tue, 13 Nov 2018 13:04:43 +0000 (14:04 +0100)]
Add soxr library and include paths.

5 years agoAdded missing define guards.
Armin Novak [Tue, 13 Nov 2018 11:29:19 +0000 (12:29 +0100)]
Added missing define guards.

5 years agoAllow building without libsoxr support.
Armin Novak [Tue, 13 Nov 2018 10:06:38 +0000 (11:06 +0100)]
Allow building without libsoxr support.

5 years agoMarked custom ADPCM codecs experimental.
Armin Novak [Tue, 13 Nov 2018 10:03:09 +0000 (11:03 +0100)]
Marked custom ADPCM codecs experimental.

5 years agoAdded fallback for supported sample rates if original not supported.
Armin Novak [Tue, 13 Nov 2018 10:00:39 +0000 (11:00 +0100)]
Added fallback for supported sample rates if original not supported.
Added format compatibility check between recording input and destination.

5 years agoFixed possible NULL pointer dereference
Armin Novak [Tue, 13 Nov 2018 09:59:41 +0000 (10:59 +0100)]
Fixed possible NULL pointer dereference

5 years agoAdded libsoxr based resampling.
Armin Novak [Tue, 13 Nov 2018 09:59:30 +0000 (10:59 +0100)]
Added libsoxr based resampling.

5 years agoAdded CMake detection support for libsoxr
Armin Novak [Tue, 13 Nov 2018 08:13:52 +0000 (09:13 +0100)]
Added CMake detection support for libsoxr

5 years agoRefactored freerdp_dsp_resample, checks now done internally.
Armin Novak [Fri, 9 Nov 2018 09:15:14 +0000 (10:15 +0100)]
Refactored freerdp_dsp_resample, checks now done internally.

5 years agoFixed format issues with server sound channel (review by @llysz)
Armin Novak [Fri, 9 Nov 2018 09:05:11 +0000 (10:05 +0100)]
Fixed format issues with server sound channel (review by @llysz)

5 years agoFixed unused function warnings when FFMPEG backend is used.
Armin Novak [Fri, 9 Nov 2018 08:08:06 +0000 (09:08 +0100)]
Fixed unused function warnings when FFMPEG backend is used.

5 years agoAdded resampling to freerdp_dsp_encode.
Armin Novak [Wed, 7 Nov 2018 13:14:15 +0000 (14:14 +0100)]
Added resampling to freerdp_dsp_encode.

5 years agoMerge pull request #4973 from Devolutions/fix_drive_redirection
Bernhard Miklautz [Wed, 14 Nov 2018 11:57:13 +0000 (11:57 +0000)]
Merge pull request #4973 from Devolutions/fix_drive_redirection

Allow fixed drive redirection (Windows) and fix macos drive duplication.

5 years agoMerge pull request #5001 from akallabeth/mac_clipboard_fix
Bernhard Miklautz [Wed, 14 Nov 2018 11:39:23 +0000 (11:39 +0000)]
Merge pull request #5001 from akallabeth/mac_clipboard_fix

Fixed #4995: Don't forget to send the NULL of the clipboard string.

5 years agofix [winpr/sspi]: export symbols on all systems
Bernhard Miklautz [Wed, 14 Nov 2018 11:19:36 +0000 (12:19 +0100)]
fix [winpr/sspi]: export symbols on all systems

5 years agoBetter description and formatting for update_read_icon_info
Armin Novak [Wed, 14 Nov 2018 10:29:44 +0000 (11:29 +0100)]
Better description and formatting for update_read_icon_info

5 years agoMade all internal functions static.
Armin Novak [Wed, 14 Nov 2018 10:06:23 +0000 (11:06 +0100)]
Made all internal functions static.

5 years agoFixed color conversion, log level and buffer types
Armin Novak [Wed, 14 Nov 2018 10:04:59 +0000 (11:04 +0100)]
Fixed color conversion, log level and buffer types

5 years agoFixed rail_string_to_unicode_string size calculation.
Armin Novak [Wed, 14 Nov 2018 10:03:59 +0000 (11:03 +0100)]
Fixed rail_string_to_unicode_string size calculation.

5 years agoxfreerdp: set _NET_WM_ICON to RAIL app icon
ilammy [Sat, 10 Nov 2018 12:43:36 +0000 (14:43 +0200)]
xfreerdp: set _NET_WM_ICON to RAIL app icon

Icons on X11 windows are configured using the _NET_WM_ICON property
described in Extended Window Manager Hints. Here we implement converison
from DIB bitmaps used by RAIL to the format expected by _NET_WM_ICON,
and actually set the icon for RAIL app windows.

Both DIB format and _NET_WM_ICON (or rather, Xlib) are weird. Let's
start with RAIL's format. That's the one used in BMP and ICO formats
on Windows. It has some strange properties but thankfully FreeRDP's
freerdp_image_copy() can handle most of them for us. (With an exception
of monochrome and 16-color formats that it does not support. Sorry, but
I'm too lazy to fix them. They are not seem to be used by any real
application either.) The one thing that it can't do is to apply the
alpha transparency bitmask so we have to do it manually. This instantly
reminds us that DIB format has HISTORY: it's vertically flipped and
each must be padded to 4 bytes. Both these quirks having reasonable
(for a certain definition of 'reason') explanations. Such is life.
(Also, 8-bit images require a color palette which we must fill in.)

So okay, now comes _NET_WM_ICON. It is more sane (or rather, easier to
deal with). The bitmap is represented with a tiny [width, height] header
followed by an array of pixels in ARGB format. There is no padding, no
weird color formats. But here's a catch: you can't simply take the
output of freerdp_image_copy() and cast to (unsigned char*) of colors.
We have to allocate an array of C's longs and copy the pixels there,
because that's what Xlib expects (and this is mentioned in the spec).
Simply casting an array of bytes causes crashes on 64-bit systems.
So don't try to cheat or "optimize" and read the docs, kids.

Note that XFlush() call after XChangeProperty(). It's there because it
seems to helps see the icon quicker with Unity on Ubuntu 14.04. I don't
know why. (And Unity does not support _NET_WM_ICON officially. But it
sorta kinda works sometimes.)

Oh, and while we're here, delete some old, unused, and commented out
code that was setting window icons in the past. It's not needed anymore.

5 years agoxfreerdp: add RAIL icon cache
ilammy [Sat, 10 Nov 2018 09:51:30 +0000 (11:51 +0200)]
xfreerdp: add RAIL icon cache

This commit adds a cache for RAIL application icons. It is (surpisingly)
used to cache icons for remote applications. This mechanism is described
in MS-RDPERP 3.1.1.2 Icon Cache Support and related items.

Note that some (actually, most) of the icons are not cached. These are
marked with CacheId == 0xFF. In order to keep the code clean we do not
introduce a special case and instead use a 'scratch' icon and simply
pretend to return an xfRailIcon from cache.

We're going to set icons via _NET_WM_ICON property which explains
why we use "long" values to store pixel data. The icon conversion
is not implemented in this commit, it's only stubs.

However, we do implement processing of window information orders that
contain new icons or cached references to previously sent icons. Note
that it is important to not fail (i.e., to not return FALSE) if we
cannot find a window for the icon by its ID. The server occasionally
likes to be slow or something and send icon updates for nonexistent
windows. This behavior is mandated by the spec, too:

    MS-RDPERP 3.2.5.1.6 Processing Window Information Orders

    Upon receipt of a Window Information Order for an icon or
    cached icon, as specified in sections 2.2.1.3.1.2.2 and
    2.2.1.3.1.2.3, the client SHOULD locate the local RAIL window
    that corresponds to the WindowId reported in the Hdr field
    and apply the icon updates to the RAIL window. If no such
    window can be found, the client SHOULD ignore the order.

Indeed, we silently ignore such orders now.

5 years agolibfreerdp-core: fix reading TS_ICON_INFO
ilammy [Sat, 10 Nov 2018 20:09:20 +0000 (22:09 +0200)]
libfreerdp-core: fix reading TS_ICON_INFO

The spec says that CbColorTable field is present when Bpp is 1, 4, 8.
Actually, bpp == 2 is not supported by TS_ICON_INFO according to the
spec (though, DIB definitely supports 16-color images).

    MS-RDPERP 2.2.1.2.3 Icon Info (TS_ICON_INFO)

    CbColorTable (2 bytes):
        This field is ONLY present if the bits per pixel (Bpp)
        value is 1, 4, or 8.

Omitting 8-bit value breaks 256-color icons which are incorrectly
read with color and alpha data mixed up.