Commit Graph

687 Commits

Author SHA1 Message Date
MartinHaimberger
b06d83ba80 Merge pull request #2766 from akallabeth/snprintf_to_sprintf_s
Replaced snprintf with sprintf_s
2015-07-15 09:47:43 +02:00
Bernhard Miklautz
68e8569110 winpr/synch: remove the dependency on winsock.h
winsock.h pulls in a lot of defines and dependencies that are not
required and partially unwanted in winpr's core (for parts that are not
related to network). In order to get rid of this dependency and have an
independent defines for extended winpr functions the WINPR_FD_* defines
are used internally (and for exposed functions). Where required, like in
WSAEventSelect, the FD_* is mapped to WINPR_FD_*.
2015-07-14 11:39:41 +02:00
Armin Novak
cf9f975341 Replaced snprintf with sprintf_s 2015-07-03 13:26:15 +02:00
Armin Novak
40a7f2c995 Added missing include breaking windows build. 2015-07-03 12:46:28 +02:00
MartinHaimberger
282f15795d Merge pull request #2762 from akallabeth/handle_write_event
Add write event support to HANDLE
2015-07-03 11:36:00 +02:00
Armin Novak
82da97e606 Updated sample server.
* Added new command line argument --port to allow starting the
  sample server on a port different than default 3389.
* Using GetKnownSubPath now to determine location of temporary
  directory for server socket.
* Using distinct server socket files for each port.
2015-07-03 10:04:24 +02:00
Armin Novak
d18b0fbeb4 Handle API updated. 2015-07-03 09:52:52 +02:00
Norbert Federa
1c43a6e115 Merge pull request #2738 from bmiklautz/ffuncs
hardening: check fread and fwrite return values
2015-07-01 13:02:32 +02:00
Bernhard Miklautz
798df32fd9 Integrate pull request feedback
* unify fwrite usage - set nmemb to 1 and the size to the size to write.
2015-07-01 12:22:32 +02:00
zihao.jiang
c7b598bc4d server/shadow: Fix incorrect handle of makecert_context_process.
Also fix another typo for makecert_context_set_output_file_name
2015-06-29 02:16:31 +08:00
Bernhard Miklautz
1cee185e3c hardening: check fread and fwrite return values 2015-06-26 20:38:30 +02:00
Armin Novak
e8bfa29bd2 Replaced registry keys with cmake defines. 2015-06-24 14:02:48 +02:00
Martin Fleisz
ccf5ba3194 Merge pull request #2717 from realjiangms/shadow_encoder_fps
server/shadow: shadow encoder related enhancement/fix.
2015-06-24 09:22:55 +02:00
Armin Novak
89eac97d0e Fixed uninitialized value. 2015-06-23 12:09:42 +02:00
zihao.jiang
e00655c3c2 server/shadow: shadow encoder related enhancement/fix.
1. Export fps related API so that subsystem implementation no longer need to know about details in encoder structure.
2. Discard frameList dictionary.
The 'value' in this dictionary is never used and not properly free'ed when client is disconnected.
The dictionary was used to calculate 'inflight' frame count. Once an ACK is received from client, an item in the dictionary is removed.
We then calculate 'inflight' frame by the count of the items in the dictionary.
However, some rdp clients (win7 mstsc) skips frame ACK if it is inactive, ACK of some frame would actually never arrive.
We actually don't need the dictionary. We only need to record the latest acknowledged frame id, and the difference between last sent frame id is the inflight frame count.
3. Minor fix in default fps calculation. encoder->frameAck is wrongly used as integer while it's actually bool flag.
2015-06-23 14:36:53 +08:00
Bernhard Miklautz
06502e6a91 misc: integrate pull request feedback 2015-06-22 19:24:30 +02:00
David FORT
7c3f8f33ab Fixes for malloc / calloc + other fixes
This patch contains:

* checks for malloc return value + treat callers;
* modified malloc() + ZeroMemory() to calloc();
* misc fixes of micro errors seen during the code audit:
** some invalid checks in gcc.c, also there were some possible
integer overflow. This is interesting because at the end the data are parsed
and freed directly, so it's a vulnerability in some kind of dead code (at least
useless);
** fixed usage of GetComputerNameExA with just one call, when 2 were used
in misc places. According to MSDN GetComputerNameA() is supposed to return
an error when called with NULL;
** there were a bug in the command line parsing of shadow;
** in freerdp_dynamic_channel_collection_add() the size of array was multiplied
by 4 instead of 2 on resize
2015-06-22 19:21:47 +02:00
Bernhard Miklautz
bf73f4e4f1 Fix unchecked strdups
* add missing checks
* adapt function return values where necessary
* add initial test for settings
2015-06-22 19:09:59 +02:00
Marc-André Moreau
750e752d45 Merge pull request #2697 from realjiangms/shadow_audio
Shadow server: fix channel disposal and add audio support. fix message mechanism in client
2015-06-22 09:52:53 -04:00
Marc-André Moreau
82179c7d8b Merge pull request #2698 from realjiangms/shadow_stand_alone
server/shadow: Decouple shadow_subsystem and subsystem implementation detail.
2015-06-22 09:39:17 -04:00
Marc-André Moreau
d10203c2a2 Merge pull request #2699 from realjiangms/shadow_connect_disconnect
server/shadow: add connect/disconnect anchor in subsystem callback
2015-06-22 09:38:46 -04:00
zihao.jiang
2335a307cb server/shadow: integrate comment from @hardening
Return directly at subsystem->ClientConnect
Also change to argument to accept shadow_client instead of freerdp_peer
2015-06-16 00:43:17 +08:00
zihao.jiang
15707363fb server/shadow: Integrate comment from @hardening: use switch to handle different message id. 2015-06-15 23:54:30 +08:00
zihao.jiang
131f030e0e server/shadow: Decouple shadow_subsystem and subsystem implementation detail.
Make shadow_subsystem standalone so that others can implement customized shadow server with shadow library.
2015-06-14 22:20:47 +08:00
zihao.jiang
b169dfd930 server/shadow: add connect/disconnect anchor in subsystem callback
Other implementation of subsystem may want to track connect/disconnect of each client
2015-06-14 22:15:47 +08:00
zihao.jiang
8485d866d4 This is originally to add audio support. Several fixes included:
1. Introduce message queue in shadow client. No longer use subsytem->MsgPipe->out to deliver message to clients.
We used to use subsytem->MsgPipe->out for messages which need to be sent to client. But it's not correct. Only one client would get the message if multiple client exists
This problem make the fix in PR #2643 incomplete.
Introduced reference count based solution to release resource taken by the message.
Also added APIs for client message delivery.
Also fixed msg pipe in subsystem to clean resource when destroyed.
2. Discard unused StopEvent in client. We actually use quit message instead.
3. Enhance disposal of channels.
Free context for remdesk and encomsp channels. The original fix only stop the threads, but doesn't release resource.
Dispose channels earlier. The channels are built on client->vcm. Disposing channels after client->vcm is closed cause unknown behavior.
Original fix is #2644
4. Start to add audio support.
2015-06-14 21:45:52 +08:00
Armin Novak
7403cdc60c Added PathMakePath function. 2015-06-09 13:16:28 +02:00
Norbert Federa
202a931125 server/shadow: prevent memcopy of NULL area 2015-06-08 16:34:45 +02:00
Norbert Federa
677be4d113 server/shadow: resuscitate shadow server
shadow_client_refresh_rect returned FALSE if the areas parameter
was NULL. It may only do so if the count parameter is > 0.
2015-06-08 15:55:11 +02:00
Marc-André Moreau
608174cba6 Merge pull request #2649 from xhaakon/cross-monitor-subrect
shadow_screen: allow sub-rectangle to span multiple monitors
2015-06-02 09:15:29 -04:00
David FORT
12f873f1f9 Fixed MessageQueue and callers 2015-05-29 14:24:14 +02:00
Hardening
dbb67cdf7f Merge pull request #2642 from hardening/shadow_fix
Specify to skip compression with remoteFx frames
2015-05-28 22:58:15 +02:00
Jakub Adam
dea741fca9 shadow_screen: allow sub-rectangle to span multiple monitors
When we share a sub-rectangle of our desktop, allow it to span over
multiple monitors. Previously it was possible to export an area larger
than one display, however the contents were always cropped to
the boundaries of the selected monitor and the rest was visible for
the client only as a black area .
2015-05-25 14:19:34 +02:00
Marc-André Moreau
36cb1e6dc9 Merge pull request #2639 from awakecoding/master
WLog, server-side rdpdr, remote assistance, byteswap, etc
2015-05-22 14:30:11 -04:00
Marc-André Moreau
649d49549e Merge pull request #2644 from xhaakon/shadow-server-disposal
shadow_client: dispose encomsp and remdesk
2015-05-22 14:15:31 -04:00
Jakub Adam
bc1bbe61a8 shadow_client: dispose encomsp and remdesk
Their threads were kept running after the client's exit.
2015-05-22 14:01:29 +02:00
Jakub Adam
9e60246a8c Don't dispose shadow server before all clients have disconnected
Ensure all client threads are disconnected before we stop the server
thread and thus make it available for deletion. We do this because
shadow_client_context_free() accesses rdpShadowServer structure, which
we have to keep alive as long as it is needed.

Calling shadow_client_context_free() after shadow_server_stop() and
shadow_server_free() were called may have caused an application crash.
2015-05-22 13:56:57 +02:00
David FORT
b01d64d386 Specify to skip compression with remoteFx frames 2015-05-22 11:12:41 +02:00
Marc-André Moreau
5526348079 Merge branch 'master' of github.com:FreeRDP/FreeRDP 2015-05-21 13:29:59 -04:00
Norbert Federa
535a4352a7 shadow/client context cleanup and unused vars fix 2015-05-21 16:05:05 +02:00
Norbert Federa
cd0a8e0506 Merge pull request #2630 from hardening/new_2616
Add checks for some XXX_New and XXX_Add functions
2015-05-21 16:04:26 +02:00
Marc-André Moreau
ebf863f2eb Merge pull request #2557 from realjiangms/shadow_fix_hang2395
shadow fix multi-client hang
2015-05-20 16:26:31 -04:00
David FORT
29d372480a Take in account nfedera's review 2015-05-20 19:19:50 +02:00
Marc-André Moreau
29d14773c8 Merge branch 'master' of github.com:FreeRDP/FreeRDP
Conflicts:
	client/Windows/wf_client.c
	libfreerdp/common/assistance.c
2015-05-20 10:12:24 -04:00
Hardening
f8120919af Add checks for some XXX_New and XXX_Add functions
Based on PR #2616
2015-05-18 11:28:00 +02:00
MartinHaimberger
e3236c2317 Merge pull request #2605 from nfedera/fix-2015-05-08-01
fixed multiple missing gdi return value checks
2015-05-11 16:59:32 +02:00
Norbert Federa
1eff1a345e free can handle NULL perfectly fine 2015-05-11 09:07:39 +02:00
zihao.jiang
85dd90d817 shadow fix multi-client hang
Merge from commit d4df3a952b
Conflicts:

	server/shadow/shadow_subsystem.c
2015-05-11 00:04:07 +08:00
Norbert Federa
71a4349928 fixed multiple missing gdi return value checks
mainly gdi_Create* functions
2015-05-08 21:39:23 +02:00
Marc-André Moreau
30dd40e10a wfreerdp: fix and improve remote assistance 2015-05-07 14:20:49 -04:00