Commit Graph

1031 Commits

Author SHA1 Message Date
Martin Haimberger
6348e41479 channel rdpei hardend 2015-06-18 03:04:32 -07:00
Martin Haimberger
d7636d0e28 channel rail hardend 2015-06-18 03:04:32 -07:00
Martin Haimberger
b9853f87eb channel encomsp hardend 2015-06-18 03:04:32 -07:00
Martin Haimberger
e5d5cd3c94 hardend cliprdr
hardend cliprdr server and client
also updated all callbacks in the server and client
implementations
2015-06-18 03:04:31 -07:00
Norbert Federa
f04bb6c53d xfreerdp: xfc->palette wasn't updated with /gdi:sw
When using software gdi (/gdi:sw) the rdp update PDU callback
gdi_palette_update() is used which writes the new colors to
the rdpContext's gdi->palette buffer.
The X11 functions however access xfc->palette which gets only
updated by xf_gdi_palette_update() which is the callback if
/gdi:hw is used.

This commit changes xfc->palette to a pointer which points to
xfc's private buffer with /gdi:hw or to the gdi->palette if
software gdi is used.
2015-06-11 18:40:41 +02:00
Hardening
29de9b6d4e Merge pull request #2658 from hardening/fix_2657
Fix for #2657
2015-05-29 17:58:30 +02:00
David FORT
12f873f1f9 Fixed MessageQueue and callers 2015-05-29 14:24:14 +02:00
ivan-83
94a7abd2af + tsmf: OSS initial suppot (not work yet)
* tsmf: fix video playback on FreeBSD (proper shared object name)
* tsmf: renamed args: audio->sys, audio-dev->dev
* audin: OSS fix, now it work
* cmdline: add syntax help for /audin, /rdpsnd, /tsmf
* add debug messages
2015-05-27 22:54:13 +03:00
David FORT
85c350f5da Fix for #2657 2015-05-27 15:13:43 +02:00
Marc-André Moreau
b9c1cddc2e Merge pull request #2583 from bceverly/OpenBSD-cleanup
Two minor source code changes to remove warnings
2015-05-21 10:17:54 -04: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
David FORT
b83af4c059 Fixed declaration of xf_event_action_script_init() 2015-05-20 21:01:46 +02:00
David FORT
29d372480a Take in account nfedera's review 2015-05-20 19:19:50 +02:00
Norbert Federa
4d661fdb35 client/x11: fix + simplify invalidate_poly_region 2015-05-19 01:13:40 +02: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
Norbert Federa
1b5abec683 client/x11: fixed if statements with empty body 2015-05-17 18:24:11 +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
Norbert Federa
71a4349928 fixed multiple missing gdi return value checks
mainly gdi_Create* functions
2015-05-08 21:39:23 +02:00
David FORT
0e2925d0b8 Fix remoteApps
The assert that have been removed were preventing RAIL from working when you
have an intermediary screen before seeing the application.
2015-05-07 14:36:07 +02:00
Norbert Federa
25fc866a58 Fix unchecked CreateThread calls and misc fixes 2015-05-05 13:55:48 +02:00
Bryan Everly
df9ae5e31b Changed the xf_tsmf.c code to test for zero visible rectangles for all platforms. Modified arc4random() change to actually have a skeletal implementation in winpr for BCryptGenRandom() on all platforms. 2015-04-30 10:12:37 -04: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
Bryan Everly
6ed90e831e Fixed linker warning about insecure crypto and fixed compiler warning about unsigned being compared to less than zero 2015-04-28 10:50:29 -04:00
Marc-André Moreau
1fea6bf702 Merge pull request #2568 from nfedera/fix-2015-04-23-01
codec/rfx: error checking and various fixes
2015-04-24 13:36:27 -04:00
Bryan Everly
18b335e2f2 Added support for manpage construction for OpenBSD 2015-04-24 08:38:35 -04:00
Norbert Federa
84577b1ca7 codec/rfx: error checking and various fixes
- removed some unneeded null checks for free()
- fixed a memory leak in shadow_client
- removed rfx_compose_message_header from API

Changed the following functions to BOOL, check the result
where they are called and handle failures:
- rfx_compose_message
- rfx_compose_message_header
- rfx_write_tile
- rfx_write_message_tileset
- rfx_write_message_frame_begin
- rfx_write_message_region
- rfx_write_message_frame_end
- rfx_write_message

rfx_process_message:
- check memory allocation failures
- verify protocol-conform order of data messages to prevents memory
  leaks caused by repeated allocations
- verify that header messages were parsed/received before the
  data messages
- treat unknown rlgr mode as error
- fixed/added error handling
- fixed all callers to check/handle result

rfx_encode_message:
- fixed incorrect usage of realloc
- missing malloc check
- missing check of CreateThreadpoolWork
- correct cleanup on failure (threadpool, memory)
- check rfx_encode_message result

rfx_encode_messages:
- check rfx_split_message result
- correct cleanup on failure
- prevent memory leak on failure

rfx_write_message_context:
- fixed invalid channelId value (must be 0xFF for WBT_CONTEXT)

rfx_process_message_codec_versions:
- fixed invalid read size of codec_version (it is 16bit)

rfx_process_message_channels:
- verify protocol conform channelId value

rfx_process_message_region:
- replaced invalid reallocs with malloc
- read and verify regionType and numTileSets from stream

rfx_process_message_tileset:
- check allocation results
- fixed incorrect usages of realloc

setupWorkers:
- fixed incorrect usages of realloc

rfx_split_message:
- removed dead code
- missing malloc check

rfx_compose_message:
- fixed a memory leak
- check/handle rfx_encode_message result
2015-04-23 15:42:21 +02:00
Hardening
6cd7713e12 Merge pull request #2544 from bmiklautz/boolenization
change return types of callbacks to BOOL
2015-04-22 11:01:27 +02:00
Bryan Everly
8c75127a67 Necessary changes to get latest branch working on OpenBSD 5.6 2015-04-21 14:42:06 -04:00
Bernhard Miklautz
1e6943bf31 Fix formating 2015-04-21 14:20:24 +02:00
Bernhard Miklautz
db81151ea4 gdi: fix broken return type checks
Integrates comments from pull request.
2015-04-21 14:18:07 +02:00
Bernhard Miklautz
2c072d33d3 Fix GDI return values and other fixes
* top level GDI functions return 0 on error and != 0 otherwise but the
  low level functions (16bpp.c, 8bpp.c 32bpp.c) which are called did it
	exactly the other way around. Those were adapted.
* change gdi_InvalidateRegion to BOOL and check calls where appropriate
* integrate comments from pull request
2015-04-21 14:18:07 +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
Armin Novak
d3336340ba Add *get_event_handles handle count, return check. 2015-04-21 12:24:50 +02:00
Norbert Federa
fd5f47428b xfreerdp: fixed initial smart-sizing dimensions
The window width/height variables and in turn SmartSizingWidth/Height
get automatically updated in th the configure notify event handler.
If the window is created initially the values don't differ from the
event values and therefore SmartSizing was not applied until the
window was resized.
2015-04-16 23:54:56 +02:00
Norbert Federa
bad2f138c1 xfreerdp: FS fixes & smart-sizing resuscitation
- make smart-sizing work again which was killed in previous commits
- removed several unnecessary/ugly workarounds
- miscellaneous small fixes
- new feature: restore previous window position when toggling out of
  fullscreen mode
- new feature: if /f is specified in combination with /smart-sizing:WxH
  we run the session in the /smart-sizing dimensions scaled to full screen
2015-04-16 17:31:22 +02:00
Norbert Federa
eb14ab15f5 xfreerdp: removed some weird/unnecessary code 2015-04-16 17:31:22 +02:00
Norbert Federa
98505a0234 xfreerdp: removed desktopWidth/desktopHeight vars
These were basically unused (from the contexts's point of view)
and only served as temporary storage
2015-04-16 17:31:22 +02:00
Norbert Federa
b3b8306724 xfreerdp: removed unused variables from xf_monitor 2015-04-16 17:31:22 +02:00
Norbert Federa
6354a7561c xfreerdp: rename xf_context's width height vars
Since several contributers in the past repeatedly made the error
to treat xfc->width and xfc->height as equal with the x11 window
width and heigth I've renamed these variables to sessionWidth and
sessionHeight.
2015-04-16 17:31:22 +02:00
Bernhard Miklautz
3c7662517c hardening
Start to add missing checks for:
* *alloc
* *_New
2015-03-25 17:38:21 +01:00
Armin Novak
c380fb3520 Added flag to ignore unknown keywords
freerdp_client_settings_parse_command_line now allows ignoring
unknown keywords.
2015-03-16 10:15:37 +01:00
Marc-André Moreau
5ab34dfa3e Merge pull request #2456 from zhangzl2013/fix-realloc
Fix incorrect usage of realloc
2015-03-12 07:33:27 -04:00
Marc-André Moreau
719a0fd3e9 Merge pull request #2426 from bjcollins/master
xfreerdp fullscreen enhancements
2015-03-12 07:27:29 -04:00
Zhang Zhaolong
855b1201aa xf_cliprdr: fix incorrect usage of realloc.
Signed-off-by: Zhang Zhaolong <zhangzl2013@126.com>
2015-03-11 12:31:50 +08:00
Seray Rosh
ffa7f0363f release keys when xfreerdp is unfocused to prevent stuck keys 2015-02-27 16:02:40 +01:00
bjcollins
d4a9a2d3a8 Remove override redirect flag for fullscreen with keyboard grab enabled. Window manager should always know about the main window.
Small cleanup of passing around decorations flag.
Limit PercentScreen to single monitor vs. entire desktop. IMO - this is better behavior in a multimonitor environment.

Handle fullscreen windows better:
1. Ensure that size hints are set to allow resizing before setting a window to fullscreen as some window managers do not behave properly.
2. Handle fullscreen toggles without destroying and recreating window.
3. Use NET_WM_STATE_FULLSCREEN Extended Window Manager Hint for fullscreen functionality
4. Use the NET_WM_FULLSCREEN_MONITORS Extended Window Manager Hint when appropriate
5. When a single monitor fullscreen is requested - use the current monitor(as determined from mouse location)
6. Handle cases where there is no local monitor at coordinate 0,0. The Windows server expect there to be a monitor at this location, so we maintain offset if necessary between our local primary monitor and the server side primary monitor located at 0,0.
2015-02-23 11:22:28 -06: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
bjcollins
ee8d0a6440 Fix remote app in xfreerdp.
Remove use of the visibleOffset, this completely breaks the display of all windows except for the main application window. Instead,
just maintain a local offset correction of the windowOffset.

Apply workaround to determining the workArea for remote app mode.
2015-02-11 17:24:06 -06: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
Marc-André Moreau
b025d83919 Merge pull request #2374 from bjcollins/master
Apply correct exit code to xfreerdp application for certain log offs
2015-02-10 10:41:10 -05:00
bjcollins
bb87599f80 Apply correct exit code to xfreerdp application for log off from certain flavors of Windows. 2015-02-09 17:15:07 -06:00
Armin Novak
b4db02867a Fixed resource cleanup on disconnect. 2015-02-09 17:33:55 +01:00
Marc-André Moreau
8b524021f1 xfreerdp: fix egfx multimon on reconnect 2015-02-06 17:46:15 -05:00
Marc-André Moreau
82d58086db xfreerdp: partial reconnect fixes 2015-02-05 17:01:56 -05:00
Bernhard Miklautz
5558f7cd54 xfreerdp: fix problem with SetPosition
Since XWarpPointer generates an pointer motion event, as if the mouse
was moved by hand, xfreerdp sends back the received mouse position to
the server. This behavior is wrong since pointer positions set via
server pointer update pdu shouldn't get sent back to the server
(it's not a "real" mouse move).

To fix this problem change the x windows event mask to not handle
pointer motion events before setting the new pointer position and change
it back again afterwards.

Possible downside of this is that some pointer motion events might get
lost but this shouldn't be noticeable.

Thanks to nfedera for the neat idea ;).
2015-02-03 22:08:34 +01:00
Bernhard Miklautz
823dbb1dd0 xfreerdp: add support to set pointer 2015-02-02 15:32:49 +01:00
Marc-André Moreau
7c6948cd5c xfreerdp: make use of freerdp_get_event_handles 2015-01-30 09:47:02 -05:00
Armin Novak
dd9e1879b6 Updated h264_decompress arguments. 2015-01-22 13:24:33 +01:00
Marc-André Moreau
9bc32c2a85 Revert "Moved channel loading, now only loading before connect."
This reverts commit f7756efca6.
2015-01-20 10:15:37 -05:00
Armin Novak
f7756efca6 Moved channel loading, now only loading before connect. 2015-01-20 12:13:08 +01:00
Armin Novak
5bc1e41109 Using freerdp_channels_disconnect now. 2015-01-20 11:24:58 +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
5d4de15401 xfreerdp: fix crash with /monitor-list
Catch the case when /monitor-list was used but the X display couldn't
be opened or wasn't available.
2015-01-16 00:10:36 +01:00
Armin Novak
e10b42e305 Fixed typo. 2015-01-15 15:26:43 +01:00
Armin Novak
9767f7f042 Added patch for UTF8 window titles, fixes #1364 2015-01-15 14:25:43 +01:00
Armin Novak
7dda510dda Resetting disconnect flag on client start.
Fixed initialisation of variable to avoid NULL dereference.
2015-01-13 12:43:27 +01:00
Armin Novak
524e4635fd Fixed typos.
gdi_free now done on disconnect.
2015-01-13 12:00:51 +01: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
5e6b3de74e xfreerdp: fix usage of incorrect target clipboard format id 2014-12-26 11:30:09 -05:00
Marc-André Moreau
e6eeae2ddd xfreerdp: fix clipboard null byte at end of string (issue #2209) 2014-12-21 13:49:22 -05:00
Marc-André Moreau
f1bd547580 Merge branch 'master' of github.com:FreeRDP/FreeRDP
Conflicts:
	client/X11/xf_client.c
2014-12-15 15:55:51 -05:00
Norbert Federa
5c68b1cf22 xfreerdp: fix RDP order color conversion
Note: /gdi:sw was working fine, this commit fixes /gdi:hw

* calculate color channel shifts based on X11 visual color masks
* fast path to skip conversion if visual color masks equal rdp color masks
* successfully tested 8/15/16/24/32 bpp rdp sessions on 16/24/32 bpp visuals
2014-12-15 16:34:09 +01: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
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
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
23d64bd6ca Fixed uninitialized value. 2014-12-07 00:29:28 +01:00
erbth
9f068ca0f7 fixed shutdown of input thread in xfreerdp 2014-12-05 21:48:24 +01:00
Norbert Federa
443ee42db5 gdi: don't pollute invalid region with empty rects 2014-12-05 19:47:29 +01: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
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
75e0e84130 Merge branch 'master' of github.com:FreeRDP/FreeRDP 2014-12-04 10:00:10 -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
Bernhard Miklautz
bd8c3f448e xfreerdp: fix a possible re-size race condition
In case of server side initiated desktop resize it could happen that the
client was "scaling" even if smart-sizing was disabled. The reason for
this was that the "scaled" width and height was set when the X Configure
event arrived but not in xf_desktop_resize.
2014-12-03 18:08:01 +01:00
Marc-André Moreau
01ac15a879 libfreerdp-core: fix crash on failed redirect 2014-12-03 11:48:27 -05:00
Norbert Federa
0e443484d8 xfreerdp: smart-sizing and software-gdi fixes
* fixed crash on server-initiated desktop resize and fullscreen toggle with /gdi:sw
* implemented desktop resize for /gdi:sw
* check for availibility of XRender extension and show error messages if a setting would require it
* fixed compile error if xrender devel packages are missing
* fixed bug with server-initiated desktop resize in fullscreen mode
2014-12-03 15:41:10 +01: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
Norbert Federa
85297fb343 xfreerdp: remove duplicated drawing operations
Most of xfreerdp's hw gdi callbacks did the the same X11 drawing operation
twice: Initially on the primary pixmap to keep the back buffer up to date
and then directly on the window in order to see the result.
This sequence is followed by a call to gdi_InvalidateRegion() to mark the
rectangular area of the drawing operation.
Since in xfreerdp's current design (or better current evolved state) the
backbuffer pixmap is obligatory, all drawing operations directly targeting
the window are redundant because of the subsequent EndPaint (mapped to
xf_hw_end_paint) where the damaged region is copied from the backbuffer
to the drawable.

- removed X11 drawing operations which directly target the window drawable
- fixed some errors in the calculation of the required update regions
2014-12-01 11:19:27 +01:00
Norbert Federa
3fa3384eb4 xfreerdp: several fixes for panned/pinched drawing
- use bilinear filter instead of nearest filter
- fixed invalid transformation matrix
- support non-proportional scaling
- fix calculation of transformed coordinates (rounding errors)
2014-12-01 11:17:16 +01:00
Marc-André Moreau
c26b557ab4 Merge pull request #2215 from nfedera/fix-2014-11-16-01
xfreerdp: fix polyline
2014-11-17 09:41:07 -05:00
Armin Novak
a2bbb265c1 Fixed memory leaks. 2014-11-17 00:36:01 +01:00
Armin Novak
bfd3962f03 Fixed memory leak. 2014-11-17 00:26:33 +01:00
Norbert Federa
84a4514ca9 xfreerdp: fix polyline
X11 gdi polyline has been broken by commit 3de5c62.
We don't need to convert the point coordinates if XDrawLines is called with
coordinate mode CoordModePrevious.
2014-11-16 18:48:14 +01:00
Armin Novak
7eb6bc112b Fixed dereference of NULL pointer. 2014-11-16 16:44:29 +01:00