akallabeth
1626530825
Some cleanups in rdpgfx channel
2022-06-23 07:45:55 +02:00
akallabeth
5b163b7918
Add GetRdpContext function pointer for dynamic channels
2022-06-23 07:45:55 +02:00
David Fort
e389210673
client channels: mutualize common types between dynamic channels
...
Most dynamic channels share the same copied and pasted code for the XXX_CHANNEL_CALLBACK
and XXX_LISTENER_CALLBACK types. This patch introduce GENERIC_CHANNEL_CALLBACK and
GENERIC_LISTENER_CALLBACK that fits for most channels and discard custom type definitions.
2022-06-15 14:04:58 +02:00
Marc-André Moreau
161617c4a4
Implement RDP persistent bitmap cache
2022-06-08 23:37:06 +02:00
Pascal Nowack
9d627e0df2
channels/server: Add APIs for DVCs to get notified of channel id
...
This allows server implementations to watch these channel ids for their
creation statuses.
2022-06-08 15:26:51 +02:00
akallabeth
46ccf6d0d7
Fixed RDPGFX_CAPVERSION_106 according to errata ( #7924 )
...
The [MS-RDPEGFX] spec is not really sure which value to use, so we
just announce both, the one from the spec and the one from errata.
2022-05-25 13:11:29 +02:00
Armin Novak
387d4bd8fd
Disable scaled output PDU if no scaling support compiled
2022-05-24 10:08:53 +02:00
Armin Novak
40f5578206
Add GFX 10.7 capsets
2022-05-24 10:08:53 +02:00
akallabeth
962c5c3ef0
Fixed dead store warnings
2022-04-28 12:37:19 +02:00
akallabeth
cc3e28f2f1
Fixed -Wdocumentation errors
2022-04-28 11:24:51 +02:00
akallabeth
73cdcdfe09
Logging and parser fixes ( #7796 )
...
* Fixed remdesk settings pointer
* Fixed sign warnings in display_write_monitor_layout_pdu
* Use freerdp_abort_connect_context and freerdp_shall_disconnect_context
* Added and updates settings
* info assert/dynamic timezone
* mcs assert/log/flags
* Fixed and added assertions for wStream
* Unified stream length checks
* Added new function to check for lenght and log
* Replace all usages with this new function
* Cleaned up PER, added parser logging
* Cleaned up BER, added parser logging
* log messages
* Modified Stream_CheckAndLogRequiredLengthEx
* Allow custom format and options
* Add Stream_CheckAndLogRequiredLengthExVa for prepared va_list
* Improved Stream_CheckAndLogRequiredLength
* Now have log level adjustable
* Added function equivalents for existing logger
* Added a backtrace in case of a failure is detected
* Fixed public API input checks
2022-04-19 14:29:17 +02:00
Armin Novak
4d03d7c0bf
Freerdp remove #ifdef HAVE_CONFIG_H
2022-03-03 11:26:48 +01:00
Armin Novak
b2ad47a809
Reorganized FreeRDP headers
2022-03-03 11:26:48 +01:00
Armin Novak
fd027d1bf0
Removed BUILTIN_CHANNELS
...
Building client channels out of tree does not work reliable as the
dependencies can not be easily split. (exceptions may be simple ones
as echo channel)
It does complicate the build system and code though, so remove this
for maintainability reasons.
2022-02-23 10:43:46 +01:00
akallabeth
8cc6582044
Unify struct definitions ( #7633 )
...
* Unified enum/struct definitions, fixed include issues
* Fixed mac compilation issues
* Added missing include
* Fixed windows server build warnings
* Fixed VS2010 build issue
* Removed unnecessary library linking
* Fixed ThreadPool WinXP compatibility
* Fixed pr review remarks
2022-02-14 14:59:22 +01:00
Armin Novak
b9cfa10513
Fixed some more warnings
2022-01-31 15:55:10 +01:00
akallabeth
4b416968c4
Added checks and asserts in rdpgfx_common
2022-01-27 10:33:30 +01:00
akallabeth
6f154da1ae
Added plausibility checks and assert to rdpgfx_read_header
2022-01-27 09:50:35 +01:00
zbstao
5b8db18f26
Added pduLength check in rdpgfx_read_header function
...
if pduLength is zero will lead to an infinite loop in rdpgfx_recv_pdu function.
2022-01-27 16:24:26 +08:00
Armin Novak
fe4c30fc54
Fixed warning in rdpgfx server channel
2021-12-14 13:46:34 +01:00
Armin Novak
96cf17a45b
Replaced (IWTSPlugin*) casts with struct address return
2021-10-07 16:22:04 +02:00
akallabeth
7b7e2d6f32
Prefer constant division over multiplication for length checks
2021-09-21 08:55:22 +02:00
akallabeth
7dfdd248ee
Monitor coordinates are exclusive ( #7145 )
...
* Monitor coordinates are exclusive
* Remove force override of shadow resolution.
The client might ignore the server requested values, in that case
retry
2021-07-07 11:54:01 +02:00
akallabeth
0ab809d696
Fixed WINPR_ASSERT statement ( #7148 )
2021-07-02 18:42:22 +02:00
akallabeth
a199d2a051
Added better logging and assertions for gfx
2021-07-02 09:53:24 +02:00
akallabeth
2101aadceb
Fixed missing assertions and default color depth
2021-07-02 09:53:24 +02:00
akallabeth
bd256b91bc
Fixed disabling of AVC444 mode if requested
2021-07-01 11:56:17 +02:00
Armin Novak
8ef57bf296
Replaced CMAKE_[SOURCE|BINARY]_DIR with PROJECT_[SOURCE|BINARY]_DIR
...
Thanks @Pollux42 for the hint in #7096
2021-06-22 08:54:18 +02:00
Armin Novak
5fb59a23a9
Fixed lots of compilation warnings and type mismatches
2021-06-16 15:21:56 +02:00
Armin Novak
31862e60f9
Added missing return checks
2021-06-16 11:46:42 +02:00
Armin Novak
880c603c26
Renamed HashTable_Add to HashTable_Insert
...
* Since the changes break HashTable_Add rename it so that it will
not fail silently
2021-06-16 11:46:42 +02:00
Armin Novak
d36d94766e
Replaced assert with WINPR_ASSERT
2021-06-14 09:37:07 +02:00
Armin Novak
61d380943d
Added bounds check in rdpgfx_recv_wire_to_surface_1_pdu
2021-03-12 10:52:04 +01:00
akallabeth
f346793970
Refactored encoder functions to return changed areas
2021-03-01 11:52:07 +01:00
akallabeth
51811a369f
Fixed missing stream length checks.
2020-11-20 09:39:25 +01:00
Armin Novak
75aab487e2
Added duplicate initialization check for plugins.
2020-08-10 16:17:44 +02:00
akallabeth
4039370064
Fixed input sanitation in rdpgfx_recv_solid_fill_pdu
...
The input rectangle must be checked for plausibility.
Thanks to Sunglin and HuanGMz of the Knownsec 404 security team and pangzi of pwnzen
2020-07-20 14:11:36 +02:00
akallabeth
cac8c365f2
Reset pointer to NULL after free.
2020-05-20 15:10:08 +02:00
Vladyslav Hordiienko
15245c2abd
fix typo in GFX logs
2020-05-18 10:56:40 +02:00
akallabeth
64ad42b95b
Fixed DestroyListener arguments and call order
2020-05-13 17:11:17 +02:00
akallabeth
2f5e5359f6
Destroy channel listeners on terminate
2020-05-12 11:40:42 +02:00
Kobi Mizrachi
929457db4c
egfx: client: add missing NULL checks
2020-03-09 08:28:40 +01:00
Armin Novak
5690780bdd
[RDPEGFX] checks for cache import, prevent 0 size allocations
2020-03-06 12:28:21 +01:00
Armin Novak
35d7e896ae
Fix GFX cache eviction, use 1 based indexing.
2020-03-04 11:01:23 +01:00
Martin Fleisz
174832150e
Merge pull request #5932 from nfedera/fix_gfx_bitmapcache_indexing
...
Fix RDPEGFX bitmap cache indexing
2020-03-04 09:31:52 +01:00
Norbert Federa
17e0d25104
dynvc/client: fix and improve channel closing code
...
- fixed and consolitate the duplicated code for sending the
CLOSE_REQUEST_PDU to the server into dvcman_close_channel
- call dvcman_close_channel if a dynamic channel plugin fails
to process the received channel data
- rdpegfx: don't try to remove a non-existing cache entry,
return an error instead which now will close the channel, as
expected by Microsoft's windows protocols test suite
2020-03-04 08:03:56 +01:00
Norbert Federa
39e12990e8
rdpegfx: rename MaxCacheSlot to MaxCacheSlots
...
Although Microsoft uses 1-based numbering on the wire for indexing the
GFX bitmap cache entries, the code in FreeRDP uses 0-based numbering and
therefore the name MaxCacheSlots is less confusing.
2020-03-02 09:55:25 +01:00
Norbert Federa
f4d5ec776f
rdpegfx: use 1-based indexing for bitmap cache
...
Weird but Microsoft uses 1-based indexing in the RDPGFX bitmap
cache PDU's.
This does not seem to be documented but can be deducted from the
RDP client test code in Microsoft's "Windows Protocol Test Suites"
GitHub repository and the observation that mstsc aborts with a
protocol error if the cacheSlot index value 0 is used in e.g. a
GFX surface to cache PDU.
2020-03-02 09:55:25 +01:00
Armin Novak
03e2106f25
Fixed accidental reorder of surface delete and disconnect
2020-01-16 15:24:55 +01:00
Kobi Mizrachi
18be21a4fa
rdpgfx: client: fix leak when using rdpgfx_client_context_new API
2020-01-13 13:41:44 +01:00
Kobi Mizrachi
3f9e6ca978
rdpgfx: surface_to_scaled_window: fix pdu type
2019-12-12 11:10:44 +01:00
Armin Novak
72ca88f49c
Reformatted to new style
2019-11-07 10:53:54 +01:00
kubistika
bf2e1a33d0
channels: rdpgfx: export API to create rdpgfx client
2019-10-24 12:19:31 +02:00
Armin Novak
f93d625cde
Use GetTickCount64 instead of GetTickCountPrecise.
2019-09-02 15:46:36 +02:00
kubistika
bf618fb929
rdpgfx/client: Update gfx->UnacknowlegedFrame correctly
2019-06-06 10:24:27 +03:00
kubistika
49e7c5ddc0
rdpgfx/server: Fix formatting: rdpgfx_recv_cache_import_offer_pdu
2019-06-06 07:53:34 +03:00
kubistika
bf97d3e041
rdpgfx/client: Expose QoeFrameAck
2019-06-06 07:53:34 +03:00
kubistika
98e09af2ff
rdpgfx/client: Implement CacheImportOffer PDU
2019-06-06 07:53:34 +03:00
kubistika
e2eeb9f870
rdpgfx: Add WITH_DEBUG_RDPGFX option
2019-06-04 10:29:05 +03:00
Armin Novak
f22b77d49c
Fixed GFX flags and CapsConfirm return checks
2019-05-09 12:46:10 +02:00
Armin Novak
48a12ae131
Fixed memory leak and return values in rdpgfx_recv_caps_advertise_pdu
2019-05-08 12:05:58 +02:00
Armin Novak
7b2608a938
Added gfx capability filter option.
...
With this new option it is possible to selectively disable certain
GFX capability versions. This way buggy behaviour can be addressed
at runtime.
2019-05-08 11:43:22 +02:00
Armin Novak
1bb933b991
Fixed missing argument checks.
...
The arguments for rdpgfx_send_frame_acknowledge_pdu must be checked
as in some call stacks they might be NULL.
2019-05-07 13:46:24 +02:00
Armin Novak
3b7e46fb0e
Updated GFX to 10.6 spec
2019-05-07 12:10:13 +02:00
akallabeth
95b8b43d4d
Merge pull request #5376 from kubistika/bugfix/rdpgfx-server-v10.6-PDUs
...
rdpgfx: Fix GFX v10.6 PDUs parsing and naming according to the spec
2019-05-06 15:32:32 +02:00
akallabeth
314fcee41e
Merge pull request #5377 from m4ntis/gfx/fix-caps-confirm-recv
...
client/rdgpfx_main.c: Fix rdpgfx_recv_caps_confirm_pdu caps length read
2019-05-06 12:51:23 +02:00
Mati Shabtay
2048708235
client/rdpgfx_main.h: Formatting
2019-05-05 16:27:11 +03:00
Armin Novak
841cb70f91
Fixed const correctness of gfx function pointer
...
Signed-off-by: Mati Shabtay <matishabtay@gmail.com>
2019-05-05 16:17:15 +03:00
Mati Shabtay
eee234c239
rdpgfx/client: Add callbacks for manual caps sending and frame acking
2019-05-05 15:56:35 +03:00
Mati Shabtay
e9dfe13a70
client/rdgpfx_main.c: Fix rdpgfx_recv_caps_confirm_pdu caps length read
2019-05-05 13:39:04 +03:00
kubistika
e9faaedc85
rdpgfx: Fix GFX v10.6 PDUs parsing and naming according to the spec
2019-05-05 12:34:57 +03:00
Martin Fleisz
6eb108058e
Merge pull request #5306 from akallabeth/gfx_server_caps_input_checks
...
Fixed input stream length checks in rdpgfx_recv_caps_advertise_pdu
2019-04-29 11:27:06 +02:00
Armin Novak
8af9c138e3
Fixed input stream length checks in rdpgfx_recv_caps_advertise_pdu
2019-04-26 13:11:46 +02:00
Mati Shabtay
6e8c02c9ee
Added optional PreFrameAck callback to RdpgfxClientContext ( #5303 )
...
* RdpgfxClientContext: Add PreFrameAck callback
* client/rdpgfx_main.c: Call PreFrameAck callback before acking frame
* client/rdpgfx_main.c: Fix windows_msbuild_vs2010 CI build
* client/rdpgfx_main.c: Fix error logs log level
2019-04-05 13:37:51 +02:00
Mati Shabtay
5d808226af
client/rdpgfx_main.c: Fix wire to surface 2 pixel format decode
2019-03-18 16:07:18 +02:00
Mati Shabtay
88b7859c87
server/rdpgfx_main.c: Fixed caps advertise PDU recv ( #5304 )
2019-03-15 08:37:35 +01:00
Armin Novak
11cefecb7b
Temporarily disable GFX version >= 10.3
2019-03-04 09:07:27 +01:00
Armin Novak
9be2324be8
Disabled RDPGFX_CAPVERSION_106 for good.
2019-02-28 13:43:11 +01:00
Armin Novak
69e9571d9e
Fixed EGFX capability parsing, respect length fields.
...
Disable RDPGFX_CAPVERSION_106 as we currently do not support scaled
outputs.
2019-02-27 17:15:43 +01:00
Armin Novak
e8c8e7b6d0
Updated EGFX support to 10.6
2019-02-27 16:36:15 +01:00
Armin Novak
5904cad1f7
Replaced hardcoded xfreerdp program name
2019-02-12 10:53:30 +01:00
Armin Novak
d5720b7999
Fixed clang scanbuild false positive memory leak.
...
The memset did confuse the analyzer. Remove it as the variable
is already initialized to zero.
2019-01-29 17:17:24 +01:00
Ondrej Holy
405c133381
channels/rdpgfx: Fix leak found by covscan
...
leaked_storage: Variable "s" going out of scope leaks the storage it points to.
2018-08-22 13:35:43 +02:00
Ondrej Holy
36a68b4eae
channels/rdpgfx: Format code by astyle
...
Run ./scripts/format_code.sh before the following changes.
2018-08-22 13:35:43 +02:00
Armin Novak
2517755d25
Fixed thread function return and parameters.
2018-03-07 14:36:55 +01:00
Armin Novak
1a902c249c
Fix PROFILER_* macros
...
Add the semicolon to the macro to allow clean
undefinition if the profiler is not used.
This used to break VisualC compilers.
2018-02-15 11:30:38 +01:00
Armin Novak
25076cfce1
Fixed a memory leak.
2018-02-09 10:23:48 +01:00
Armin Novak
92811ea5b5
Added return checks.
2018-02-02 10:41:20 +01:00
Armin Novak
3b70d1178b
Added AVC444 chroma support to shadow server.
2018-02-02 10:39:33 +01:00
David Fort
191b8f950f
Fix for #4330
...
Since ec027bf
dynamic resolution is broken when used with egfx. Before that commit
we were tracking a server sent resize by setting a DesktopResize callback. This callback
is called when the desktop is resized by the server. Anyway the problem was that when this
callback is called, the activation sequence is not always completed, which were leading to
some freeze with 2012r2 servers (sending packets before the sequence is finished).
So with the faulty commit, we are tracking server resizes by subscribing to the Actived
event, that is called at the end of a reactivation sequence, so we're sure to not send packets
when not fully activated.
Anyway the issue that shows on (#4330 ) is that when you use egfx, no reactivation sequence happens,
the server only sends a ResetGraphics message with the new size, and so we miss the resized event.
This fix introduces a new GraphicsReset event, makes the display channel subscribe to that event,
and react accordingly.
2017-12-23 13:50:54 +01:00
David Fort
158840429d
micro code style changes
2017-12-23 10:26:25 +01:00
Martin Fleisz
5cec90c781
Merge pull request #4305 from hardening/xrandr_fix
...
Fix XRandr for old systems and MacOSX
2017-12-13 17:24:41 +01:00
David Fort
41823080f9
Fix users of Stream_GetPosition() that returns size_t
2017-12-11 22:38:58 +01:00
Armin Novak
57958cb178
Fixed #3810 : Renamed color functions
2017-11-24 13:21:43 +01:00
David Fort
504b771686
Merge pull request #4053 from akallabeth/ffmpeg_encoder
...
Implemented FFMPEG based encoder.
2017-11-06 11:25:48 +01:00
David Fort
5d5376faa7
egfx: fix disconnection caused by invalid cache entries due to wrong announced cache size
...
Added some checks so that when setting a cache entry fails, we close connection (or
we fail later when trying to use that empty entry).
The small cache egfx capability has also been fixed.
2017-10-10 17:12:16 +02:00
Martin Fleisz
e28ea4555f
channels: Don't send gfx capversion 10 if AVC420 is requested
2017-09-11 12:05:03 +02:00
Mike Gabriel
c045bddf3f
Fix typos in some error messages
2017-08-03 08:38:05 +02:00
Armin Novak
8a0cec946b
Added AVC420 in AVC444 shadow encoding
2017-08-02 09:42:04 +02:00
Armin Novak
478ca97a16
Fixed resource cleanup.
2017-07-20 09:35:41 +02:00