Commit Graph

360 Commits

Author SHA1 Message Date
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
Marc-André Moreau
85191391d5 libfreerdp-core: simplify TS Gateway RPC fragment receiving 2015-01-31 16:56:25 -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
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
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
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
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
aa23c4eaaa libfreerdp-core: fix random TS Gateway disconnects with async modes 2014-12-12 09:08:39 -05: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
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
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
Armin Novak
e61acfe6b4 Fixed null pointer dereference. 2014-11-17 01:26:31 +01:00
Armin Novak
727a7a9aed Fixed memory leaks. 2014-11-17 01:08:38 +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
a594a15220 Fixed memory leaks. 2014-11-17 00:28:17 +01:00
Armin Novak
9e5be6f7e8 Fixed API nonnull warning. 2014-11-17 00:00:09 +01:00
Armin Novak
585d9101b7 Fixed memory leaks. 2014-11-16 23:06:03 +01:00
Marc-André Moreau
ddedc574f3 freerdp: remove tcp, uds utils 2014-11-12 14:06:34 -05:00
Armin Novak
7ceddc73e9 Decreased logging verbosity. 2014-09-15 19:51:58 +02:00
Armin Novak
d178e33db5 Decreased logging verbosity. 2014-09-15 19:51:37 +02:00
Armin Novak
2f519d7f16 Replaced logging in libfreerdp with wlog defines. 2014-09-15 08:48:46 +02:00
Armin Novak
6762d73ae1 Fixed winpr_HexDump calls. 2014-09-09 16:33:05 +02:00
Armin Novak
b22b897389 Reformatted changed files. 2014-09-09 16:32:22 +02:00
Armin Novak
f8eae11bf3 Fixed calling of dump functions, updated API 2014-09-09 16:31:46 +02:00
Armin Novak
f4c133eaf8 Replaced custom logging mechanism with WLog wrapper. 2014-08-07 16:51:24 +02:00
Marc-André Moreau
04968b18c4 libfreerdp-core: replace all OpenSSL built-in BIOs by new full duplex BIOs 2014-06-01 21:37:20 -04:00
Marc-André Moreau
a8be174e03 libfreerdp-core: remove ineffective full duplex locks 2014-06-01 11:20:13 -04:00
Marc-André Moreau
b1416af362 libfreerdp-core: add locks to disable full duplex BIOs (currently unsafe) 2014-05-30 14:53:10 -04:00
Hardening
dd6d829550 Allow transport_write calls to be non-blocking
This big patch allows to have non-blocking writes. To achieve
this, it slightly changes the way transport is handled. The misc transport
layers are handled with OpenSSL BIOs. In the chain we insert a
bufferedBIO that will bufferize write calls that couldn't be honored.

For an access with Tls security the BIO chain would look like this:
  FreeRdp Code ===> SSL bio ===> buffered BIO ===> socket BIO

The buffered BIO will store bytes that couldn't be send because of
blocking write calls.

This patch also rework TSG so that it would look like this in the
case of SSL security with TSG:
                                         (TSG in)
                              > SSL BIO => buffered BIO ==> socket BIO
                             /
FreeRdp => SSL BIO => TSG BIO
                             \
                              > SSL BIO => buffered BIO ==> socket BIO
                                        (TSG out)

So from the FreeRDP point of view sending something is only BIO_writing
on the frontBio (last BIO on the left).
2014-05-21 17:42:31 +02:00
Sandor Oroszi
d447f122c3 libfreerdp-core: fix misplaced sec_trailer in rpc_auth_3 PDU 2014-05-20 17:15:26 +02:00
Hardening
9f1d0201ec Changes for base64
This patch changes the prototype for decode_base64 so that the encode / decode
method are consistant (encode(BYTE *) => char* and decode(char*) => BYTE*).
It also does some improvements with unrolling loops so that end conditions are
tested only at the end.
The patch also adds some unitary tests.
Before the patch base64_decode() made valgrind complain about uninitialized
bits, after valgrind is happy and very quiet.
2014-05-11 22:49:10 +02:00
Hardening
597cba042a Fix some compilation warnings 2014-04-29 16:02:31 +02:00
Marc-André Moreau
769502ec72 Merge branch 'master' of github.com:FreeRDP/FreeRDP 2014-04-26 13:47:01 -04:00
Zhang Zhaolong
e64a64dcd6 core: fix memory leak in case of error out. 2014-04-26 13:44:28 +08:00
Zhang Zhaolong
69eee0709d core: fix memory leak in case of error out. 2014-04-26 12:08:30 +08:00
Zhang Zhaolong
24fce3a749 core: fix memory leak in case of error out. 2014-04-26 12:05:52 +08:00
Marc-André Moreau
3ee6494d36 libfreerdp-core: cleanup GatewayUsageMethod setting 2014-04-24 17:05:10 -04:00
Benoit LeBlanc
9e859ad11f rpc_client_stop() : Avoid waiting infinitely for rpc client thread if connection failure occurs while in "synchronous receive" mode. 2014-04-24 14:07:11 -04:00
Hardening
ef38a5e55d Fix multiple WWW-Authenticate headers
This patch fixes the case with the server trying to negociate the authentication
method and returning multiple WWW-Authenticate headers.
2014-04-19 09:14:14 +02:00
Hardening
2edd8bee12 Misc fixes to check OOM 2014-04-10 21:10:19 +02:00
Marc-André Moreau
4093f1a715 Merge pull request #1782 from hardening/oom_cases
Treat OOM cases
2014-04-09 10:39:31 -04:00
Hardening
1d1844aabd Treat OOM cases 2014-04-09 16:07:06 +02:00
Hardening
4210890acd Fix corner cases in http parsing
This patch adds checks for malloc / strdup, and free all memory
when such call fails.
2014-04-09 15:00:38 +02:00
Benoît LeBlanc
3e1dfc6311 updated context error messages. utility macros for getting error code CLASS/TYPE 2014-03-21 13:45:43 -04:00
Benoît LeBlanc
d1b9565f51 Added context-specific error management.
Added error codes to replace connectErrorCode.
2014-03-20 18:19:54 -04:00
Marc-André Moreau
e0966bbfff Merge branch 'master' of github.com:mrthebunny/FreeRDP 2014-03-10 23:08:17 -04:00
Benoît LeBlanc
557c082458 Merge branch 'master' of git://github.com/awakecoding/FreeRDP 2014-03-05 16:35:22 -05:00
Dan Bungert
3b7fd4ceb6 Improved Gateway error handling
* General improvements to reduce the case where something bad happens
  and RDP hangs around forever without closing.
* Specific error code improvement for CAP related login rejection.
2014-03-04 09:39:39 -07:00
Marc-André Moreau
8a44b2baa6 libfreerdp-core: add spn-class option 2014-02-12 00:43:02 -05:00
Marc-André Moreau
cdcd290c44 wfreerdp: fix most build warnings 2014-02-10 22:12:13 -05:00
Benoît LeBlanc
bb9fa6979d Fix compilation on windows (variable declaration was not in standard C) 2014-01-08 21:02:40 -05:00
Benoît LeBlanc
ac6385448b tsg_write: return error when transport layer is closed 2013-12-20 18:24:29 -05:00
Benoît LeBlanc
3dddce811c rpc client thread: added periodic check on transport layer state, replacing an infinite wait operation. 2013-12-20 18:23:57 -05:00
Benoît LeBlanc
ad4d5c1ce7 Added timeout on blocking send, receive operations 2013-12-20 18:22:29 -05:00
Benoît LeBlanc
44e7d2f36c error handling in rpc and transport functions 2013-12-20 17:56:59 -05:00
Benoît LeBlanc
9245d364cc Fixed handling gateway authentication error
Handle NULL pdu
2013-12-18 12:59:53 -05:00
Benoît LeBlanc
3adff0ec60 - added CANCELEDBYUSER error code.
- AUTHENTICATIONERROR error code correclty set on gateway authentication (http error 401)
- Better error handling on connection errors and user cancelation
2013-12-13 10:11:36 -05:00
Benoît LeBlanc
8c1f836ac8 - SSL verification callback: send correct hostname and port
- Gateway Authentication callback.
- Handling “use same credentials”
2013-12-06 22:15:45 -05:00
Marc-André Moreau
85b7ad90fe libfreerdp-core: fix possible crash on unauthorized TS Gateway error 2013-12-05 17:31:33 -05:00
Marc-André Moreau
9829504fc1 libfreerdp-core: start async transport thread after successful transport-level connection 2013-11-01 10:24:19 -04:00
Marc-André Moreau
3bc47a2bf8 libfreerdp-core: fix leaks and potential use after free 2013-10-31 21:12:06 -04:00
Marc-André Moreau
8609a19cac Merge branch 'master' of github.com:FreeRDP/FreeRDP 2013-10-17 17:34:16 -04:00
Dan Bungert
04c2e4aef6 Gateway: Logoff crash fix
This addresses a race condition where the freerdp client
may crash on logoff.
2013-10-17 14:53:39 -06:00
Dan Bungert
486250b182 Gateway: Parsing fix for Create Tunnel Response
This fix addresses a logon issue that may occur when a logon
message is present.
2013-10-17 14:51:04 -06:00
Marc-André Moreau
c058095251 libfreerdp-core: cleanup TS Gateway code 2013-10-11 05:07:33 -04:00
Marc-André Moreau
0dd5788266 libfreerdp-core: minor TS Gateway fixes 2013-10-11 02:10:02 -04:00
Armin Novak
61c0c98dac Fixed missing free for subbuffers of packet. 2013-09-05 12:14:34 +02:00
Armin Novak
e5c138a5b9 Fixed various memory leaks, allocation size issues and API misuse
warnings shown by clang as well as some compiler warnings.
2013-09-05 12:14:34 +02:00
Armin Novak
a3b531c036 Fixed issues found with clang-analyzer 2013-09-05 12:14:33 +02:00
Armin Novak
66da66cdc2 Fixed coverity issue 1047614 2013-09-05 12:14:32 +02:00
Armin Novak
15466fc37d Fixed coverity issue 1047615 2013-09-05 12:14:31 +02:00
Armin Novak
a861cdbdd9 Fixed coverity issue 1047616 2013-09-05 12:14:31 +02:00
Armin Novak
91cfc90f3b Fixed coverity issue 1047617 2013-09-05 12:14:31 +02:00
Benoît LeBlanc
c17c2f811b FreeRDP:
- replaced char* by const char* in function prototypes
- MacFreeRDP: moved assignation of context function pointers
- freerdp: added more pointer and return value validations to prevent crashes
2013-07-04 14:42:40 -04:00
Marc-André Moreau
90ce8be9fc freerdp-core: added Terminate event 2013-06-18 16:55:23 -04:00
Marc-André Moreau
2bd6808432 freerdp: merge with master 2013-06-05 10:31:01 -04:00
Benoit LeBlanc
bda6acbf3f Updated with changes from awakecoding repository. 2013-05-31 14:54:15 -04:00
Martin Fleisz
120960fd4d libfreerdp-core: Added support for server initiated shutdown to TSG 2013-05-22 10:58:11 +02:00
Marc-André Moreau
367ebf32a3 freerdp: make use of stream macros to access members 2013-05-15 12:14:26 -04:00
Marc-André Moreau
dc0aa4c72d Merge branch 'master' of github.com:FreeRDP/FreeRDP 2013-05-10 16:43:19 -04:00
Marc-André Moreau
30e2db0553 Merge pull request #1242 from hardening/http_fixes
Misc fixes in HTTP parsing
2013-05-08 15:44:49 -07:00
Hardening
73e6b5efc9 Misc fixes in HTTP parsing
* HTTP headers are case insensitive (see RFC2616 4.2 for details)
* Check errors when parsing status line
* treat LWS around the colon in headers
2013-05-09 00:39:09 +02:00
Marc-André Moreau
5e4365788f freerdp: merge with master 2013-05-08 15:15:15 -04:00
Martin Fleisz
935aa5e2ea iOS: Added TS Gateway support 2013-05-08 14:50:29 +02:00
Marc-André Moreau
51715636a5 freerdp: remove some deprecated stream utils 2013-04-29 22:35:15 -04:00
Benoit LeBlanc
3eebd2edf2 Implemented writing RDP file to disk
TODO: Optimize by only writing the fields that have a value i.e
~((size_t) file->FieldName) != 0

Fixed wfi leak.
Fixed insufficient mem alloc.
2013-04-22 16:08:47 -04:00
Hardening
7701c9d934 Replace printf(...) by fprintf(stderr, ...) 2013-03-28 23:06:34 +01:00
Marc-André Moreau
8b9ea43d78 libfreerdp-core: fix locking with TS Gateway 2013-03-27 20:06:10 -04:00
Marc-André Moreau
8c8a82c31f libfreerdp-utils: purge old STREAM utils 2013-03-21 16:45:25 -04:00
Marc-André Moreau
882c914e6c channels/tsmf: fix build 2013-03-21 14:45:03 -04:00
Marc-André Moreau
0031c4918e libfreerdp-core: add TS Gateway system message support 2013-03-14 12:57:45 -04:00
Marc-André Moreau
10b48b1af8 libfreerdp-core: separate TSG response parsing from receiving 2013-03-13 15:43:44 -04:00
hardening
865ff2a5f8 Fixed compilation with -Wstrict-prototypes 2013-02-14 22:20:43 +01:00
Marc-André Moreau
6c57bcf0a9 libfreerdp-core: start implementing TSG messaging 2013-02-01 17:52:19 -05:00
Marc-André Moreau
a17ddeea2a mfreerdp-server: merging with master 2013-01-31 11:33:08 -05:00
Marc-André Moreau
4a5bd8584a libwinpr-sspi: cleanup NTLM authenticate message construction 2013-01-30 19:47:27 -05:00
Marc-André Moreau
f3d4da3cf9 libfreerdp-core: added more RPC fault PDU error codes 2013-01-25 13:52:01 -05:00
C-o-r-E
575a38794b libfreerdp: fixed parenthesis 2013-01-23 13:44:58 -05:00
Marc-André Moreau
f0c94562cc libfreerdp-core: TS Gateway cleanup and NTLM SingleHostData implementation 2013-01-09 12:05:34 -05:00
Marc-André Moreau
1d893ed268 libwinpr-sspi: add support for NTLMv2 Channel Binding Token (CBT) 2013-01-09 00:20:08 -05:00
Marc-André Moreau
81c2782be3 libwinpr-sspi: start implementing Channel Bindings 2012-12-21 12:17:07 -05:00
Marc-André Moreau
8267f2cb88 libfreerdp-core: fix usage of proper gateway credentials 2012-12-18 10:51:43 -05:00
Marc-André Moreau
d19e2042c3 libfreerdp-utils: remove deprecrated unicode utils in favor of WinPR 2012-12-17 10:20:25 -05:00
Marc-André Moreau
a02090c09b libfreerdp-utils: fix unicode conversion 2012-12-16 23:00:40 -05:00
Marc-André Moreau
92bf3e4ae0 libfreerdp-utils: remove sleep utils in favor of WinPR 2012-12-14 00:58:48 -05:00
Marc-André Moreau
808fc210e3 libfreerdp-utils: remove hexdump utils in favor of WinPR utils 2012-12-13 23:54:54 -05:00
Marc-André Moreau
cfa2e169c1 libfreerdp-core: added missing codec GUIDs 2012-12-13 23:33:24 -05:00
Marc-André Moreau
b53bdba143 libfreerdp-core: TSG cleanup 2012-12-13 20:23:37 -05:00
Marc-André Moreau
7d8ef00d6a libfreerdp-core: implement proper TS Gateway connection shutdown 2012-12-13 12:40:46 -05:00
Marc-André Moreau
c0d12b1b9e libfreerdp-core: implement RTS flow control ack PDU 2012-12-13 11:01:13 -05:00
Marc-André Moreau
c317c60275 libfreerdp-core: reply to TSG ping PDUs 2012-12-13 10:49:52 -05:00
Marc-André Moreau
f43298d69b libfreerdp-core: set target name in RPC bind 2012-12-13 07:37:41 -05:00
Marc-André Moreau
c428d1c4de libfreerdp-core: fix build on linux 2012-12-12 23:36:15 -05:00
Marc-André Moreau
6450ecd67f libfreerdp-core: fix windows build 2012-12-12 23:18:20 -05:00
Marc-André Moreau
52353e2427 libfreerdp-core: TSG printf cleanup 2012-12-12 22:34:41 -05:00
Marc-André Moreau
7ff2be09b2 libfreerdp-core: more TSG memory cleanup 2012-12-12 22:03:40 -05:00
Marc-André Moreau
102abcbef2 libfreerdp-core: improve TSG memory cleanup 2012-12-12 20:02:56 -05:00
Marc-André Moreau
387a152299 libfreerdp-core: TSG reassembly refactoring 2012-12-12 15:55:42 -05:00
Marc-André Moreau
d3e0537d0d libfreerdp-core: more TSG memory cleanup 2012-12-12 00:49:15 -05:00
Marc-André Moreau
3aeb9eb197 libfreerdp-core: TSG partial cleanup 2012-12-11 23:34:51 -05:00
Marc-André Moreau
dc978a967c libfreerdp-core: improve receiving of TSG data 2012-12-11 19:17:57 -05:00
Marc-André Moreau
8aa1143cc6 libfreerdp-core: work around PDU corruption issue with TSG, still experience locking 2012-12-11 17:24:52 -05:00
Marc-André Moreau
db91555564 libfreerdp-core: improved TSG asynchronicity 2012-12-10 18:56:53 -05:00
Marc-André Moreau
0f3d80d63f libfreerdp-core: start implementation of asynchronous RPC fragment receive 2012-12-10 15:43:07 -05:00
Marc-André Moreau
6e07570dda libwinpr-utils: simplify stream utils 2012-12-10 14:23:27 -05:00
Marc-André Moreau
7f1a5ab7cd libfreerdp-core: fix TSG synchronous receive 2012-12-07 22:43:53 -05:00
Marc-André Moreau
282c950522 libfreerdp-core: fix pipe call id check 2012-12-07 22:27:05 -05:00
Marc-André Moreau
731e606c15 libfreerdp-core: start handling client call state 2012-12-07 21:09:55 -05:00
Marc-André Moreau
2f6192532f libfreerdp-core: map DCE error codes 2012-12-07 18:33:52 -05:00
Marc-André Moreau
2215e0a57a libfreerdp-core: improve comments for TS Gateway 2012-12-07 17:41:12 -05:00
Marc-André Moreau
98c4cb56a1 libfreerdp-core: set TSG non-blocking mode 2012-12-06 16:49:50 -05:00
Marc-André Moreau
875c556d13 libfreerdp-core: change interlocked singly-linked list to synchronized Queue 2012-12-05 16:04:01 -05:00
Marc-André Moreau
0fcd7ea243 libfreerdp-core: fix build with WITH_DEBUG_TSG 2012-11-30 12:35:49 -05:00
Marc-André Moreau
7285700705 libfreerdp-core: revert to HTTP/ SPN settings for TS Gateway 2012-11-29 10:53:54 -05:00
Marc-André Moreau
4fe3501bc4 libfreerdp-core: refactoring of sequencing of TSG connection 2012-11-29 01:33:19 -05:00
Marc-André Moreau
dde2e60a56 libfreerdp-core: refactor RPC receiving as a synchronized queue 2012-11-28 22:03:18 -05:00
Marc-André Moreau
3634a1bbf1 libfreerdp-core: encapsulate received RPC PDU 2012-11-28 21:25:01 -05:00
Marc-André Moreau
5faebcd77a libfreerdp-core: start asynchronous receiving 2012-11-28 20:30:03 -05:00
Marc-André Moreau
3936a19914 libfreerdp-core: add asynchronous send queue 2012-11-28 13:38:01 -05:00
Marc-André Moreau
d0792ea4d1 libwinpr-synch: implement pipe-based semaphore 2012-11-28 12:47:04 -05:00
Marc-André Moreau
335add832d libfreerdp-core: split code from rpc.c to rpc_bind.c and rpc_fault.c 2012-11-28 00:32:12 -05:00
Marc-André Moreau
536d7be180 libfreerdp-core: move RTS pdu signature checking to separate file 2012-11-27 22:27:04 -05:00
Marc-André Moreau
4da0c0daa9 libfreerdp-core: refactor NTLM over HTTP authentication 2012-11-27 22:03:05 -05:00
Marc-André Moreau
83a9af128f libfreerdp-core: move TSG code in subdirectory 2012-11-27 18:52:08 -05:00