Commit Graph

70 Commits

Author SHA1 Message Date
Norbert Federa
71a4349928 fixed multiple missing gdi return value checks
mainly gdi_Create* functions
2015-05-08 21:39:23 +02:00
Norbert Federa
25fc866a58 Fix unchecked CreateThread calls and misc fixes 2015-05-05 13:55:48 +02:00
Norbert Federa
ef1fd12b15 Fix unchecked CreateEvent calls and misc fixes
1)
Added missing checks for CreateEvent which also required the
following related changes:

- changed freerdp_context_new API to BOOL
- changed freerdp_peer_context_new API to BOOL
- changed pRdpClientNew callback to BOOL
- changed pContextNew callback to BOOL
- changed psPeerAccepted callback to BOOL
- changed psPeerContextNew callback to BOOL

2)
Fixed lots of missing alloc and error checks in the
changed code's neighbourhood.

3)
Check freerdp_client_codecs_prepare result to avoid segfaults
caused by using non-initialized codecs.

4)
Fixed deadlocks in x11 caused by missing xf_unlock_x11() calls
in some error handlers

5)
Some fixes in thread pool:
- DEFAULT_POOL assignment did not match TP_POOL definition
- don't free the pool pointer if it points to the static DEFAULT_POOL
- added error handling and cleanup in InitializeThreadpool
2015-04-29 18:18:39 +02:00
Bernhard Miklautz
515502ffa5 change return types of callbacks to BOOL
* change all client/server callbacks to BOOL
* update all clients accordingly
* add multiple return value checks
* small fixes
2015-04-21 14:18:07 +02:00
Zhang Zhaolong
251d214d52 android_event: fix incorrect usage of realloc.
Signed-off-by: Zhang Zhaolong <zhangzl2013@126.com>
2015-03-11 12:29:37 +08:00
Zavadovsky Yan
60c79f5450 client/Android: fix coords calculation in previous commit 2015-02-23 11:50:32 +03:00
Zavadovsky Yan
082e7b8661 client/Android: optimize android_end_paint() logic
1. Don't draw to screen if server sends begin/end paint
messages without any real updates.
2. Redraw only summary region that covers really invalidated
part of screen.
2015-02-21 23:52:38 +03:00
Zavadovsky Yan
ac8b50c464 client/Android: fix bad realloc
Fast and long pointer moves cause app to crash.
2015-02-21 23:51:02 +03:00
Armin Novak
28da3ea620 Using freerdp_channels_disconnect now. 2015-01-20 11:24:03 +01:00
Norbert Federa
939f1c639a Standard RDP Security Layer Levels/Method Overhaul
[MS-RDPBCGR] Section 5.3 describes the encryption level and method values for
standard RDP security.

Looking at the current usage of these values in the FreeRDP code gives me
reason to believe that there is a certain lack of understanding of how these
values should be handled.

The encryption level is only configured on the server side in the "Encryption
Level" setting found in the Remote Desktop Session Host Configuration RDP-Tcp
properties dialog and this value is never transferred from the client to the
server over the wire.
The possible options are "None", "Low", "Client Compatible", "High" and
"FIPS Compliant". The client receices this value in the Server Security Data
block (TS_UD_SC_SEC1), probably only for informational purposes and maybe to
give the client the possibility to verify if the server's decision for the
encryption method confirms to the server's encryption level.
The possible encryption methods are "NONE", "40BIT", "56BIT", "128BIT" and
"FIPS" and the RDP client advertises the ones it supports to the server in the
Client Security Data block (TS_UD_CS_SEC).
The server's configured encryption level value restricts the possible final
encryption method.
Something that I was not able to find in the documentation is the priority
level of the individual encryption methods based on which the server makes its
final method decision if there are several options.
My analysis with Windows Servers reveiled that the order is 128, 56, 40, FIPS.
The server only chooses FIPS if the level is "FIPS Comliant" or if it is the
only method advertised by the client.

Bottom line:
* FreeRDP's client side does not need to set settings->EncryptionLevel
(which was done quite frequently).
* FreeRDP's server side does not have to set the supported encryption methods
list in settings->EncryptionMethods

Changes in this commit:

Removed unnecessary/confusing changes of EncryptionLevel/Methods settings

Refactor settings->DisableEncryption
* This value actually means "Advanced RDP Encryption (NLA/TLS) is NOT used"
* The old name caused lots of confusion among developers
* Renamed it to "UseRdpSecurityLayer" (the compare logic stays untouched)

Any client's setting of settings->EncryptionMethods were annihilated
* All clients "want" to set all supported methods
* Some clients forgot 56bit because 56bit was not supported at the time the
code was written
* settings->EncryptionMethods was overwritten anyways in nego_connect()
* Removed all client side settings of settings->EncryptionMethods
The default is "None" (0)
* Changed nego_connect() to advertise all supported methods if
settings->EncryptionMethods is 0 (None)
* Added a commandline option /encryption-methods:comma separated list of the
values "40", "56", "128", "FIPS". E.g. /encryption-methods:56,128
* Print warning if server chooses non-advertised method

Verify received level and method in client's gcc_read_server_security_data
* Only accept valid/known encryption methods
* Verify encryption level/method combinations according to MS-RDPBCGR 5.3.2

Server implementations can now set settings->EncryptionLevel
* The default for settings->EncryptionLevel is 0 (None)
* nego_send_negotiation_response() changes it to ClientCompatible in that case
* default to ClientCompatible if the server implementation set an invalid level

Fix server's gcc_write_server_security_data
* Verify server encryption level value set by server implementations
* Choose rdp encryption method based on level and supported client methods
* Moved FIPS to the lowest priority (only used if other methods are possible)

Updated sample server
* Support RDP Security (RdpKeyFile was not set)
* Added commented sample code for setting the security level
2014-12-12 02:17:12 +01:00
Marc-André Moreau
769eb38217 afreerdp: migrate to cliprdr callback interface 2014-11-12 12:25:12 -05:00
Marc-André Moreau
19c3b0d457 afreerdp: cleanup cliprdr code 2014-11-12 11:14:10 -05:00
Marc-André Moreau
a1e660d92e freerdp: unify clipboard standard format id definitions 2014-10-16 22:20:12 -04:00
Armin Novak
7913a57bc5 Using wlog for logging in clients now. 2014-09-15 08:55:00 +02:00
Bernhard Miklautz
0313ca3622 libfreerdp: always build "MONOLITHIC"
"libfreerdp" consisted of multiple (small) single libraries. If the cmake
option MONOLITHIC was used only one library was build combining all of
the libfreerdp-* libraries.
The only exceptions to this are libfreerdp-server and libfreerdp-client these
are build as separate libraries.

This commit obsoltes non-monolithic builds and makes monolithic builds
the default. The cmake option MONOLITHIC is also removed.
2014-09-12 00:19:53 +02:00
Marc-André Moreau
82a53057a1 Merge pull request #2023 from ptsekov/software-gdi-improvements
Software GDI improvements
2014-08-18 16:22:23 -04:00
Hardening
767d54ce18 Merge pull request #2017 from ptsekov/Issue_2016
Honour user performance preferences.
2014-08-15 09:21:12 +02:00
Pavel Tsekov
98cf129a11 Do not invert fb contents when in 32bpp mode
* client/Android/FreeRDPCore/jni/android_freerdp.c:
(android_post_connect): Pass the proper flags to gdi_init().
(copy_pixel_buffer): Do not invert the framebuffer data when using 32bpp
framebuffer.
2014-08-07 01:12:39 +03:00
U-PAVEL\Pavel Tsekov
8a4f134fab Revert to 15d2b35574 2014-08-05 14:35:31 +03:00
Pavel Tsekov
9a470632f6 Honour user performance preferences.
* client/Android/FreeRDPCore/jni/android_freerdp.c:
(jni_freerdp_set_performance_flags): Always pass the user specified performance
settings to FreeRDP.
2014-08-05 00:49:13 +03:00
Pavel Tsekov
e13f93aa1b Allow the user to enable/disable performance features regardless of
their default values.
2014-08-04 18:14:08 +03:00
Armin Novak
689902c995 Moved update thread from client to library. 2014-07-14 19:27:50 +02:00
Bernhard Miklautz
6a49bcfe40 winpr: always build "monolitic"
winpr is now always build as single library.
The build option MONOLITHIC_BUILD doesn't influence this behavior anymore.

The only exception is winpr-makecert-tool which is still build as extra
library.

This obsoletes complex_libraries for winpr.
2014-07-10 11:10:58 +02:00
Marc-André Moreau
2a82684521 channels: cleanup unused freerdp channels global functions 2014-06-11 16:27:31 -04:00
Marc-André Moreau
4bbd78a80b libfreerdp-core: remove unnecessary usage of freerdp_channels_data 2014-02-15 15:26:34 -05:00
Martin Fleisz
4d71032656 iOS: Removed unused code 2013-12-04 12:30:33 +01:00
Bernhard Miklautz
2b6b4a6685 updated file headers 2013-12-04 11:44:22 +01:00
Armin Novak
8fa18f1174 Using winpr instead of pthread now.
<android_desktop_resize> now uses up to date settings for callback now.
Improved error handling in <jni_input_thread>
Unified disconnect and cancel JNI calls, as they currently do the same.
2013-11-12 10:30:14 +01:00
Armin Novak
3b209b9345 Removed pthreads, using winpr now. 2013-11-12 10:25:41 +01:00
Armin Novak
2af8efb26b Fixed resource cleanup, using DEBUG_WARN now for error messages. 2013-11-12 10:24:13 +01:00
Armin Novak
83053c865a DEBUG_ANDROID now a debug define using default <debug.h> macros. 2013-11-12 10:22:41 +01:00
Armin Novak
ba2c31e9d9 Modified build to allow native debugging with eclipse. 2013-11-08 15:16:18 +01:00
Armin Novak
017308b796 Added generation of android ndk build scripts. 2013-11-08 12:37:38 +01:00
Armin Novak
9eedf16ef0 Added native android build scripts. 2013-11-08 12:08:06 +01:00
Armin Novak
f3bfef8da5 Resource cleanup fixes. 2013-11-08 10:27:16 +01:00
Armin Novak
836ccc28b2 Added missing assert. 2013-10-01 16:23:17 +02:00
Armin Novak
83a64e99ea Merge branch 'android_async' of github.com:akallabeth/FreeRDP into android_async
Conflicts:
	client/Android/FreeRDPCore/.classpath
	client/Android/FreeRDPCore/jni/android_freerdp.c
2013-10-01 16:22:27 +02:00
Armin Novak
3910d512fa Implemented async_input handling. 2013-10-01 16:17:52 +02:00
Armin Novak
b2236b7a4d Implemented async_channels, async_transport and async_update. 2013-10-01 16:17:26 +02:00
Armin Novak
111d0c670c Added new advanced configuration options for async. 2013-10-01 16:16:37 +02:00
Bernhard Miklautz
d7a9add3b4 Merge pull request #1514 from akallabeth/android_sound
Android sound support
2013-10-01 02:20:44 -07:00
Armin Novak
fe336da721 Implemented async_input handling. 2013-10-01 10:33:28 +02:00
Bernhard Miklautz
2cb6f5407a Merge pull request #1491 from akallabeth/android_profiler
Android profiler
2013-10-01 00:53:35 -07:00
Armin Novak
2fec8ad4c8 Implemented async_channels, async_transport and async_update. 2013-09-30 17:52:13 +02:00
Armin Novak
1e041d1952 Added new advanced configuration options for async. 2013-09-30 16:33:45 +02:00
Armin Novak
84610f02e7 Sound redirection in android client now allows selecting server side sound. 2013-09-27 13:45:41 +02:00
Armin Novak
d81421a76a Fixed android shutdown crash.
Added new permissions required for microphone redirection.
Fixed JNI call for microphone redirection.
2013-09-27 11:41:25 +02:00
Armin Novak
e03305f18c Added debugging settings to allow android debugging. 2013-09-23 17:48:02 +02:00
Armin Novak
0d9ab7ce6a Added new advanced configuration options to redirect sound and microphone.
Added JNI settings for sound and microphone redirection.
2013-09-19 13:45:16 +02:00
Armin Novak
9846c4496e Renamed android profiler flag to WITH_GPROF 2013-09-18 13:12:52 +02:00