Commit Graph

95 Commits

Author SHA1 Message Date
Norbert Federa
e718fb324b fix race conditions, tests and some invalid return values
Since the current winpr implementation for overlapped operations is
incomplete and buggy, all affected functions will now fail if they are
called with a set FILE_FLAG_OVERLAPPED flag or a non-null pointer to
a OVERLAPPED structure.

winpr/nt:
- use proper one-time initialization on win32
- fix TestNtCreateFile
- fix broken/incomplete _RtlAnsiStringToUnicodeString
- unimplemented functions return appropriate error codes

winpr/pipe:
- improved TestPipeCreateNamedPipe
- rewrite the completely broken TestPipeCreateNamedPipeOverlapped test

rdtk:
- improve test and don't blindly return success

winpr/synch:
- fix race condition in TestSynchTimerQueue

winpr/ssspi:
- fix TestEnumerateSecurityPackages printf output
- fix TestQuerySecurityPackageInfo printf output

winpr/environment:
- fix GetEnvironmentStrings printf output

winpr/comm:
- unimplemented functions return appropriate error codes

winpr/io:
- unimplemented functions return appropriate error codes

winpr/thread:
- implement SwitchToThread() via sched_yield()
2016-06-01 16:26:26 +02:00
Bernhard Miklautz
81d30cc480 Disable comm tests per default
comm tests require a serial device for testing. If the test environment
isn't available the tests will return errors therefore the tests are
now disabled per default. They can be (re-)enabled by using the cmake
option BUILD_COMM_TESTS.
2016-05-02 16:59:25 +02:00
Armin Novak
68c402ac58 Removed windows module.def files.
All symbols exported from libraries are declared
using *_API defines.
2016-02-29 15:18:47 +01:00
Bernhard Miklautz
e6f013eac7 fix spelling
replace occured with occurred
Fixes #3142
2016-02-22 17:01:43 +01:00
MartinHaimberger
d4d360f6a4 Merge pull request #2859 from akallabeth/resource_leak_fix
Fixes API misuse and logic errors
2015-09-15 14:45:42 +02:00
Bernhard Miklautz
204ae5462a winpr/file: refactoring
The used method for initalizing and registering the handle creators
had certain disadvantages like that it was necessary to have the creators
initialized before the first call to CreateFile. In case of comm it
wouldn't have been possible to open an comm port without calling any
other call related function first.
Now the handle creators are initialized the first time CreateFile is
called. This way it is also possible to ensure a certain order of the
handler invocations.

This commit also splits out the client side named pipe code from
the generic file handling (now called generic.c instead of file.c) and
uses the new handle creator infrastructure to register.
2015-09-09 15:48:59 +02:00
Armin Novak
cdf884fd45 Fixed broken structure comparison. 2015-09-01 12:25: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
d18b0fbeb4 Handle API updated. 2015-07-03 09:52:52 +02:00
Norbert Federa
1eff1a345e free can handle NULL perfectly fine 2015-05-11 09:07:39 +02:00
MartinHaimberger
9a4f645f78 Merge pull request #2582 from nfedera/fix-2015-04-28-01
Fix unchecked CreateEvent calls and misc fixes
2015-05-04 10:14:27 +02:00
Baruch Siach
3b7d3190a1 Fix build with newer uclibc versions
uClibc master branch, as well as uclibc-ng add eventfd_{read,write}
definitions. Instead of testing for __UCLIBC__, have cmake explicitly check
for the existence of eventfd_read and save the result in
WITH_EVENTFD_READ_WRITE.

Fixes build errors like:

.../winpr/libwinpr/synch/event.c:120:12: error: static declaration of 'eventfd_read' follows non-static declaration
 static int eventfd_read(int fd, eventfd_t* value)
            ^
In file included from .../winpr/libwinpr/synch/event.c:39:0:
.../usr/include/sys/eventfd.h:37:12: note: previous declaration of 'eventfd_read' was here
 extern int eventfd_read (int __fd, eventfd_t *__value);
            ^
.../winpr/libwinpr/synch/event.c:125:12: error: static declaration of 'eventfd_write' follows non-static declaration
 static int eventfd_write(int fd, eventfd_t value)
            ^
In file included from .../winpr/libwinpr/synch/event.c:39:0:
.../usr/include/sys/eventfd.h:40:12: note: previous declaration of 'eventfd_write' was here
 extern int eventfd_write (int __fd, eventfd_t __value);
2015-04-29 20:31:25 +03: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
Bernhard Miklautz
850de59b55 winpr: add checks for *alloc
Add missing checks if memory allocation was successful. Also adapt
caller(s) when possible.
2015-04-08 11:34:37 +02:00
Bernhard Miklautz
20e2774aa8 comm/tests: set label comm
Set the comm label to all comm related test that they can be excluded
more easily.
2015-04-08 11:34:37 +02:00
Armin Novak
afe8bd2a86 Fixed missing checks for invalid handle. 2015-03-31 15:18:45 +02:00
David FORT
52bd4469d9 Make handle operations static
This patch moves the handle operations in a static struct.
2015-03-16 10:31:26 +01:00
Marc-André Moreau
e6ceb5e13f Merge pull request #2459 from akallabeth/handle_close_cb
Refactored WaitForSingleObject and CloseHandle
2015-03-12 07:35:39 -04:00
Armin Novak
7fb4c9ae14 Using new handle cleanup structure 2015-03-11 17:57:01 +01:00
Emmanuel Ledoux
a8fc5fc68b winpr-comm: fixed a regression about timeouts to block of first bytes when required. Added timeouts values in the DEBUG log. 2015-03-09 20:01:51 +01:00
Emmanuel Ledoux
6f06c2ff3c winpr-comm: fixed timeouts to return immediately with zeroed timeval structures instead of a NULL pointer. 2015-02-03 21:16:29 +01:00
Armin Novak
be3df80c9c Fixed memory leak. 2014-11-16 22:45:09 +01:00
Emmanuel Ledoux
096159054b winpr-comm: ignore errors on TIOCGICOUNT during the port initialization but the permissive mode must be on afterwards. 2014-11-13 19:54:32 +01:00
Emmanuel Ledoux
e9749c6b3f serial: ability to turn on the permissive mode from the command line 2014-09-16 12:08:33 +02:00
Emmanuel Ledoux
275a1b9bc4 winpr-comm: fixed set_baud_rate()/get_baud_rate() functions in comm_serial_sys.c (the issue came from a wrong extrapolation of the COMMPROP's MaxBaud field)
winpr-comm: got rid of SERIAL_BAUD_* values which are identical to BAUD_* ones
2014-09-16 11:21:01 +02:00
Marc-André Moreau
f30d7cf66a Merge pull request #2024 from repzilon/master
uclibc build fixes and recompressed images
2014-08-18 13:08:52 -04:00
Armin Novak
2436e41e63 Fixed warnings for comm tests. 2014-08-11 09:17:56 +02:00
Rene Rheaume
5f9c36da5d * Use futimens that is POSIX-compliant and compatible with uclibc instead of futimes.
* Borrowed eventfd_read and eventfd_write from bionic for uclibc compatibility (uclibc headers are broken unfortunately). Bionic and
FreeRDP are both under the Apache 2.0 license.
2014-08-06 22:06:01 -04:00
Bernhard Miklautz
352dbd52e2 winpr/comm: don't build on apple
Since code is only defined on linux building comm causes /usr/bin/ranlib
to warn about empty objects and the test doesn't build at all on apple.
2014-07-29 05:22:29 +02:00
Bernhard Miklautz
8c318da7b1 fix compiler warnings 2014-07-29 05:22:29 +02:00
Marc-André Moreau
4f4603133e winpr: fix build on Windows with unit tests 2014-07-17 12:02:47 -04:00
Bernhard Miklautz
6a49bcfe40 winpr: always build "monolitic"
winpr is now always build as single library.
The build option MONOLITHIC_BUILD doesn't influence this behavior anymore.

The only exception is winpr-makecert-tool which is still build as extra
library.

This obsoletes complex_libraries for winpr.
2014-07-10 11:10:58 +02:00
Emmanuel Ledoux
80f641c38a winpr-comm, serial: excluded Android platforms as well 2014-07-04 17:40:06 +02:00
Emmanuel Ledoux
7bbeff3427 winpr-comm: made its current implementation verific specific to __linux__ since it was done on top of NTTY. 2014-07-04 16:16:26 +02:00
Emmanuel Ledoux
37dc55d7c2 winpr-comm: fixed QueryCommDevice() when used with some wide characters 2014-07-04 12:24:41 +02:00
Emmanuel Ledoux
94dfce4f52 winpr-comm: made the unit tests to succeed when /dev/ttyS0 is not available 2014-07-03 19:01:45 +02:00
Emmanuel Ledoux
0bd9f1b789 winpr-comm: added _CommDevicesLock to protect accesses to _CommDevices 2014-07-03 11:07:48 +02:00
Emmanuel Ledoux
db1fba3a68 Revert "winpr-handle: removed RegisterHandleCloseCb() which would require a better synchronization"
RegisterHandleCloseCb() is also useful to don't get a circular dependency, a better synchronization must be find out...

This reverts commit 8f3b3fa573.
2014-07-02 16:57:20 +02:00
Emmanuel Ledoux
8f3b3fa573 winpr-handle: removed RegisterHandleCloseCb() which would require a better synchronization
winpr-comm: don't use anymore RegisterHandleCloseCb()
2014-07-02 16:19:28 +02:00
Emmanuel Ledoux
0d54307251 winpr-comm: introduced CommLog_Print(...). Don't use anymore DEBUG_WARN() and DEBUG_MSG() macros 2014-07-02 15:59:16 +02:00
Emmanuel Ledoux
d93c6b1362 serial: don't use wlog API yet
winpr-comm: cleared some #warnings due to wrong printf formats
2014-06-25 17:02:10 +02:00
Emmanuel Ledoux
11ed1f122f winpr-comm: comm_serial_sys, got rid of the latest TMP tags 2014-06-20 16:30:59 +02:00
Emmanuel Ledoux
b2bfc8004c winpr-comm: gathered together all SERIAL_EV_* #defines 2014-06-20 15:56:41 +02:00
Emmanuel Ledoux
f454a5c0c8 winpr-handle: CloseHandle(), added ability to register some callback functions
winpr-comm: implemented CommCloseHandle()
2014-06-19 19:07:45 +02:00
Emmanuel Ledoux
d38a323526 winpr-comm, winpr-file: better initialization of the static variables 2014-06-19 12:03:36 +02:00
Emmanuel Ledoux
e6c82f99d5 serial: ability to setup the server serial driver thanks to a third parameter on the command line 2014-06-18 18:20:21 +02:00
Emmanuel Ledoux
62298fcd95 winpr-comm: renamed REMOTE_SERIAL_DRIVER by SERIAL_DRIVER or ServerSerialDriver according the context 2014-06-18 15:58:08 +02:00
Emmanuel Ledoux
62d893b2bd winpr-comm: implemented IOCTL_SERIAL_RESET_DEVICE 2014-06-17 17:49:06 +02:00
Emmanuel Ledoux
9fc0e6eccc winpr-comm: CommReadFile and CommWriteFile are now protected by a mutex
winpr-comm: implemented IOCTL_SERIAL_IMMEDIATE_CHAR
2014-06-17 16:34:20 +02:00
Emmanuel Ledoux
34c3654faf winpr-comm: implemented IOCTL_SERIAL_CONFIG_SIZE 2014-06-17 15:19:16 +02:00