Commit Graph

7831 Commits

Author SHA1 Message Date
Marc-André Moreau 74bef0edca Merge pull request #2275 from awakecoding/master
TS Gateway Fixes
2014-12-12 09:33:52 -05:00
Marc-André Moreau aa23c4eaaa libfreerdp-core: fix random TS Gateway disconnects with async modes 2014-12-12 09:08:39 -05:00
Marc-André Moreau 5ee4fb5fe6 Merge pull request #2273 from nfedera/fix-2014-12-12-01
Standard RDP Security Layer Levels/Method Overhaul
2014-12-11 22:18:54 -05: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 cc2321d359 libfreerdp-core: fix leak and use after free in tsg ListDictionary usage 2014-12-11 17:08:22 -05:00
Marc-André Moreau d8e10ac04a freerdp: patch leaks reported by valgrind when using TS Gateway 2014-12-11 11:25:34 -05:00
Marc-André Moreau b579ad3cec Merge pull request #2261 from akallabeth/more_memleak_fixes
More warning and memleak fixes
2014-12-11 08:28:48 -05:00
Marc-André Moreau 77982c6271 Merge pull request #2262 from bmiklautz/misc_fixes
Misc fixes
2014-12-11 08:27:30 -05:00
Marc-André Moreau da5a9d2579 Merge pull request #2265 from TaGUNil/master
Fix segmentation fault in URBDRC
2014-12-11 08:26:44 -05:00
Bernhard Miklautz 4b5f052c54 Merge pull request #2272 from akallabeth/ipv6_parser_fix
Fixed conversion of IPv6 to ServerHostname
2014-12-11 13:21:35 +01:00
Armin Novak edfee8213e Initializing ServerHostname string now with 0 2014-12-11 11:26:42 +01:00
MartinHaimberger 1226c51886 Merge pull request #2268 from hardening/rdpei_cleanup_fix
Fix cleanup of RDPEI server-side channel
2014-12-11 07:50:54 +01:00
Hardening 7b6c14bdcf Fix cleanup of RDPEI server-side channel 2014-12-10 16:47:15 +01:00
TaGUNil da39686a31 channels/urbdrc: fix segfault
Fix segmentation fault in urbdrc_main.c caused by missing memset.
2014-12-09 19:28:13 +03:00
Bernhard Miklautz 7b413fb951 nego: print message when bypassing gateway
When "detect" is used as gateway usage method (which is the default)
it is tried to by-pass gateway connection for local hosts.
The detection might take some time therefore print a message that people
are aware that a detection is tried.

Fixes #2171
2014-12-08 19:00:05 +01:00
Bernhard Miklautz 67b6cc7518 xfreerdp: clean up AuthenticationOnly
* removed dead code path: user name is always set now
* update message if no password was set
2014-12-08 18:13:54 +01:00
Bernhard Miklautz 2dca3f3356 xfreerdp: use login name if no user name was set
If no user name is set with /u:.. use the login name of the current user will be
used as user name.
2014-12-08 18:07:05 +01:00
Marc-André Moreau 53686e414a Merge pull request #2259 from erbth/master
fixed shutdown of input thread in xfreerdp
2014-12-08 10:01:27 -05:00
Armin Novak 4d8c91b0fe Fixed missing declarations. 2014-12-07 01:15:49 +01:00
Armin Novak 8a6c4396b2 Fixed memory leak. 2014-12-07 01:04:30 +01:00
Armin Novak 528c5841d5 Fixed memory leak. 2014-12-07 00:50:20 +01:00
Armin Novak 6b2790774e Fixed missing NULL pointer check. 2014-12-07 00:33:37 +01:00
Armin Novak 23d64bd6ca Fixed uninitialized value. 2014-12-07 00:29:28 +01:00
Armin Novak b23b0c656e Fixed uninitialized values in case of error return. 2014-12-07 00:27:06 +01:00
Armin Novak 547054a48b Fixed uninitialized value. 2014-12-07 00:23:46 +01:00
Armin Novak f676c48a2f Fixed broken NULL pointer check. 2014-12-07 00:21:28 +01:00
erbth 9f068ca0f7 fixed shutdown of input thread in xfreerdp 2014-12-05 21:48:24 +01:00
Marc-André Moreau 84bccaf3fc Merge pull request #2258 from nfedera/fix-2014-12-05-02
gdi: don't pollute invalid region with empty rects
2014-12-05 14:50:25 -05:00
Marc-André Moreau eae5b5628d Merge pull request #2257 from nfedera/fix-2014-12-05-01
cache: fixes for GlyphIndex, FastIndex & FastGlyph
2014-12-05 14:50:02 -05:00
Norbert Federa 443ee42db5 gdi: don't pollute invalid region with empty rects 2014-12-05 19:47:29 +01:00
Norbert Federa a7c90e16a3 cache: fixes for GlyphIndex, FastIndex & FastGlyph
* update_process_glyph_fragments() ignored the text background rectangle

* moved the OpRight value fix-up to update_process_glyph_fragments() since
  it is required for all glyph primary drawing orders
2014-12-05 18:28:43 +01:00
Norbert Federa 3baaa9a523 Merge pull request #2256 from llyzs/llyzs
libfreerdp-core: enable ipv6 listener.
2014-12-05 16:06:23 +01:00
Vic Lee bcee2ec3cd libfreerdp-core: enable ipv6 listener. 2014-12-05 10:06:35 +08:00
Marc-André Moreau ced1ab979f Merge pull request #2255 from awakecoding/master
Memory Leak/Corruption Fixes, PulseAudio Detection Fixes
2014-12-04 14:13:15 -05:00
Marc-André Moreau ae4a8bdc70 cmake: fix PulseAudio.cmake version detection 2014-12-04 14:06:29 -05:00
Marc-André Moreau d5414c33a5 Merge branch 'master' of github.com:FreeRDP/FreeRDP 2014-12-04 13:32:59 -05:00
Marc-André Moreau f2267a2277 libwinpr-clipboard: fix memory corruption and leaks 2014-12-04 13:19:10 -05:00
Bernhard Miklautz c83c6338a0 Merge pull request #2253 from nfedera/fix-2014-12-04-02
xfreerdp: smart sizing fix
2014-12-04 18:04:25 +01:00
Norbert Federa 415a0a158e xfreerdp: smart sizing fix
Standard format PictStandardRGB24 is not always available.
Use XRenderFindVisualFormat instead of XRenderFindStandardFormat
2014-12-04 17:52:54 +01:00
Marc-André Moreau 182dd76037 Merge branch 'master' of github.com:FreeRDP/FreeRDP 2014-12-04 10:49:01 -05:00
Bernhard Miklautz 161683383e Merge pull request #2251 from nfedera/fix-2014-12-04-01
cliprdr: fix segfault caused by invalid seek value
2014-12-04 16:38:00 +01:00
Norbert Federa 12fe822315 cliprdr: fix segfault caused by invalid seek value 2014-12-04 16:07:01 +01:00
Marc-André Moreau 75e0e84130 Merge branch 'master' of github.com:FreeRDP/FreeRDP 2014-12-04 10:00:10 -05:00
Martin Fleisz 441632310a Merge pull request #2110 from akallabeth/winpr_backtrace_windows
Winpr backtrace windows
2014-12-04 15:03:37 +01:00
Armin Novak eafc49b154 Using fixed size debug string buffers now. 2014-12-04 14:54:08 +01:00
Marc-André Moreau 8aac14fdd6 Merge pull request #2248 from nfedera/fix-2014-12-03-02
xfreerdp: fix cliprdr SelectionNotify enless loop
2014-12-03 21:23:17 -05:00
Norbert Federa c82d8c9c6b xfreerdp: fix cliprdr SelectionNotify enless loop
xf_cliprdr_process_selection_notify calls xf_cliprdr_send_client_format_list
if the SelectionNotify event property was None.
xf_cliprdr_send_client_format_list called XConvertSelection even if there
was no clipboard owner. In that case the XServer generates a SelectionNotify
event to the requestor (us) with property None and so on ...

The most obvious fix is to ensure that XConvertSelection is not called if
the owner is None which is done in this commit.
2014-12-04 00:19:23 +01:00
Marc-André Moreau fdd2dc7601 freerdp: patch valgrind leaks, cleanup 2014-12-03 14:17:27 -05:00
Bernhard Miklautz 7b55c3a48e xfreerdp: fix formating - indentation 2014-12-03 18:23:20 +01:00
Norbert Federa c95cdfbdc7 Merge pull request #2247 from bmiklautz/fix/resizing_race
xfreerdp: fix a possible re-size race condition
2014-12-03 18:21:53 +01:00