Commit Graph

2153 Commits

Author SHA1 Message Date
Marc-André Moreau
eddfee56a3 libfreerdp-core: prepare client-side NLA for event-driven structure 2015-02-15 14:54:10 -05:00
Marc-André Moreau
ab5fdcc3f1 libfreerdp-core: NLA cleanup 2015-02-15 11:10:14 -05:00
Marc-André Moreau
991f7b347d libfreerdp-core: further abstract multiple connections used internally by tsg from rdpTransport 2015-02-15 10:06:17 -05:00
Marc-André Moreau
edfc5120b7 libfreerdp-core: replace rdpTcp by BufferedSocket BIO 2015-02-14 10:14:13 -05:00
Marc-André Moreau
e904195e49 libfreerdp-core: more rdpTcp refactoring 2015-02-13 16:51:08 -05:00
Marc-André Moreau
e241330daf libfreerdp-core: rewrite tls_write_all to use front BIO only 2015-02-13 16:02:37 -05:00
Marc-André Moreau
c001a69d50 libfreerdp-core: move wait_read/wait_write operations under BIO layer 2015-02-13 15:22:27 -05:00
Marc-André Moreau
b7a619ff8a libfreerdp-core: move some rdpTcp operations under BIO layer 2015-02-13 14:26:02 -05:00
David FORT
bb9ba34f1d Fix disconnection when negociation has failed
This patch fixes a bug with mstsc connecting to a RDP security only FreeRDP server.
It seems like the mstsc shipped with Windows Seven considers packets after the nego_failure
packet as an error. So after trying to do TLS, depending on the timing, mstsc can print an
error message instead of retrying to connect with RDP security. With this patch, we
don't send the MCS disconnect message when the negociation has failed.
2015-02-13 18:25:50 +01:00
Marc-André Moreau
69b93c322d libfreerdp-core: fix transport crash, reduce rdpTcp usage 2015-02-13 09:27:54 -05:00
Marc-André Moreau
3e414f1840 libfreerdp-core: fix server-side transport_attach crash 2015-02-13 08:41:47 -05:00
Mike McDonald
07a05ae80f Modified server side code to handle an older version of TS_RFX_ICAP [version 0.9 (0x0009), tileSize 128 (0x0080)] sent by older clients. 2015-02-12 22:17:16 -05:00
Marc-André Moreau
889ccefe0d libfreerdp-core: remove TlsIn/TlsOut from rdpTransport 2015-02-12 16:22:25 -05:00
Marc-André Moreau
0d85dfd395 libfreerdp-core: handle TCP/TLS connection at TSG RPC channel level 2015-02-12 14:40:26 -05:00
Marc-André Moreau
4ecff39eb6 libfreerdp-core: more tsg in/out channel refactoring 2015-02-12 14:08:38 -05:00
Marc-André Moreau
8f2b2be9f2 libfreerdp-core: integrate new RTS pdu functions from denis 2015-02-12 13:14:43 -05:00
Marc-André Moreau
c92e82b3dc libfreerdp-core: improve TSG virtual connection and channel management 2015-02-12 12:03:15 -05:00
Marc-André Moreau
d330570e62 Merge branch 'master' of github.com:FreeRDP/FreeRDP 2015-02-12 10:15:14 -05:00
Marc-André Moreau
9263e42120 Merge pull request #2385 from hardening/nego_fix
Fix server-side protocol negociation
2015-02-12 10:12:01 -05:00
Martin Haimberger
b302da2e92 wtsapi: added handler for LogonUser and LogoffUser 2015-02-12 01:31:00 -08:00
David FORT
6a8d21cab9 Fix server-side protocol negociation
Before this patch, RDP security was (wrongly) the fallback when negociating a
security protocol between the client and the server. For example when a client
was claiming TLS-only when connecting to a FreeRDP based-server with RDP security only,
the result of the negociation was that the server started to do RDP security.
The expected behaviour is to send a nego failure packet with error code
SSL_NOT_ALLOWED_BY_SERVER. This patch fixes this.

We also try to handle all cases of failed negociation and return the corresponding
error code.
2015-02-11 21:38:32 +01:00
Marc-André Moreau
75cad064f1 libfreerdp-core: refactor tsg virtual connection, in/out channels 2015-02-11 15:26:22 -05:00
Marc-André Moreau
70fab69347 libfreerdp-core: gateway connection refactoring 2015-02-11 14:27:29 -05:00
Marc-André Moreau
aa8b843250 libfreerdp-core: move stuff down from transport to tsg layer 2015-02-11 11:57:02 -05:00
Marc-André Moreau
46724b0c75 libfreerdp-core: fix tsg crash on disconnect 2015-02-11 10:57:14 -05:00
Marc-André Moreau
94494511cc Merge branch 'master' of github.com:FreeRDP/FreeRDP 2015-02-11 10:05:33 -05:00
David FORT
5c2d5337c0 Fix socket leak when transport is disconnected 2015-02-11 15:47:43 +01:00
David FORT
58f33247bd Fix compilation with valgrind helpers 2015-02-11 15:23:14 +01:00
Marc-André Moreau
22ac46957a xfreerdp: fix egfx multimonitor support 2015-02-10 16:32:07 -05:00
Marc-André Moreau
9b9fbd2ab1 xfreerdp: fix fullscreen mode 2015-02-10 15:15:30 -05:00
Armin Novak
c66d0ccff8 Fixed codecs_free 2015-02-09 17:35:41 +01:00
Armin Novak
e162784e34 Fixed resource cleanup on disconnect. 2015-02-09 17:33:43 +01:00
Marc-André Moreau
0054b6b134 Merge branch 'master' of github.com:FreeRDP/FreeRDP 2015-02-06 18:02:10 -05:00
Marc-André Moreau
3258c887a4 libfreerdp-core: add channel reconnect 2015-02-06 17:35:14 -05:00
Marc-André Moreau
b2d0aa128f libfreerdp-core: refactor client info pdu functions 2015-02-06 16:55:21 -05:00
Marc-André Moreau
9a8f877396 libfreerdp-core: fix auto reconnect cookie security verifier computation 2015-02-06 16:37:28 -05:00
Marc-André Moreau
70e2862c50 libfreerdp-core: improve client core info debug output 2015-02-06 15:44:29 -05:00
Marc-André Moreau
fa06c4d401 libfreerdp-core: improve reconnection 2015-02-06 14:21:26 -05:00
Marc-André Moreau
82d58086db xfreerdp: partial reconnect fixes 2015-02-05 17:01:56 -05:00
Marc-André Moreau
fdde017526 libfreerdp-codec: allow region_uninit to be called multiple times 2015-02-05 15:10:24 -05:00
Petr Sumbera
8510373b04 Fixes Solaris bus error on sparc. 2015-02-05 08:46:56 -08:00
Marc-André Moreau
a4979456e5 Merge branch 'master' of github.com:FreeRDP/FreeRDP into gateway 2015-02-04 11:36:05 -05:00
Marc-André Moreau
8f8676a20e Merge pull request #2355 from xsumbe00/master
Fixes some build issues on Solaris 11.
2015-02-04 11:34:02 -05:00
Marc-André Moreau
4e1483a694 Merge pull request #2349 from RolKau/2349_dvp
Forward layout ID of Programmer Dvorak to server
2015-02-04 11:30:35 -05:00
Marc-André Moreau
4af1261132 Merge pull request #2350 from giox069/master
Fix freerdp_channels_free for clients with multiple active connections
2015-02-04 11:27:41 -05:00
Marc-André Moreau
5fbcdf5b3d libfreerdp-core: make tsg rpc connection event-driven, fix race condition on connection 2015-02-04 11:18:27 -05:00
Marc-André Moreau
f8259f94c5 libfreerdp-core: add event-driven RTS connection code 2015-02-03 20:39:47 -05:00
Marc-André Moreau
13d4fa74c4 libfreerdp-core: start event-driven gateway http code 2015-02-03 17:17:17 -05:00
Marc-André Moreau
1bf0e2ee03 libfreerdp-core: add more IN/OUT gateway channel states 2015-02-03 16:33:45 -05:00
Petr Sumbera
b09d865d5c Better to use HAVE_SYS_FILIO_H when we already have it. 2015-02-03 13:29:35 -08:00
Marc-André Moreau
7b25f9130b libfreerdp-core: improve error handling in ts gateway 2015-02-03 14:44:31 -05:00
Hardening
6bf23c1e35 Merge pull request #2358 from nfedera/fix-2015-02-03-01
core/fastpath: removed flawed slow-path conversion
2015-02-03 17:22:21 +01:00
Hardening
aed323e6c2 Merge pull request #2356 from nfedera/fix-2015-02-02-01
core/capabilities: remove misplaced/useless code
2015-02-03 17:15:51 +01:00
Bernhard Miklautz
c228860082 ringbuffer: add option to enable/disable debugging
Add option WITH_DEBUG_RINGBUFFER to enable/disable ringbuffer debugging
at compile time.

Even if it is possible to filter specific wlog tags it's not yet
possible to exclude one or more and ringbuffer adds massive debugging
output if enabled and WLOG_LEVEL is set to DEBUG.
2015-02-03 15:28:05 +01:00
Norbert Federa
4c4019203a core/fastpath: removed flawed slow-path conversion
Commit 0357a38e31 modified the function
fastpath_send_update_pdu() to check if the desired update is possible
by checking the payload size against the computed maxLength and the
clients's advertised max request size.
If the check failed that commit added a workaround which simply
copied the payload to a slow path updade.
This workaround is totally flawed and causes protocol errors:
- the fast path update code is not checked and required data format
  conversions are missing
- depending on the fast path update code rdp_send_data_pdu() would
  have to be called with differend data pdu type values but the
  workaround always uses DATA_PDU_TYPE_UPDATE
- the workaround does not check if the total size would exceed
  the maximum possible size for a slow path update

The check if a fast path output is actually possible with the
passed parameters is basically a good idea.
However, if that check fails it would only indicate an error in
the server implementation who must not generate updates that
exceed the client's max request size.
Even though a slow-path conversion would be possible there is
much more involved than simply copying the payload stream.
In addition it is highly doubtful if there is a benefit at all.
Even the oldest rdesktop and windows ce clients do support fast
path and although some lack the multi-fragment update capability
we cannot really send larger updates using slow-path outputs.

For the reasons elucidated above, I have removed the workaround
but kept a modified version of the check if a fast-path output
is possible at all.
2015-02-03 13:51:35 +01:00
Marc-André Moreau
5aea07d401 libfreerdp-core: add better state machine transitions to ts gateway 2015-02-02 18:50:26 -05:00
Marc-André Moreau
e0b0c77ecb libfreerdp-core: improve http parsing 2015-02-02 17:16:32 -05:00
Petr Sumbera
7fee867447 Added ifdef to previous commit. 2015-02-02 10:59:51 -08:00
Norbert Federa
dd9f15450a core/capabilities: remove misplaced/useless code
Commit 0357a38e31 has added some code
without any effect.
That commit added code to rdp_read_capability_sets() to check if
CAPSET_TYPE_MULTI_FRAGMENT_UPDATE was not received which caused
settings->MultifragMaxRequestSize to be set to 0.

- this was done in the wrong place because we do these kind
  of checks in rdp_recv_confirm_active() by consulting the
  variable settings->ReceivedCapabilities[]
- the code had no effect at all because MultifragMaxRequestSize gets
  set to FASTPATH_FRAGMENT_SAFE_SIZE in rdp_recv_confirm_active()
  if the CAPSET_TYPE_MULTI_FRAGMENT_UPDATE was not received.
2015-02-02 18:25:10 +01:00
Marc-André Moreau
e4f99834d0 libfreerdp-core: make tsg threadless 2015-02-02 11:50:56 -05:00
Petr Sumbera
17df42e4b5 Fixes some build issues on Solaris 11. 2015-02-02 08:48:54 -08:00
Marc-André Moreau
bfe1c31529 libfreerdp-core: remove receive queue, make tsg connection sequence more event-driven 2015-02-02 08:19:07 -05:00
Bernhard Miklautz
d625edbe97 gfx/pointer: add support to set pointer
Extend rdp_pointer with function SetPosition. Can then be used by
clients support setting pointer by server which might be used in
shadowing scenarios.
2015-02-02 10:57:31 +01:00
Marc-André Moreau
4239a1d4f4 libfreerdp-core: remove TS Gateway send queue 2015-02-01 20:47:43 -05:00
Marc-André Moreau
4eeabba933 libfreerdp-core: restructure RPC connection sequence 2015-02-01 18:50:21 -05:00
Marc-André Moreau
90a429e43c libfreerdp-core: refactor tsg connection sequence towards better state machine usage 2015-02-01 17:55:24 -05:00
Marc-André Moreau
0a97a5fc4e libfreerdp-core: fix possible lost signal in tsg_connect 2015-02-01 17:06:50 -05:00
Marc-André Moreau
4f173ae52a libfreerdp-core: remove usage of magic 60-byte pad in TsProxyCreateTunnelWriteRequest 2015-02-01 15:58:32 -05:00
Marc-André Moreau
9406ac188c libfreerdp-core: use ringbuffer for TS Gateway receive pipe 2015-02-01 13:09:28 -05:00
Giovanni Panozzo
7ceafe190e Fix channels_free for multiple connected clients
When a client disconnects from a server and its channel structures are removed, the global hash g_OpenHandles should not be destroyed. Only freed channels must be removed from the hash.
2015-02-01 10:57:54 +01:00
Marc-André Moreau
85191391d5 libfreerdp-core: simplify TS Gateway RPC fragment receiving 2015-01-31 16:56:25 -05:00
Roland Kaufmann
d930431169 Forward layout ID of Programmer Dvorak to server
The Programmer Dvorak keyboard layout is supported by Xkb but support
in Windows is only available through an open-source add-on driver. It
is plausible that those that use this layout in X11 also installs this
driver on Windows instead of using the standard Dvorak variant there.

This changeset recognizes Programmer Dvorak as its own variant, and
assigns this a layout ID which matches the one used in the Windows
driver so that it will be selected when you logon. If this layout is
not available, it will now revert to the regular United States layout.

Tested with Ubuntu Precise 12.04 connecting to Windows 7 SP1.
2015-01-30 21:22:59 +01:00
Marc-André Moreau
5cdc464933 libfreerdp-core: warn but do not fail in freerdp_tcp_set_keep_alive_mode 2015-01-30 11:34:09 -05:00
Marc-André Moreau
7c6948cd5c xfreerdp: make use of freerdp_get_event_handles 2015-01-30 09:47:02 -05:00
Marc-André Moreau
3a906caa4a freerdp: add event handle usage instead of file descriptors 2015-01-29 22:57:58 -05:00
Marc-André Moreau
ef71181897 libfreerdp-core: fix Win32 gateway authentication 2015-01-29 14:07:02 -05:00
Marc-André Moreau
b387708069 libfreerdp-core: fix Win32 socket event handle 2015-01-29 11:35:52 -05:00
Marc-André Moreau
bb67968141 libfreerdp-core: cleanup transport debug output 2015-01-28 15:37:20 -05:00
Marc-André Moreau
977cd21919 libfreerdp-core: don't enable GatewayBypassLocal by default 2015-01-28 15:16:31 -05:00
Marc-André Moreau
a9df86ab16 libfreerdp-core: update gateway code for Windows 2015-01-28 14:54:03 -05:00
Marc-André Moreau
5bf8b1509e libfreerdp-core: improve socket BIO handling 2015-01-28 13:46:17 -05:00
Marc-André Moreau
32a991c165 libfreerdp-core: move socket event and nonblock options to socket BIO 2015-01-27 21:18:26 -05:00
Marc-André Moreau
27af9786e2 Merge pull request #2322 from akallabeth/channel_load_once
Preventing channels from being loaded twice
2015-01-22 16:05:41 -05:00
Armin Novak
7fc9f98d3c Updated h264_decompress arguments. 2015-01-22 13:24:15 +01:00
Armin Novak
d42261f5eb Added destination buffer width to h264_decompress.
Added proper region limit checks in h264_decompress.
2015-01-22 13:22:53 +01:00
Armin Novak
c43faeec0a Removed broken buffer size check.
To check the decoded h264 frame size against the output buffer is wrong.
The size of the output buffer must only hold the data defined by the
region rectangles.
2015-01-22 13:06:37 +01:00
Armin Novak
34b700dd0f Preventing channels from being loaded twice
Skipping channels already loaded in freerdp_channels_client_load
This prevents channels already loaded in a context to be added a
second time to the channel list.
2015-01-20 18:01:33 +01:00
Marc-André Moreau
4fe932f21f libfreerdp-core: cleanup redirection debug output 2015-01-20 10:46:32 -05:00
Armin Novak
cbadeb4dd3 Fixed variable initialisation and cleanup. 2015-01-20 12:31:11 +01:00
Armin Novak
b07cded5d2 Added CHANNEL_EVENT_DISCONNECTED handling.
Additional error checks and logging.
2015-01-20 11:58:45 +01:00
Armin Novak
a217e02924 Prettiefied WLog messages. 2015-01-20 11:10:16 +01:00
Armin Novak
a295a42664 Prettiefied WLog messages. 2015-01-20 11:10:03 +01:00
Armin Novak
595680d169 Prettiefied WLog messages. 2015-01-20 11:09:54 +01:00
Armin Novak
015bfeb897 Prettiefied WLog messages. 2015-01-20 11:08:41 +01:00
Armin Novak
4f42a7955f Prettiefied WLog messages. 2015-01-20 11:06:26 +01:00
Norbert Federa
344362a8a3 clients: fix "focus in event" issues
The input->FocusInEvent callback implementations (normal and fast-path) have
always sent the mouse position even if the pointer was outside of the freerdp
client area. In addition xfreerdp used the wrong pointer coordinates which
were relative to the root window instead of its own.
On focus-in the pointer position must only be sent if the pointer is
currently within the program's client area. However, the clients had no way
to pass that information to input->FocusInEvent which required an API change.

- removed mouse pointer x, y parameters from input interface's FocusInEvent
- clients are responsible to call input->MouseEvent on focus-in if necessary
- fixed xfreerdp and wfreerdp accordingly
2015-01-16 18:40:57 +01:00
Bernhard Miklautz
c70293aa60 Fix clang compiler warnings 2015-01-16 00:41:57 +01:00
Marc-André Moreau
fa538911ca libfreerdp-core: fix build on Windows 2015-01-15 15:04:35 -05:00
Marc-André Moreau
701186e461 libfreerdp-core: silence false error on server disconnect 2015-01-15 14:52:35 -05:00
Marc-André Moreau
d8ddfd83c3 libfreerdp-core: parse gateway idle timeout + final status code 2015-01-14 16:49:21 -05:00
Marc-André Moreau
94f828a873 libfreerdp-core: fix detection of TS Gateway transport disconnection 2015-01-14 15:39:35 -05:00
Marc-André Moreau
81e190eccb libfreerdp-crypto: fix tls_write_all ringbuffer usage 2015-01-14 13:25:54 -05:00
Marc-André Moreau
98cd697cad libfreerdp-utils: add ringbuffer debug output 2015-01-14 13:15:57 -05:00
Marc-André Moreau
580de466fc Merge branch 'master' of github.com:FreeRDP/FreeRDP 2015-01-14 11:24:13 -05:00
Marc-André Moreau
620694c10a Merge pull request #2301 from akallabeth/disconnect_fix
Disconnect / Reconnect fix
2015-01-14 08:56:54 -05:00
Armin Novak
b3eafca85b Fixed return type for nego_transport_connect and nego_transport_disconnect. 2015-01-14 11:35:19 +01:00
Marc-André Moreau
f79deaff7b libfreerdp-core: partial OUT channel recycling support 2015-01-13 16:35:34 -05:00
Marc-André Moreau
43fe94d939 libfreerdp-core: fix identification of OUT R1/A2 RTS PDU 2015-01-13 15:01:07 -05:00
Marc-André Moreau
fc38dcc775 libfreerdp-core: gateway cleanup 2015-01-13 13:50:46 -05:00
Martin Haimberger
bba342a6be added set_error_info function
if an error_info is set, a TS_SET_ERROR_INFO_PDU
will be sent to the client on disconnect with
the error_info
2015-01-13 08:09:36 -08:00
Armin Novak
b5281b7877 Fixed broken state reset, now gateway works again. 2015-01-13 16:35:06 +01:00
Armin Novak
5f2105b930 Added prototype for freerdp_client_disconnect. 2015-01-13 12:44:16 +01:00
Armin Novak
524e4635fd Fixed typos.
gdi_free now done on disconnect.
2015-01-13 12:00:51 +01:00
Armin Novak
600074373c Fixed rdp_reset. 2015-01-12 13:47:04 +01:00
Armin Novak
e3df1d3d5b Fixed freerdp_disconnect and freerdp_reconnect. 2015-01-12 13:44:34 +01:00
Armin Novak
e0139fc4d8 Added nego_disconnect. 2015-01-12 13:44:04 +01:00
Armin Novak
8a1f9c321c Added nego_disconnect function. 2015-01-12 13:43:29 +01:00
Armin Novak
9274de4921 Fixed rdp_client_disconnect and rdp_reset. 2015-01-12 13:36:38 +01:00
Armin Novak
5d3091bd1c Fixed transport cleanup on disconnect. 2015-01-12 13:32:59 +01:00
Norbert Federa
765b25933e license: fix for corrupted licensing packets
Since commit a228952 FreeRDP generates corrupt licensing packets if the rdp
security layer is used and the peer did not indicate that it is capable of
processing encrypted licensing packets:
That commit changed rdp->sec_flags after the rdp stream was already initialized
with encryption enabled which placed the PDU payload at an incorrect offset.

Instead of directly modifying the rdp->sec_flags this patch temporarily
disables rdp->do_crypt during rdp stream initialization if the client has not
advertised support for encrypted licensing packets.
2015-01-12 11:31:18 +01:00
Marc-André Moreau
51554ff16c channels: patch rdpdr/smartcard valgrind leaks, fix hang on disconnect 2014-12-28 14:56:13 -05:00
Marc-André Moreau
b552aa9363 libfreerdp-core: add support for multiple redirection target addresses 2014-12-27 18:53:27 -05:00
Marc-André Moreau
772a0aaf0c libfreerdp-core: fix TCP connection timeout (non-Windows) 2014-12-27 16:48:32 -05:00
Marc-André Moreau
ee5a354328 freerdp: more valgrind fixes 2014-12-27 15:34:45 -05:00
Marc-André Moreau
27a8e50e60 channels: fix drdynvc, patch memory leaks 2014-12-27 15:20:29 -05:00
Marc-André Moreau
6c2ebb2b58 channels: redirection valgrind fixes 2014-12-27 13:50:50 -05:00
Marc-André Moreau
9dd77ae14a libfreerdp-core: add usage of TargetNetAddresses in ip-based redirection when hostname resolution fails 2014-12-26 13:49:25 -05:00
Marc-André Moreau
d5edfa4721 Merge branch 'master' of github.com:FreeRDP/FreeRDP 2014-12-21 14:22:09 -05:00
Vic Lee
7449abefb1 libfreerdp-core: server synchronized access to dvc channel seq. 2014-12-19 12:31:36 +08:00
Bernhard Miklautz
78d68598ed core: fix problem with data for unknown channel
Some buggy server(s) send data for channels that weren't announced or
negotiated. When processing this data FreeRDP had a problem and always
used the last channel in the channels list even if it wasn't responsible
for the data. Depending on how the channel handled the data this could
lead to different kind of problems and also segmentation faults.

Now data for unknown channels is ignored and not processed further.
2014-12-16 16:27:55 +01:00
Marc-André Moreau
736bcf2bd6 libfreerdp-core: fix async input mode for FocusInEvent, KeyboardPauseEvent 2014-12-15 11:35:35 -05:00
Marc-André Moreau
9b28562cc1 libfreerdp-core: fix faulty rdpTransport server-side initialization 2014-12-15 10:23:06 -05:00
Marc-André Moreau
e2f377ae11 libfreerdp-core: fix TSG thread shutdown and input freeze problem 2014-12-15 09:42:04 -05:00
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
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
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
Armin Novak
528c5841d5 Fixed memory leak. 2014-12-07 00:50:20 +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
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
fdd2dc7601 freerdp: patch valgrind leaks, cleanup 2014-12-03 14:17:27 -05:00
Marc-André Moreau
01ac15a879 libfreerdp-core: fix crash on failed redirect 2014-12-03 11:48:27 -05:00
Marc-André Moreau
6ccce86140 Merge branch 'master' of github.com:FreeRDP/FreeRDP
Conflicts:
	winpr/libwinpr/thread/thread.c
2014-12-03 10:10:50 -05:00
Marc-André Moreau
c17a831367 Merge pull request #2240 from nfedera/fix-2014-12-01-01
xfreerdp: pinch/pan fixes and smart-sizing
2014-12-02 14:04:49 -05:00
Norbert Federa
25f66d2e6d xfreerdp: added smart sizing, mt gesture fixes
- removed setting ScalingFactor
- added settings SmartSizingWidth and SmartSizingHeight
- changed option /smart-sizing to optionally support <width>x<height>
- consolidated transformation of input event coordinates
- rdp8 gfx ignored scaling and panning offsets: fixed
- never resize window on panning/pinching
- simplified keyboard multitouch gesture debugging emulation
- disabled keyboard multitouch gesture emulation debug code via define
2014-12-01 11:56:44 +01:00
Bernhard Miklautz
e139bd0fb8 core client side: set flag to crypt license
Client side code always tells the server that it is capable of processing
encrypted licensing packages (SEC_LICENSE_ENCRYPT_SC) but didn't set
the recently added flag to indicate that.

Fixes #2196
2014-12-01 11:12:34 +01:00
Mario Lombardo
3c634f91db Rename tcp-functions as they are conflicting with qemu functions 2014-11-29 21:14:39 +01:00
Marc-André Moreau
a323a0823d Merge branch 'master' of github.com:FreeRDP/FreeRDP 2014-11-28 11:23:53 -05:00
Marc-André Moreau
88dd5eb8c5 Merge pull request #2225 from akallabeth/openh264_fix
Openh264 v1.2 API
2014-11-28 11:23:11 -05:00
Bernhard Miklautz
daa3e7c7f8 tsg: fix possible free of initialized memory 2014-11-27 15:08:07 +01:00
Bernhard Miklautz
5066a5e455 tsg: rpc_send_enqueue_pdu always free buffer
rpc_send_enqueue_pdu returns -1 on error but the type of error isn't
distinguishable. Therefore make sure that the buffer gets always freed.
The only exception to this is when the pdu was already queued. Then the
dequeuing function should take care of freeing the buffer when
processing the pdu.
2014-11-27 14:39:47 +01:00
Bernhard Miklautz
96ae2df5a4 tsg: unwind recursion in tsg_read 2014-11-26 19:46:32 +01:00
Bernhard Miklautz
c0525574c8 transport: handle all return values of tsg_read
tsg_read can also return 0 which means that no data (complete PDU) is
currently available. This case wasn't handled properly.

Fixes #2056
2014-11-26 19:46:32 +01:00
Bernhard Miklautz
f338e1f6c3 crypto: revert pull request #2130
The fix in #2130 eliminates the problem when connecting over a gateway
but introduces other problems server side and client side (client/server
can't detect anymore when a TCP connection was closed).
2014-11-26 19:46:32 +01:00
Bernhard Miklautz
81a6c43938 tsg: fix segfault
Revert false positive from commit 585d9101b7
buffer shouldn't be freed since it is set and used in a stream.
2014-11-26 19:46:32 +01:00
Marc-André Moreau
d95af00117 Merge branch 'awakecoding' of github.com:vworkspace/FreeRDP 2014-11-25 11:20:07 -05:00
Marc-André Moreau
1c88822ccb libfreerdp-core: treat GCC data block 0xC009 as CS_MULTITRANSPORT 2014-11-19 21:00:28 -05:00
Marc-André Moreau
3f5aa863cb libfreerdp-core: fix server-side activated state 2014-11-19 14:21:23 -05:00
Marc-André Moreau
d6e6db05e9 libfreerdp-core: sanitize NSCodec capabilities 2014-11-19 09:39:47 -05:00
Marc-André Moreau
8a7a71a7b6 Merge pull request #2213 from akallabeth/wlog_callback_appender
Wlog callback appender
2014-11-17 09:41:58 -05:00
Armin Novak
e61acfe6b4 Fixed null pointer dereference. 2014-11-17 01:26:31 +01:00
Armin Novak
deef61dfd0 Fixed memory leak. 2014-11-17 01:16:56 +01:00
Armin Novak
bc963c43d8 Fixed double free. 2014-11-17 01:13:47 +01:00
Armin Novak
83477e5344 Fixed memory leak. 2014-11-17 01:10:45 +01:00
Armin Novak
727a7a9aed Fixed memory leaks. 2014-11-17 01:08:38 +01:00
Armin Novak
9ea898a3c2 Fixed memory leaks. 2014-11-17 01:07:07 +01:00
Armin Novak
28a8a6fa7e Fixed memory leak. 2014-11-17 01:04:29 +01:00
Armin Novak
2958a2c0c5 Fixed memory leaks. 2014-11-17 01:00:55 +01:00
Armin Novak
037c612c33 Fixed memory leak. 2014-11-17 00:58:43 +01:00
Armin Novak
e4b33efdb2 Fixed memory leak. 2014-11-17 00:56:56 +01:00
Armin Novak
dac7c178a1 Fixed memory leak. 2014-11-17 00:44:22 +01:00
Armin Novak
458f948c7a Fixed memory leak. 2014-11-17 00:41:06 +01:00
Armin Novak
a9cfb1d07b Fixed memory leak. 2014-11-17 00:37:29 +01:00
Armin Novak
aa92017d86 Fixed memory leak. 2014-11-17 00:36:50 +01:00
Armin Novak
a594a15220 Fixed memory leaks. 2014-11-17 00:28:17 +01:00
Armin Novak
bde7b156a8 Fixed uninitialized data warning. 2014-11-17 00:05:12 +01:00
Armin Novak
9e5be6f7e8 Fixed API nonnull warning. 2014-11-17 00:00:09 +01:00
Armin Novak
e52fdc805a Fixed API nonnull warning. 2014-11-16 23:56:51 +01:00
Armin Novak
3a92a626fc Fixed memory leaks. 2014-11-16 23:11:28 +01:00
Armin Novak
585d9101b7 Fixed memory leaks. 2014-11-16 23:06:03 +01:00
Armin Novak
07051fb3d1 Fixed memory leaks. 2014-11-16 23:00:13 +01:00
Armin Novak
e8c7d97c9d Fixed memory leaks. 2014-11-16 22:58:36 +01:00
Armin Novak
ce3e70840c Fixed uninitialized value. 2014-11-16 22:22:44 +01:00
Armin Novak
cef228d0f4 Fixed memory leak. 2014-11-16 15:54:37 +01:00
Armin Novak
b5d7c30639 Added support for OpenH264v1.2 2014-11-16 14:32:52 +01:00
Armin Novak
8d4589b1e1 Replaced fprintf error messages with WLog. 2014-11-16 12:21:38 +01:00
Marc-André Moreau
496ce10637 Merge branch 'master' of github.com:FreeRDP/FreeRDP 2014-11-15 12:37:29 -05:00
Marc-André Moreau
7300f5efdb Merge pull request #2206 from nfedera/fix-2014-11-12-01
libfreerdp-codec: fix mppc decompression
2014-11-14 10:39:44 -05:00
Norbert Federa
be7a10e660 core: use zero padding in suppress output pdu
Some legacy rdp servers seem to expect a zero padding after the
allowDisplayUpdates byte, probably because they incorrectly parse the
value as uint32.
2014-11-14 11:25:05 +01:00
Norbert Federa
7c0c905683 libfreerdp-codec: fix mppc decompression
* protect against history buffer overflows
* fix replicating copy (CopyOffset can be > HistoryBufferSize!)
2014-11-13 14:55:15 +01:00
Marc-André Moreau
1c9231acf8 libfreerdp-rail: remove 2014-11-12 19:51:17 -05:00
Marc-André Moreau
ddedc574f3 freerdp: remove tcp, uds utils 2014-11-12 14:06:34 -05:00
Marc-André Moreau
8c98cbc247 libfreerdp-utils: remove old time utils 2014-11-12 13:45:03 -05:00
Marc-André Moreau
986dae429b freerdp: remove deprecated svc_plugin.c utils 2014-11-12 13:34:07 -05:00
Marc-André Moreau
0e7c95c421 freerdp: remove deprecated eventing system 2014-11-12 13:18:18 -05:00
Marc-André Moreau
589c21d819 libfreerdp-utils: remove rail utils 2014-11-12 10:18:53 -05:00
Marc-André Moreau
68ee5df7d9 winpr: fix build warnings 2014-11-11 11:21:34 -05:00
Marc-André Moreau
a48ed7239d Merge branch 'master' of github.com:FreeRDP/FreeRDP
Conflicts:
	libfreerdp/core/update.c
2014-11-11 09:55:48 -05:00
Marc-André Moreau
e685acdbc5 Merge pull request #2194 from hopToDev/master
Added SIGPIPE handling for iOS.
2014-11-11 09:43:38 -05:00
Martin Fleisz
53f38d3e89 Merge pull request #2189 from llyzs/llyzs
Support Continuous Auto-Detection.
2014-11-11 08:42:48 +01:00
Vic Lee
36f0281ff8 libfreerdp-core: auto-detect defines. 2014-11-11 10:14:44 +08:00
Marc-André Moreau
ee7299ec3f channels/tsmf: remove dependency on deprecated eventing system 2014-11-10 16:33:34 -05:00
Mehul Dhorda
256eab682b Added SIGPIPE handling for iOS. 2014-11-10 11:52:29 -08:00
Marc-André Moreau
b7c6e9c050 Merge pull request #2188 from hopToDev/master
Ignore T.128 FlowPDU in Share Control header
2014-11-10 13:54:12 -05:00
Marc-André Moreau
a6bb185760 channels/tsmf: add new callback interface 2014-11-07 18:33:45 -05:00
Mike McDonald
7d5963a1e6 Fixed crash caused by trying to cast and dereference a NULL hChannel. 2014-11-07 18:06:14 -05:00
Mehul Dhorda
e8b8ae1900 Added comment to clarify flow control PDU fields. 2014-11-07 14:58:58 -08:00
Marc-André Moreau
bfdd3bd606 libfreerdp-gdi: fix bitmap update scanline size 2014-11-07 17:19:46 -05:00
Vic Lee
8eaeeebecc libfreerdp-core: support continuous auto-detection. 2014-11-07 16:18:49 +08:00
Marc-André Moreau
a538e791b3 shadow: add improved pointer updates 2014-11-06 17:25:41 -05:00
Mehul Dhorda
29c42cfc0e Fixed incorrect values for PDUTypeFlow.
Swapped values for PDU_TYPE_FLOW_RESPONSE and PDU_TYPE_FLOW_STOP to
match the T.128 spec.
2014-11-06 10:08:58 -08:00
Mehul Dhorda
f64d620a3b Ignore T.128 FlowPDU in Share Control header
According to the Microsoft RDP specification, T.128 flow control PDUs
should be ignored when reading Share Control headers.
(http://msdn.microsoft.com/en-us/library/cc240576.aspx). This patch
checks if we got a flow control PDU (length = 0x8000) and advances the
stream to ignore the PDU.
2014-11-05 11:32:46 -08:00
Marc-André Moreau
c5c9423ccf winpr: fix Win32 build warnings 2014-11-04 10:44:55 -05:00
Hardening
e04f90eada Offer to disable bulk compression when using remoteFx
This patch adds a skipCompression field in surface commands struct so that
we can disable bulk compression with remoteFx.
2014-11-04 16:14:53 +01:00
Vic Lee
18428a43d0 libfreerdp-core: distinguish continuous/connect-time autodetect. 2014-11-04 13:41:04 +08:00
Hardening
7b108f1aa8 Merge pull request #2141 from zhangzl2013/polyline
fix polyline.
2014-10-31 22:15:13 +01:00
Martin Fleisz
0be28ba0f6 Merge pull request #1965 from akallabeth/dynamic-addin-naming
Dynamic channel library naming
2014-10-31 13:42:16 +01:00
Marc-André Moreau
d323753a9e Merge pull request #2180 from nfedera/fix-2014-10-31-01
codec: fix pointer data conversion + 24bpp support
2014-10-31 07:49:32 -04:00
Martin Fleisz
d58c6de93c Merge pull request #2134 from akallabeth/windows_version_information
Windows version information
2014-10-31 12:23:11 +01:00
Norbert Federa
ea0d8a280c codec: fix pointer data conversion + 24bpp support
- alpha values were annihilated (fixed)
- support 24bit xor mask data added
2014-10-31 12:18:08 +01:00
Norbert Federa
62dbcac0c7 xfreerdp: fix glyph index primary drawing order
The fOpRedundant field of the GlyphIndex primary drawing order
(MS-RDPEGDI, chapter 2.2.2.2.1.1.2.13) was neglected which resulted in some
severe text rendering errors.
2014-10-29 20:56:26 +01:00
Vic Lee
152d525a05 libfreerdp-core: server-side auto-detect feature. 2014-10-29 00:49:49 +08:00
Vic Lee
0e7797ffca libfreerdp-core: server-side mcs message channel. 2014-10-29 00:49:27 +08:00
Marc-André Moreau
2de73e0243 Merge pull request #2130 from eosrei/2056/ts-gateway-connect-fail
Removing TS Gateway breaking BIO_clear_flags() call
2014-10-25 11:52:29 -04:00
Marc-André Moreau
02646b349f Merge branch 'master' of github.com:FreeRDP/FreeRDP
Conflicts:
	libfreerdp/core/gcc.c
2014-10-25 10:29:06 -04:00
Marc-André Moreau
765150e3ed libfreerdp-codec: fix incorrect pixel increment in freerdp_image24_copy 2014-10-23 15:50:24 -04:00
Marc-André Moreau
ce7302a999 wfreerdp: cleanup clipboard 2014-10-22 22:32:55 -04:00
Marc-André Moreau
25dd984812 Merge branch 'awakecoding-staging' of github.com:vworkspace/FreeRDP 2014-10-22 20:17:13 -04:00
Norbert Federa
9c2e90df7d core: fix pointer caps, slowpath kbd and a gcc fix
* According to MS-RDPBCGR 2.2.7.1.5 the pointerCacheSize is optional
  and its absence or a zero value indicates missing client support for
  the New Pointer Update.

* Added and fixed some comments regarding the meaning of the KBDFLAGS_DOWN
  keyboard flag and how it is currently used in the code.
  "Fixed" the slow path keyboard input to generate the same keyboard flags
  as the corresponding fast path code.

* Some arbitrary value was used for the ConnectPDULength in the GCC
  Conference Create Response. According to MS-RDPBCGR 4.1.4 this value must
  be ignored by the client so we encode a zero value instead.
2014-10-22 12:27:07 +02:00
Bernhard Miklautz
4dcc0957f1 Fix build on windows
Problem was introduces by a non pull request push for ipv6 support
2014-10-22 12:16:40 +02:00
Marc-André Moreau
23e4963102 xfreerdp: remove dependency on clrconv 2014-10-21 22:19:11 -04:00
Marc-André Moreau
5f95f0776f libfreerdp-codec: add freerdp_image_copy_from_monochrome replacement function for deprecated freerdp_mono_image_convert 2014-10-21 21:56:10 -04:00
Marc-André Moreau
0aab1e7ee5 libfreerdp-codec: fix and enhance cursor image conversion 2014-10-21 20:46:15 -04:00
Mike McDonald
5fa6fa7013 Merge branch 'master' of https://github.com/awakecoding/FreeRDP into awakecoding-staging 2014-10-20 14:42:46 -04:00
Jean-Louis Dupond
0dc0e01568 Add ipv6 client support 2014-10-17 12:08:39 +02:00
Marc-André Moreau
1d47b16f3c Merge branch 'master' of github.com:FreeRDP/FreeRDP 2014-10-14 20:59:37 -04:00
Marc-André Moreau
26556323c0 libfreerdp-color: fix 24bpp copy 2014-10-14 20:59:22 -04:00
Marc-André Moreau
02987bbd4a libfreerdp-codec: add 24bpp to 24bpp color conversion 2014-10-13 12:29:06 -04:00
Marc-André Moreau
a0bab75cff libfreerdp-codec: fix graphical artifacts with interleaved RLE 2014-10-13 11:39:21 -04:00
Marc-André Moreau
00e3533230 libfreerdp-core: expose API for FreeRDS WTSVirtualChannelRead 2014-10-10 17:19:38 -04:00
Marc-André Moreau
11ae267518 libfreerdp-core: expose new API to allow FreeRDS virtual channel hooking 2014-10-10 16:11:42 -04:00
Armin Novak
22c775988b Using global RC_VERSION_PATCH now. 2014-10-09 16:20:32 +02:00
Marc-André Moreau
9ce862edc8 Merge pull request #2135 from erbth/wfreerdp
Added lock key synchronization to wfreerdp
2014-10-09 09:05:58 -04:00
Zhang Zhaolong
3de5c62bf3 fix polyline. 2014-10-09 18:11:38 +08:00