Armin Novak [Wed, 14 Nov 2018 10:29:44 +0000 (11:29 +0100)]
Better description and formatting for update_read_icon_info
Armin Novak [Wed, 14 Nov 2018 10:06:23 +0000 (11:06 +0100)]
Made all internal functions static.
Armin Novak [Wed, 14 Nov 2018 10:04:59 +0000 (11:04 +0100)]
Fixed color conversion, log level and buffer types
Armin Novak [Wed, 14 Nov 2018 10:03:59 +0000 (11:03 +0100)]
Fixed rail_string_to_unicode_string size calculation.
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.
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.
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.
akallabeth [Tue, 13 Nov 2018 13:39:39 +0000 (14:39 +0100)]
Merge pull request #5005 from bmiklautz/nightly_build
fix [rpm/freerdp-nightly]: build dependencies
Bernhard Miklautz [Tue, 13 Nov 2018 12:59:41 +0000 (13:59 +0100)]
fix [rpm/freerdp-nightly]: build dependencies
Depend on libswresample-devel not libavresample-dev.
This reverts the behavior introduced in
fbe95209e72265af07dd426e0def7e3a9082fb4e.
Martin Fleisz [Mon, 12 Nov 2018 12:55:36 +0000 (13:55 +0100)]
Merge pull request #4997 from akallabeth/use_bio_free_all
Replaced BIO_free with BIO_free_all
Bernhard Miklautz [Fri, 9 Nov 2018 12:25:55 +0000 (12:25 +0000)]
Merge pull request #4960 from akallabeth/interleaved_fix
Fixed #4954: Check destination buffer bounds.
Armin Novak [Fri, 9 Nov 2018 11:18:51 +0000 (12:18 +0100)]
Make VS2010 happy, reworked UNROLL defines.
Armin Novak [Fri, 9 Nov 2018 10:51:20 +0000 (11:51 +0100)]
Unroll bBits loops as well.
Martin Fleisz [Fri, 9 Nov 2018 11:07:43 +0000 (12:07 +0100)]
Merge pull request #4968 from akallabeth/timezone_updates
Simplified timezone update handling:
Martin Fleisz [Fri, 9 Nov 2018 10:58:04 +0000 (11:58 +0100)]
Merge pull request #4961 from akallabeth/align_malloc_fix
Fixed #2039: Check for overflow in calculations.
Armin Novak [Fri, 9 Nov 2018 10:32:28 +0000 (11:32 +0100)]
Readded loop unrolling.
Armin Novak [Wed, 24 Oct 2018 08:59:54 +0000 (10:59 +0200)]
Fixed #2039: Check for overflow in calculations.
Armin Novak [Thu, 8 Nov 2018 16:41:56 +0000 (17:41 +0100)]
Fixed profiler naming in tests.
Armin Novak [Thu, 8 Nov 2018 16:21:28 +0000 (17:21 +0100)]
Fixed various issues with freerdp_bitmap_compress and interleaved_compress
Armin Novak [Thu, 8 Nov 2018 16:20:31 +0000 (17:20 +0100)]
Added a unit test for interleaved codec compression.
Martin Fleisz [Thu, 8 Nov 2018 14:33:40 +0000 (15:33 +0100)]
Merge pull request #4996 from bmiklautz/tls_security_level
new [crypto/tls]: add support to set tls security level
Armin Novak [Thu, 8 Nov 2018 11:09:49 +0000 (12:09 +0100)]
Replaced BIO_free with BIO_free_all
There is no point in using BIO_free with a custom recursion
to free up stacked BIOs if there is already BIO_free_all.
Using it consistently avoids memory leaks due to stacked BIOs
not being recursively freed.
Bernhard Miklautz [Thu, 8 Nov 2018 10:13:57 +0000 (11:13 +0100)]
fix [cmdline]: parameter parsing
use strtoul instead of strtol
Bernhard Miklautz [Thu, 8 Nov 2018 10:01:56 +0000 (11:01 +0100)]
new [crypto/tls]: add support to set tls security level
The newly introduced option /tls-seclevel can be used to set the tls
security level on systems with openssl >= 1.1.0 or libressl.
As default level 1 is used as higher levels might prohibit connections
to older systems.
Bernhard Miklautz [Thu, 8 Nov 2018 10:08:03 +0000 (10:08 +0000)]
Merge pull request #4994 from akallabeth/bio_uninit_fix
Fixed #4993: Allow uninitialized bio socket in transport_bio_simple_uninit
Armin Novak [Wed, 7 Nov 2018 16:01:28 +0000 (17:01 +0100)]
Fixed #4993: Allow uninitialized bio socket in transport_bio_simple_uninit
When the TLS connection is aborted early (certificate issues, ...)
the bio simple socket might not have been initialized.
Do not access the NULL pointer on cleanup.
akallabeth [Wed, 7 Nov 2018 15:11:02 +0000 (16:11 +0100)]
Merge pull request #4982 from bmiklautz/ctest_asan_fixes
Fix issues with multiple tests if address sanitation is on
Armin Novak [Wed, 24 Oct 2018 15:40:05 +0000 (17:40 +0200)]
Simplified timezone update handling:
* Fix #4965: Adjusted the timezone update script to initialize
structs properly.
* Updated the scripts to generate the files directly
* Added a small HOWTO
* Split zone information to separate files to allow automatic
update without further manual editing.
Create a timezone.c file that does conform to C rules.
Armin Novak [Wed, 7 Nov 2018 11:00:49 +0000 (12:00 +0100)]
Simplified code, moved bounds check out of loops.
Armin Novak [Tue, 23 Oct 2018 08:33:45 +0000 (10:33 +0200)]
Fixed #4954: Check destination buffer bounds.
Martin Fleisz [Tue, 6 Nov 2018 12:51:53 +0000 (13:51 +0100)]
Merge pull request #4985 from informatimago/issue-4983
Fix Issue #4983 : Increased size of buffer to encrypt hash with kerbeā¦
Pascal J. Bourguignon [Tue, 6 Nov 2018 10:20:02 +0000 (11:20 +0100)]
Fix Issue #4983 : Increased size of buffer to encrypt hash with kerberos.
Bernhard Miklautz [Mon, 5 Nov 2018 14:43:12 +0000 (15:43 +0100)]
fix [libfreerdp/codec]: heap buffer overflow in TestFreeRDPCodecClear
The examples and the allocated buffers assume that the destination
starts with x 0 and y 0 and not 1/1.
Bernhard Miklautz [Mon, 5 Nov 2018 12:46:05 +0000 (13:46 +0100)]
fix [libfreerdp/crypto]: memory leak in Test_x509_cert_info
Bernhard Miklautz [Mon, 5 Nov 2018 11:29:06 +0000 (12:29 +0100)]
fix [winpr/util]: memory leak in TestCmdLine
Bernhard Miklautz [Mon, 5 Nov 2018 10:44:01 +0000 (10:44 +0000)]
Merge pull request #4969 from akallabeth/covscan_fix
Covscan fixes
Bernhard Miklautz [Mon, 5 Nov 2018 09:57:04 +0000 (09:57 +0000)]
Merge pull request #4980 from hardening/logon_infov2_fix
fix uninitialised variable
David Fort [Thu, 1 Nov 2018 09:45:56 +0000 (10:45 +0100)]
fix uninitialised variable
Otherwise we can run in troubles when sending logon_info_v2 packets
Bernhard Miklautz [Wed, 31 Oct 2018 11:26:19 +0000 (11:26 +0000)]
Merge pull request #4974 from Devolutions/android_timezone_fix
Remove unsupported call to fseek when file is opened with popen
Bernhard Miklautz [Wed, 31 Oct 2018 11:12:05 +0000 (11:12 +0000)]
Merge pull request #4977 from hardening/nego_flags
nego: add new flags
David Fort [Fri, 26 Oct 2018 08:37:10 +0000 (10:37 +0200)]
nego: add new flags
Reading the new spec there's some new flags
Jonathan Lafontaine [Tue, 30 Oct 2018 20:47:06 +0000 (16:47 -0400)]
remove unsupported call to fseek when file is opened with popen
Martin Fleisz [Mon, 29 Oct 2018 13:54:55 +0000 (14:54 +0100)]
Merge pull request #4907 from akallabeth/transport_write_leak_fix
Transport write leak fix
Bernhard Miklautz [Mon, 29 Oct 2018 10:26:04 +0000 (10:26 +0000)]
Merge pull request #4962 from akallabeth/wextra_fixes
Wextra fixes
akallabeth [Thu, 25 Oct 2018 13:54:21 +0000 (15:54 +0200)]
Merge pull request #4970 from hardening/uwac_fixes
uwac: change seat API to not reference disposed UwacSeat
Armin Novak [Thu, 25 Oct 2018 13:48:48 +0000 (15:48 +0200)]
Fixed warnings in Stream test.
Armin Novak [Thu, 25 Oct 2018 13:48:06 +0000 (15:48 +0200)]
Fixed casts in Data_Read macros.
David Fort [Thu, 25 Oct 2018 13:20:18 +0000 (15:20 +0200)]
uwac: change seat API to not reference disposed UwacSeat
This is a false positive returned by covscan, but that doesn't hurt to fix it.
Armin Novak [Wed, 24 Oct 2018 15:24:35 +0000 (17:24 +0200)]
Fixed signedness casts.
Armin Novak [Wed, 24 Oct 2018 15:22:43 +0000 (17:22 +0200)]
Fixed signedness of MoniorCount
Armin Novak [Thu, 25 Oct 2018 11:19:22 +0000 (13:19 +0200)]
Fixed sockfd/socketBio resource leak.
Armin Novak [Thu, 25 Oct 2018 11:13:14 +0000 (13:13 +0200)]
Fixed sockfd/socketBio resource leak.
Armin Novak [Thu, 25 Oct 2018 11:08:16 +0000 (13:08 +0200)]
Silence code analyzers, check correct variable for NULL.
Armin Novak [Thu, 25 Oct 2018 11:08:00 +0000 (13:08 +0200)]
Fixed sockfd/socketBio resource leak.
Armin Novak [Thu, 25 Oct 2018 10:49:42 +0000 (12:49 +0200)]
Fixed resource leak in rpc_ntlm_http_request
Armin Novak [Wed, 24 Oct 2018 14:50:05 +0000 (16:50 +0200)]
Fixed initialisation in DEFINE_EVENT_ENTRY define
Armin Novak [Wed, 24 Oct 2018 12:36:12 +0000 (14:36 +0200)]
Fixed another bunch of warnings.
Armin Novak [Wed, 24 Oct 2018 11:20:46 +0000 (13:20 +0200)]
Fixed -Wextra sign warnings
Armin Novak [Wed, 24 Oct 2018 11:17:14 +0000 (13:17 +0200)]
Fixed warnings of uninitialized struct values.
Armin Novak [Wed, 24 Oct 2018 11:17:04 +0000 (13:17 +0200)]
Fixed cast warnings for thread wrapper
Armin Novak [Wed, 24 Oct 2018 11:05:49 +0000 (13:05 +0200)]
Changed size iterator variables to size_t
Armin Novak [Tue, 23 Oct 2018 10:33:13 +0000 (12:33 +0200)]
Fixed default return value for fastpath_send_multiple_input_pdu
akallabeth [Tue, 23 Oct 2018 10:03:03 +0000 (12:03 +0200)]
Merge pull request #4947 from akallabeth/http_gw_fix
Fixed http gateway body length read.
akallabeth [Tue, 23 Oct 2018 08:40:09 +0000 (10:40 +0200)]
Merge pull request #4958 from nfedera/nf-fix-alsapulse-wrn-err
channels/client: fix alsa/pulse warning and checks
Norbert Federa [Tue, 23 Oct 2018 07:45:20 +0000 (09:45 +0200)]
channels/client: fix alsa/pulse warning and checks
- pa_stream_writable_size() returns (size_t) -1 on error
- fix missing cast in alsa client sound channel code
Norbert Federa [Tue, 23 Oct 2018 07:28:00 +0000 (09:28 +0200)]
Merge pull request #4957 from akallabeth/wave_2_pdu_fix
Wave 2 pdu fix
akallabeth [Mon, 22 Oct 2018 19:16:36 +0000 (21:16 +0200)]
Merge pull request #4932 from hardening/stream_static
winpr: add some functions to use wStream in a static way
Armin Novak [Mon, 22 Oct 2018 12:53:46 +0000 (14:53 +0200)]
Cleaned up resource cleanup for rdpsnd alsa backend.
Bernhard Miklautz [Mon, 22 Oct 2018 12:50:21 +0000 (12:50 +0000)]
Merge pull request #4796 from akallabeth/groegera_fixes
Update X11-modifier key state on focus_in
Armin Novak [Mon, 22 Oct 2018 12:41:59 +0000 (14:41 +0200)]
Fixed memory leak in update_recv_surfcmd_surface_bits
Armin Novak [Mon, 22 Oct 2018 11:02:00 +0000 (13:02 +0200)]
Implemented rdpsnd_pulse_get_volume
Armin Novak [Mon, 22 Oct 2018 10:27:19 +0000 (12:27 +0200)]
fixed return value check in rdpsnd_recv_volume_pdu
Armin Novak [Mon, 22 Oct 2018 10:16:18 +0000 (12:16 +0200)]
Seal length in wave pdu alignment.
Armin Novak [Mon, 22 Oct 2018 10:00:07 +0000 (12:00 +0200)]
Align wave pdu size
Armin Novak [Mon, 22 Oct 2018 09:59:42 +0000 (11:59 +0200)]
Added missing length check and log message information.
Armin Novak [Mon, 22 Oct 2018 08:27:16 +0000 (10:27 +0200)]
Improved debug logging for sound device handling.
Armin Novak [Mon, 22 Oct 2018 08:18:17 +0000 (10:18 +0200)]
Removed unnecessary pulse context check.
Armin Novak [Mon, 22 Oct 2018 08:04:02 +0000 (10:04 +0200)]
Unified sound device reopen in a single function.
akallabeth [Fri, 19 Oct 2018 15:13:21 +0000 (17:13 +0200)]
Merge pull request #4952 from eledoux/master
gateway HTTP transport - fixed partial reads
akallabeth [Fri, 19 Oct 2018 12:00:14 +0000 (14:00 +0200)]
Merge pull request #4951 from nfedera/nf-fix-fnobjnew-fnstylecasts
fix issue with fnObjectFree and related casts
akallabeth [Fri, 19 Oct 2018 11:47:42 +0000 (13:47 +0200)]
Merge pull request #4949 from bmiklautz/floatbar_warning
fix [x11]: compiler warnings in floatbar
akallabeth [Fri, 19 Oct 2018 11:00:51 +0000 (13:00 +0200)]
Merge pull request #4950 from bmiklautz/cleanup_pr_4581p2
fix [cache/pointer]: add missing callback checks
Armin Novak [Fri, 19 Oct 2018 10:52:14 +0000 (12:52 +0200)]
Read byte by byte, the alignment may otherwise be broken.
Armin Novak [Fri, 19 Oct 2018 09:59:28 +0000 (11:59 +0200)]
Read http request in 4byte chunks until '\r\n\r\n' is found
Avoid reading too much data in a single call to BIO_read as some
implementations may return a lot more data than is part of the response.
Emmanuel Ledoux [Fri, 19 Oct 2018 09:56:56 +0000 (11:56 +0200)]
fixed partial reads
Armin Novak [Fri, 19 Oct 2018 09:39:22 +0000 (11:39 +0200)]
Properly parse ContentType to find length.
Bernhard Miklautz [Fri, 19 Oct 2018 08:33:50 +0000 (10:33 +0200)]
fix [x11]: compiler warnings in floatbar
client/X11/xf_floatbar.c:530:27: warning: use of logical '&&' with constant
operand [-Wconstant-logical-operand]
if (event->xmotion.state && Button1Mask && mode > XF_FLOATBAR_MODE_DRAGGING)
^ ~~~~~~~~~~~
client/X11/xf_floatbar.c:534:32: warning: use of logical '&&' with constant
operand [-Wconstant-logical-operand]
else if (event->xmotion.state && Button1Mask && mode == XF_FLOATBAR_MODE_DRAGGING)
^ ~~~~~~~~~~~
clang 8.0.0-svn344413-1~exp1+0~
20181012203207.819~1.gbpc91f27
Norbert Federa [Fri, 19 Oct 2018 09:30:01 +0000 (11:30 +0200)]
fix issue with fnObjectFree and related casts
- remove unnecessary/dangerous OBJECT_xxx function-style casts
- fix -Wstrict-prototypes issue with OBJECT_NEW_FN definition
Bernhard Miklautz [Fri, 19 Oct 2018 09:11:44 +0000 (11:11 +0200)]
fix [cache/pointer]: add missing callback checks
MartinHaimberger [Fri, 19 Oct 2018 09:10:23 +0000 (11:10 +0200)]
Merge pull request #4948 from bmiklautz/cleanup_pr_4581
new [cache/pointer]: don't require pointer functions to be set
Bernhard Miklautz [Thu, 18 Oct 2018 12:32:08 +0000 (14:32 +0200)]
new [cache/pointer]: don't require pointer functions to be set
This as cleanup/rework of PR #4581.
Armin Novak [Thu, 18 Oct 2018 14:58:53 +0000 (16:58 +0200)]
Fixed http gateway body length read.
akallabeth [Thu, 18 Oct 2018 14:40:22 +0000 (16:40 +0200)]
Merge pull request #4946 from mmattes/fix/floatbar_app_check_missing
added missing check for remote app where no floatbar exists
akallabeth [Thu, 18 Oct 2018 13:37:24 +0000 (15:37 +0200)]
Merge pull request #4945 from mmattes/fix/transferEncoding
transferEncoding can be NULL, correct if happens in line 348
Markus Mattes [Thu, 18 Oct 2018 13:33:01 +0000 (15:33 +0200)]
added missing check for remote app where no floatbar exists
Norbert Federa [Thu, 18 Oct 2018 12:11:18 +0000 (14:11 +0200)]
Merge pull request #4942 from akallabeth/rail_fixes_2.0
Fix ORDER_TYPE_WINDOW reading
Norbert Federa [Thu, 18 Oct 2018 12:08:23 +0000 (14:08 +0200)]
Merge pull request #4941 from nfedera/nf-remove-stale-valgrind-macro
gateway/rpc: remove stale valgrind macro
Norbert Federa [Thu, 18 Oct 2018 12:08:01 +0000 (14:08 +0200)]
Merge pull request #4938 from akallabeth/warning_fixes_master
Warning fixes and TSG abort condition fix
Markus Mattes [Thu, 18 Oct 2018 11:59:49 +0000 (13:59 +0200)]
transferEncoding can be NULL, verification happens in line 348
Armin Novak [Thu, 18 Oct 2018 10:34:10 +0000 (12:34 +0200)]
Fixed read_altsec_order ORDER_TYPE_WINDOW