Commit Graph

30 Commits

Author SHA1 Message Date
Povilas Kanapickas af90f39b4a lib/net: Limit the maximum size of TCP or SSL input buffers
This commit is the 2/3 part of the fix for the following security
vulnerability:
 - CVE-2021-42076 DoS via excess length messages

The issue has been reported by Matthias Gerstner <mgerstner@suse.de>.
2021-11-01 05:18:52 +02:00
Peter Hutterer 0dbedd31dc Remove trailing whitespaces
Many tools strip trailing whitespaces by default, so after editing a file with
whitespace errors we end up with a bunch of unrelated hunks that need to be
reverted locally.

This could be fixed by configuring each tool to not do this (at least for the
barrier repo), or, simpler, we just sed the problem away and make barrier
whitespace-compliant.

sed commands run:
    sed -i 's/[ \t]\+$//' **/*.(cpp|h) **/*CMakeLists.txt

Verified with git diff --ignore-space-change, this shows the empty diff.
2020-12-09 14:02:28 +10:00
Vasily Galkin c79120c049 Fix infinite loop on fast TCP disconnection
The commit a841b28 changed the condition for removing job from processing.
New flag MultiplexerJobStatus::continue_servicing become used
instead of checking pointer for NULL.
However for cases when TCPSocket::newJob() returns nullptr
the behaviour changed: earlier the job was removed, but after change
it is called again, since MultiplexerJobStatus equal to {true, nullptr}
means "run this job again".

This leads to problem with eating CPU and RAM on linux
https://github.com/debauchee/barrier/issues/470

There is similar windows problem, but not sure it is related.
https://github.com/debauchee/barrier/issues/552

Since it looks that the goal of a841b28 was only clarifying
object ownership and not changing job deletion behaviour,
this commit tries to get original behaviour and fix the bugs above
by returning {false, nullptr} instead of {true, nullptr}
when TCPSocket::newJob() returns nullptr.
2020-02-09 23:27:26 +03:00
Povilas Kanapickas a841b2858f Make ownership of SocketMultiplexerJob explicit 2019-08-17 16:17:50 +03:00
jwestfall 94f8336af5 Properly deal with a socket that is readable and writable at the same time
Its possible poll() will return that a socket is both readable and
writable.  When this happens TCPSocket::serviceConnected() is
overwriting the result from doWrite() with the result from doRead()

This can cause a situation where doWrite() tried to notify that we
should stop polling if the socket is writable, but the doRead() result
causes that to be ignored.  This results in a tight loop and 100% cpu
usage in SocketMultiplexer::serviceThread() as the poll() call
instantly returns that the socket is writable, but no one cares that
it is.  The issue eventually corrects itself with enough mouse
movement/clicks.
2018-12-28 14:03:42 -08:00
walker0643 24987e0694 merge modified patch from synergy PR https://github.com/symless/synergy-core/pull/6178 2018-03-06 13:55:27 -05:00
walker0643 eb025871c4 add CLOG_DEBUG for opening/closing TCPSocket objects and fix assert() crash 2018-02-01 11:18:13 -05:00
walker0643 b77eec1f17 fix some compiler warnings 2018-01-31 10:03:34 -05:00
walker0643 f12bfdfedc rebranding symless/synergy to debauchee/barrier 2018-01-27 16:48:17 -05:00
Andrew Nelless c556184114 #6037 Remove pointless cast in TCPSocket 2017-05-12 19:50:38 +01:00
XinyuHou deea23f866 Apply tab to spaces filter to src folder 2017-02-07 01:24:59 +00:00
Andrew Nelless f3d1470e58 Brutally replace all reinterpret_casts with static_casts 2016-10-05 12:46:16 +01:00
Jerry (Xinyu Hou) 08a73218e6 Refactored secure read and write into SecureSocket 2016-09-26 11:58:33 +01:00
Jerry (Xinyu Hou) 61b489ab3d Refactor write and read into functions 2016-09-26 11:58:33 +01:00
Jerry (Xinyu Hou) 95464d97cf Conflicts:
src/lib/client/Client.cpp
	src/lib/net/TCPSocketFactory.cpp
2016-09-26 11:58:33 +01:00
Andrew Nelless c3c0913633 Update company copyright notice 2016-09-26 11:58:33 +01:00
Jerry (Xinyu Hou) 667b6f13c7 Enforced secure socket rewrite on the same buffer address #4712 2015-06-12 18:03:28 -07:00
Jerry (Xinyu Hou) 3e32d9fbee Improved secure socket intensive try operations #4796 2015-06-12 16:53:41 -07:00
Jerry (Xinyu Hou) bbf53bb9b8 Return the same job on retry #4584 2015-06-05 15:21:26 -07:00
Adam Potolsky 35e09c46b9 Changed secureSocket routines to return a status, and modify an argument for num of bytes handled #4697 2015-05-22 16:09:59 -07:00
Adam Potolsky 5b3fa48902 Made socket self-aware of when it is in a fatal state #4697
Added code to cleanly terminate connection on fatal socket state #4697
2015-05-22 10:56:13 -07:00
Nigel Armstrong d71304ee55 Modified header of every file COPYING to LICENSE
Modified to match the updated name of the license file
2015-05-06 22:12:44 -04:00
XinyuHou 586a893201 Made retry secure write/read use the exactly last parameters #4539 2015-04-17 14:01:35 +01:00
XinyuHou 10cddb97a8 fixed misused read and write #4313 2015-01-26 13:23:11 +00:00
XinyuHou f973d1498d dropped prefix C 2015-01-12 10:33:29 +00:00
Nick Bolton 41d6080028 changed company name in copyright notice 2014-11-11 13:52:03 +00:00
Nick Bolton e8e156f0e2 dropped "c" prefix from class names 2014-11-11 13:51:47 +00:00
Nick Bolton abe108195d Task #3953 - Inherit XArch and XBase from std::exception 2014-03-14 18:30:21 +00:00
Nick Bolton 4675f29a4c code style fixes:
- reordered includes to prevent accidental dependencies.
- moved arch specific files into their own folder (easier to include with cmake).
- renamed non-class files to reflect new code style (lower case with underscores).
- using full relative paths for includes (easier for understanding dependencies).
- using #pragma once instead of classic-style header guards.
2014-02-28 12:36:45 +00:00
Nick Bolton 8e74710dad code style: dropped C prefix 2014-02-27 17:45:17 +00:00
Renamed from src/lib/net/CTCPSocket.cpp (Browse further)