Commit Graph

250 Commits

Author SHA1 Message Date
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
Armin Novak
673fb46836 Fixed uninitialized warnings 2021-09-10 08:16:25 +02:00
Armin Novak
0f8c52b9ca Fixed const warnings with argument parser 2021-09-09 08:53:20 +02:00
Armin Novak
f515bd4560 Fixed shadowing and type errors 2021-08-24 10:45:57 +02:00
Armin Novak
610396e197 Fixed compilation warnings
Try to get the number of warnings down
2021-08-02 10:28:06 +02:00
Armin Novak
34413d9480 Fix data write on usb channel 2021-06-23 12:05:11 +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
0355bbc51f Added missing log mapping for TRANSFER_OUT_REQUEST 2021-06-21 13:27:39 +02:00
Armin Novak
ccfe0c129e Removed checks already done by WINPR_ASSERT 2021-06-16 11:46:42 +02:00
Armin Novak
d6c84c28fb Renamed ArrayList_Add to ArrayList_Append
* Do not break API silently
2021-06-16 11:46:42 +02:00
Armin Novak
a1c8e4cf85 Refactored ArrayList_Add to conform to other functions 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
51919af2d6 Add more information to urbdrc log entries 2021-05-28 09:39:34 +02:00
akallabeth
566f47f63b Fixed compilation warnings. 2021-05-11 08:32:18 +02:00
akallabeth
ab49694101 Added new RDP file options 2021-05-11 07:59:05 +02:00
Ondrej Holy
892cbe3261 Fix various memory leaks reported by Coverity
Covscan report contains various memory leak defects which were marked
as important. I have spent some time analyzing them and although they
were marked as important, most of them are in error cases, so probably
nothing serious. Let's fix most of them anyway. The rest are false
positives, or too complicated to fix, or already fixed in master, or
simply I am unsure about them.

Relates: https://github.com/FreeRDP/FreeRDP/issues/6981
2021-04-27 14:25:20 +02:00
sss
6574fdf6e4 reverted changes from clang-format 2021-02-25 14:05:40 +01:00
Gluzskiy Alexandr
bee2e1526d allow to use in single threaded mode
(some client side channels and all server side channels still need to be
ported to new api)

server: build fix, do not disable threads for rfx encoder

cliprdr client channel: implemented support for DisableThreads option
looks like thread does not make sense at all for this channel

do not initialize disabled image codecs (respect settings)

channels: client: rail: added support for DisableThreads setting

changed "BOOL DisableThreads" to "UINT32 ThreadingFlags"
dropped unnecessary apu changes

draft implementation of threading settings aware message handling api
for addins/channels

rail: use new messaging api

fixed memory leak

msgs handlers external api changes (as requested)

msgs_handlers: init fix

fixed memory leak

logic fix

resolved problems appeared after rebase to master, dropped unnecessary
changes

git clang-format origin/master

fixed TestFreeRDPCodecRemoteFX.c

"formatting, run `clang-format` please"

properly use new "rfx_context_new(BOOL, UINT32)" everywhere

passed Threading Flags to "rfx_context_new" where available

in older C standarts veriables declaration must be done before any code

requested changes

clang-format as requested

use broken signatures of standert C functions for m$ s**tos

clang-format

requested changes

requested changes

moved ThreadingFlags to stable api zone

define type for channel msg handler

typo fix

clang-format

build fix

us ThreadingFlags from server settings

git clang-format origin/master

clang-format
2021-02-25 14:05:40 +01:00
akallabeth
43311130a2 Fixed CodeQL warnings 2021-02-19 11:19:49 +01:00
akallabeth
e2fd9db0b5 Added const to function arguments 2021-02-17 11:29:56 +01:00
akallabeth
2e5280feec Fixed possible out of bound access in usb channel. 2020-11-10 09:02:35 +01:00
akallabeth
6e3c00725a Cleaned up collections:
ArrayList, MessageQueue, Queue, PubSub, BipBuffer
ObjectPool and BufferPool
2020-11-06 12:30:13 +01:00
akallabeth
6f00308db7 Fixed short length for usb io control return. 2020-08-13 13:51:38 +02:00
Armin Novak
6ce0517593 Manually free up libusb transfer data to avoid double free 2020-08-12 10:34:58 +02:00
Martin Fleisz
2d715e4681
Merge pull request #6429 from akallabeth/channel_init_check
Added duplicate initialization check for plugins.
2020-08-11 14:34:07 +02:00
Martin Fleisz
1e7330b861
Merge pull request #6363 from akallabeth/urbdrc_double_free_fix
[URBDRC] Added return checks for replaced HashTable with ArrayList
2020-08-11 14:33:17 +02:00
akallabeth
786f6bbfe8 Fixed missing async user data extraction from libusb transfer 2020-08-11 14:12:36 +02:00
Armin Novak
75aab487e2 Added duplicate initialization check for plugins. 2020-08-10 16:17:44 +02:00
Armin Novak
93ee13245c Fixed urbdrc server notification of channel close
There was a recursion issue with usb device channel closing and
local redirected device removal.
If the local redirected device is removed due to hotplug events,
the device channel needs to be closed, which in turn checks if
the local device list contains the device. Ensure that the
channel close code is only executed when not called from the
channel side.
2020-08-10 13:40:41 +02:00
akallabeth
dbeaa614d6 Removed channel close in USB channel done after channel is freed 2020-08-10 13:34:30 +02:00
akallabeth
8c859575cf Fixed access to user_data after free 2020-08-10 13:34:30 +02:00
akallabeth
54c92e78e6 Fixed invalid buffer length and duplicated write function. 2020-08-10 13:34:30 +02:00
akallabeth
e7533130a6 Fixed urbdrc arraylist locking 2020-08-10 13:34:30 +02:00
Armin Novak
28bc636d53 Unified streamID read/write 2020-08-10 13:34:30 +02:00
Armin Novak
3ebc71abf3 Replace wHashTable with wArrayList in USB channel
The streamID is not guaranteed to be uniqe, so add all transfers
to a list and remove by checking pointers instead of the streamID
2020-08-10 13:34:30 +02:00
Armin Novak
ea8f93441d Added return checks for HashTable_Add 2020-08-10 13:34:30 +02:00
Armin Novak
57b405ca26 Fixed compilation warnings. 2020-08-10 12:14:11 +02:00
Armin Novak
8cee10319a Fixed urbdrc device path 2020-07-07 10:43:08 +02:00
Armin Novak
6efc72707c Fixed bDeviceClass check in udev_init
Use the proper constant  0xef (Miscellaneous) instead of
0xfe (Application Specific)
See https://www.usb.org/defined-class-codes
2020-07-07 10:43:08 +02:00
akallabeth
bc7d423c6c Replaced malloc in urbdrc channel 2020-07-07 10:43:08 +02:00
akallabeth
804891c0e8 Fixed discrepancy in string descriptor default 2020-07-07 10:43:08 +02:00
akallabeth
37a5a7a157 Replaced memset in urbdrc 2020-07-07 10:43:08 +02:00
akallabeth
29e3b0ea51 Unified logging for urbdrc libusb wrapper 2020-07-07 10:43:08 +02:00
akallabeth
66e4eb628b Initialize variable in func_instance_id_generate 2020-07-07 10:43:08 +02:00
akallabeth
8ee0fafa09 Improved error log for string descriptor read issues 2020-07-07 10:43:08 +02:00
akallabeth
2a493a58a8 Reverted check for short usb descriptor 2020-07-07 10:43:08 +02:00
akallabeth
2d95224488 Added compile time urbdrc debug option 2020-07-07 10:43:08 +02:00
akallabeth
fc8c07435f Dump USB channel data with log-level trace 2020-07-07 10:43:08 +02:00
Armin Novak
ef4de12887 Fixed double free in urb_isoch_transfer_cb 2020-06-03 08:37:45 +02:00
Armin Novak
a5e2d62e48 Do not remove transfer data on usb cancel transfer 2020-06-03 08:24:17 +02:00
Florian Staudacher
d1dc2fb03d report only actual bytes received, not allocated buffer size (interrupt produces data, timeout doesn't) 2020-06-02 09:21:30 +02:00
Florian Staudacher
03128d5154 only call 'libusb_set_interface_alt_setting' when value is changed 2020-05-29 10:48:23 +02:00
akallabeth
b584d07734 Fixed #6197: NULL check in urbdrc 2020-05-20 15:02:24 +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
akallabeth
52dd312e11 Fixed various input buffer length checks in URBDRC
Thanks to hac425 CVE-2020-11039
2020-05-08 11:04:03 +02:00
akallabeth
9f77fc3dd2 Fixed int overflow in msusb_mspipes_read
Thanks to hac425
2020-05-08 11:04:03 +02:00
akallabeth
5305d62b72 Fix oob read in msusb_msconfig_read 2020-05-06 13:31:57 +02:00
Bernhard Miklautz
3e89574205
Merge pull request #6124 from akallabeth/speedup
Unify inline and some warning fixes
2020-05-05 15:34:38 +02:00
akallabeth
9d014fe1ea Fixed compiler warnings for usb channel 2020-04-27 08:19:42 +02:00
Lukas Fink
0c27cecea4 Fixes null dereference bug
Avoids a null function pointer dereference that happened, when
freerdp_urbdrc_client_subsystem_entry failed before invoking
udevman_load_interface.
2020-04-26 19:09:13 +02:00
Lukas Fink
0cbff94aa9 Implemented udevman->hotplug_vid_pids as wArrayList 2020-04-26 19:09:13 +02:00
Lukas Fink
060253c9fa Added ability to add usb devs via id and addr simultaneously
It is now possible to add usb devices both via vid+pid and via bus+addr
at the same time. To do this, the ids are directly
given to the corresponding command line options:
/usb🆔<vid+pids>,addr:<bus+addrs>
The dev option still works like before: /usb:id,dev:<vid+pids> or
/usb:addr,dev:<bus+addrs>
2020-04-26 19:09:13 +02:00
Lukas Fink
0a5d0312d5 Added hotplug to /usb:id,dev option
Devices specified with the /usb:id,dev command line option are now
detected by the hotplug callback.
2020-04-26 19:09:13 +02:00
Lukas Fink
3d3cec4dc4 Fixed /usb:dev command line option
The /usb:dev command line option failed silently, because it tried to add the
devices before urbdrc gets initialized. This commit adds a new function
to udevman, that gets called when the urbdrc addin is initialized.
Registering of the given devices is now performed there.
2020-04-26 19:09:13 +02:00
akallabeth
c6666731d2 Removed casts in udevman_parse_device_id_addr 2020-04-21 08:05:06 +02:00
Lukas Fink
be884c2bf6 Refactored parsing of usb dev: command line option
Refactored urbdrc_udevman_register_devices with its helper functions,
because the old implementation was a bit quirky. Removed a unsafe
strcpy, that led to a buffer overflow when given misonstructed command
line options. Doing something like "/usb:id,dev🔢1234##abcd:abcd"
won't work anymore, too.
2020-04-21 08:05:06 +02:00
jacobopantoja
0f8437d1d8 Restrict USBDK to Windows builds
This commit restricts ebdaea6f3b to just Win32 builds
2020-04-11 09:04:29 +02:00
akallabeth
aa39e08c29 Fixed URBDRC DEVICE_ADD_FLAG definitions 2020-04-10 14:16:19 +02:00
akallabeth
42d40261c5 Fixed return type for subsystem entry 2020-04-10 14:11:15 +02:00
akallabeth
de7ea07a3d Fixed URBDRC parsing error reported in #6024. 2020-04-09 18:00:51 +02:00
Armin Novak
c58db76e4c Fixed return check for usbdk backend. 2020-03-09 16:40:07 +01:00
Armin Novak
95522923ba Move libusb hotplug registration to polling thread.
* libusb polling thread now is responsible for hotplug registration
  and removal as well as cleanup.
* Only register hotplug callback on systems with support.
2020-03-06 12:07:22 +01:00
Armin Novak
ebdaea6f3b enable usbdk on windows. 2020-03-06 12:07:22 +01:00
Armin Novak
e867ad3c9d Fixed compilation issues against libusb on windows 2020-03-06 12:07:22 +01:00
Armin Novak
34498d4064 URBDRC: Only mark closed if control is closed. 2020-03-03 11:15:34 +01:00
Armin Novak
30990089b8 Implemented del_device by vid/pid 2020-03-02 11:40:05 +01:00
Armin Novak
1b1ab01e43 Cleaned up USB redirection
* Removed obsolete searchman
* Unified device add and virtual channel add
* Unified device id generation
2020-03-02 11:40:05 +01:00
Armin Novak
acb77391a2 Fix #5910: USB hotplug added device wrong
When a USB device was added via hotplug add_device was called
with wrong arguments.
2020-03-02 11:40:05 +01:00
Armin Novak
53c15e3e90 Deactivate USB redirection for IOS and ANDROID by default. 2020-02-26 13:53:25 +01:00
Armin Novak
d633195879 Promoted usb, printer and smartcard dependencies to recommended 2020-02-25 17:36:17 +01:00
Martin Fleisz
e304428a5f
Merge pull request #5857 from akallabeth/scanbuild_fixes
Scanbuild fixes
2020-02-12 10:16:54 +01:00
Armin Novak
b004e01fc8 Exporting URBDRC symbols used by helper library
When building the usb channel with different shared libraries some
necessary symbols were not exported.
2020-02-11 12:42:45 +01:00
Armin Novak
8996fdc797 Fixed unused variable warning. 2020-01-23 10:12:12 +01:00
Armin Novak
f313fabb2b Added fallback for libusb < 1.0.19
we use stream_id functions which were introduced with 1.0.19
2020-01-13 15:23:57 +01:00
Armin Novak
b5bb6e3ea9 Fixed LIBUSB_HOTPLUG_NO_FLAGS definition
libusb documentation is a bit misleading, this flag was
introduced with 1.0.20
2020-01-13 15:13:35 +01:00
Armin Novak
d0929cbf2f Extend LIBUSB_API_VERSION check
The define exists since 1.0.13, so to compensate for older also
check if the variable is defined.
2020-01-10 10:52:23 +01:00
Armin Novak
b0de74cad2 Fallback definition for LIBUSB_HOTPLUG_NO_FLAGS
The flag was first introduced with libusb 1.0.16, so
define it if we are using an older version.

Signed-off-by: Armin Novak <armin.novak@thincast.com>
2020-01-08 17:14:09 +01:00
Armin Novak
d044915a7e Fixed stream handling and missing includes. 2019-12-17 15:51:24 +01:00
Armin Novak
c4a141cd8a Fixed some scanbuild warnings. 2019-11-22 11:47:16 +01:00
Armin Novak
0927d7aa50 Rewrite of urbdrc channel.
* Fix command line parsing
* Properly handle channel creation/destruction
* Use wStream API for parsing
2019-11-22 10:56:21 +01:00
Armin Novak
72ca88f49c Reformatted to new style 2019-11-07 10:53:54 +01:00
Armin Novak
0c87eaee4d COMMAND_LINE_ARGUMENT structs contain parser results, use one per instance
Remove the old global structs as the parser modifies them. When using
multiple instances in the same process space this could break parsing.
2019-10-28 13:30:05 +01:00
AzureusNation
4955a0e5b8 Fixes hub was not found! error
Again as with auto usb detection strtol needs to use base 10 and force to use base 10 else the conversion does not work correctly.
2019-10-23 09:56:23 +02:00
AzureusNation
7d6a10aaff Fixes Auto USB Redirection
Base 0 does not work when converting the string to long int. This ends up not showing the correct device id and sometimes the wrong bus id. By changing it to base 10 conversion instead of base 0 this fixes the issue of auto redirect usb devices.
2019-10-23 09:56:23 +02:00
Kyle Evans
d796920f8f (FreeBSD) Build fixes for urbdrc 2019-08-19 16:57:56 +02:00
Armin Novak
6c9130f7d6 Fixed sign-compare warnings. 2019-04-05 09:14:35 +02:00
Armin Novak
4430187e8d Fixed sign-compare warnings 2019-04-05 09:13:24 +02:00
Armin Novak
ef1728faf5 Fixed NULL dereferences and uninitialized values 2019-01-30 16:11:10 +01:00