]> source.dussan.org Git - tigervnc.git/log
tigervnc.git
4 years agoFlush data on close
Pierre Ossman [Mon, 18 May 2020 17:40:49 +0000 (19:40 +0200)]
Flush data on close

There might be some final handshake data that is still stuck in the
buffers, so make a best effort attempt at getting it to the client.

4 years agoFix connection close log
Pierre Ossman [Fri, 23 Nov 2018 17:03:31 +0000 (18:03 +0100)]
Fix connection close log

The socket is closed at this point so we have to rely on a cached
value for the logging.

4 years agoMove auth failure delay to SConnection
Pierre Ossman [Mon, 18 May 2020 16:57:26 +0000 (18:57 +0200)]
Move auth failure delay to SConnection

It's a generic feature that is better handled as part of SConnection's
state machine.

4 years agoSupport calling methods from timers
Pierre Ossman [Mon, 18 May 2020 16:53:43 +0000 (18:53 +0200)]
Support calling methods from timers

We can't safely use the normal timers in base classes as we cannot
guarantee that subclasses will call the base class' handleTimeout()
properly if the subclass overrides it.

4 years agoUpdate French translation
Stéphane Aulery [Thu, 7 May 2020 16:11:00 +0000 (18:11 +0200)]
Update French translation

4 years ago[SELinux] Allow vnc_session_t type execute itself 1012/head
Lukas Vrabec [Wed, 6 May 2020 08:55:29 +0000 (10:55 +0200)]
[SELinux] Allow vnc_session_t type execute itself

vncsession-start is running in SELinux vnc_session_t domain because of
"SELinuxContext=system_u:system_r:vnc_session_t:s0" option in systemd
vncserver@.service unit file. vncsession-start executing binary
vncsession with SELinux label/type vnc_session_t. This access was not
allowed in vncsession policy.

4 years agoHandle empty changes for every operation
Pierre Ossman [Mon, 20 Apr 2020 06:55:13 +0000 (08:55 +0200)]
Handle empty changes for every operation

It seems like many of the X11 operations can end up with no pixels
actually changing. So instead of discovering and adding workarounds for
each individually we'll just check very region added if it's empty.

4 years agoUpdate Serbian translation
Мирослав Николић [Thu, 2 Apr 2020 17:21:00 +0000 (19:21 +0200)]
Update Serbian translation

4 years agoUpdate Ubuntu patches for current code
Pierre Ossman [Thu, 2 Apr 2020 10:50:37 +0000 (12:50 +0200)]
Update Ubuntu patches for current code

4 years agoUpdate apt cache before running builds
Pierre Ossman [Thu, 2 Apr 2020 10:49:54 +0000 (12:49 +0200)]
Update apt cache before running builds

Otherwise it might fail if the repositories have changed since the image
was generated.

4 years agoRemove legacy Xorg code
Pierre Ossman [Thu, 2 Apr 2020 09:18:00 +0000 (11:18 +0200)]
Remove legacy Xorg code

We now require at least 1.16, so remove all code that handled older
versions than that.

4 years agoRemove 8-bit support from documentation
Pierre Ossman [Thu, 2 Apr 2020 09:04:07 +0000 (11:04 +0200)]
Remove 8-bit support from documentation

We removed support in the code ages ago, but overlooked this part of the
documentation. Also remove some dead code in Xvnc on the same theme.

4 years agoMerge branch 'systemd' of https://github.com/CendioOssman/tigervnc
Pierre Ossman [Thu, 2 Apr 2020 08:56:51 +0000 (10:56 +0200)]
Merge branch 'systemd' of https://github.com/CendioOssman/tigervnc

4 years agoDo maximize more properly on macOS
Pierre Ossman [Thu, 26 Mar 2020 08:39:36 +0000 (09:39 +0100)]
Do maximize more properly on macOS

4 years agoDon't resize viewer window when maximized
Pierre Ossman [Tue, 17 Mar 2020 12:54:16 +0000 (13:54 +0100)]
Don't resize viewer window when maximized

Most window managers won't like this, and it tends to provoke bugs in
FLTK, so let's avoid it. It's probably not what the user wants anyway.

4 years agoInclude error code in getaddrinfo() exceptions
Pierre Ossman [Thu, 26 Mar 2020 07:50:17 +0000 (08:50 +0100)]
Include error code in getaddrinfo() exceptions

4 years agoAvoid using insecure variable length arrays
Pierre Ossman [Thu, 26 Mar 2020 07:50:04 +0000 (08:50 +0100)]
Avoid using insecure variable length arrays

4 years agoMerge branch 'unicode_translation' of https://github.com/CendioAlex/tigervnc
Pierre Ossman [Tue, 17 Mar 2020 15:15:39 +0000 (16:15 +0100)]
Merge branch 'unicode_translation' of https://github.com/CendioAlex/tigervnc

4 years agoThrow GAIException() for getaddrinfo errors 973/head
Alex Tanskanen [Tue, 10 Mar 2020 12:33:01 +0000 (13:33 +0100)]
Throw GAIException() for getaddrinfo errors

Created a new subclass of Exception called GAIException() that will
handle error messages from getaddrinfo() instead of letting Exception()
handle it. GAIException() will make use of gai_strerror() to map the
error code to text. On Windows, gai_strerrorW() must be used if the text
is encoded with UTF-8.

4 years agoFix typo in SocketException message
Alex Tanskanen [Thu, 5 Mar 2020 08:35:35 +0000 (09:35 +0100)]
Fix typo in SocketException message

4 years agoMake system error messeges in Windows 10 use UTF-8
Alex Tanskanen [Wed, 4 Mar 2020 09:27:02 +0000 (10:27 +0100)]
Make system error messeges in Windows 10 use UTF-8

The previous error messages did not support Unicode characters. This
commit will use UTF-8 encoding to be able to display error messages in
every language.

4 years agoRemove support for old Xorg versions 838/head
Pierre Ossman [Sat, 1 Feb 2020 10:28:08 +0000 (11:28 +0100)]
Remove support for old Xorg versions

No current distribution ship anything this ancient anyway.

4 years agoUse standard install dir variable names
Pierre Ossman [Fri, 1 Feb 2019 12:24:20 +0000 (13:24 +0100)]
Use standard install dir variable names

This makes our builds directly compatible with most distributions
without packagers/users having to specify extra flags.

4 years agoAdd SELinux policy file for vncsession
Pierre Ossman [Thu, 19 Jul 2018 14:04:23 +0000 (16:04 +0200)]
Add SELinux policy file for vncsession

Running as a service on a SELinux system requires rules so we can
transition to our own context. We also need the proper permissions
to start new user sessions.

4 years agoStart sessions via PAM
Pierre Ossman [Mon, 16 Jul 2018 13:58:06 +0000 (15:58 +0200)]
Start sessions via PAM

This sets up a more correct session as there are key tasks that
need to be performed by PAM. E.g. systemd will allocate cgroups
and start base services.

In order to easily handle this as a system service the mapping of
displays is now done via a configuration file.

4 years agoFix C linking when doing static builds
Pierre Ossman [Mon, 16 Jul 2018 13:57:40 +0000 (15:57 +0200)]
Fix C linking when doing static builds

4 years agoMake PAM mandatory
Pierre Ossman [Wed, 11 Jul 2018 13:49:46 +0000 (15:49 +0200)]
Make PAM mandatory

It is present on all UNIX systems anyway, so let's simplify things.
We will need it for more proper session startup anyway.

4 years agoStop searching for Xvnc
Pierre Ossman [Wed, 11 Mar 2020 15:48:25 +0000 (16:48 +0100)]
Stop searching for Xvnc

Assume we are part of a complete and proper installation and encode the
full expected path in to the vncserver script.

4 years agoStart the sessions using xinit
Pierre Ossman [Tue, 31 Jul 2018 14:06:17 +0000 (16:06 +0200)]
Start the sessions using xinit

It keeps much better track of the X server and startup files than
we can do.

4 years agoMake vncserver always run in the foreground
Pierre Ossman [Wed, 23 Jan 2019 14:29:41 +0000 (15:29 +0100)]
Make vncserver always run in the foreground

We need to be started as a system service for things to work correctly
anyway, so delegate the work of starting and stopping things to the
system service manager (e.g. systemd).

4 years agoStart sessions using session desktop file
Pierre Ossman [Fri, 27 Jul 2018 19:39:01 +0000 (21:39 +0200)]
Start sessions using session desktop file

This is how display managers (e.g. gdm or lightdm) start sessions
and is necessary to get the proper set of environment variables.

4 years agoDon't create a default user config
Pierre Ossman [Fri, 11 Jan 2019 16:08:41 +0000 (17:08 +0100)]
Don't create a default user config

We don't want to create files in the users home directory unless we
have to. Users can read about how this file works in our man pages.

4 years agoDon't accept arbitrary arguments to vncserver
Pierre Ossman [Wed, 23 Jan 2019 13:31:26 +0000 (14:31 +0100)]
Don't accept arbitrary arguments to vncserver

We now have config files for more fine grained control of these
things, so avoid duplicating the functionality.

4 years agoStop unsetting environment variables
Pierre Ossman [Fri, 27 Jul 2018 12:40:17 +0000 (14:40 +0200)]
Stop unsetting environment variables

These might contain values we want if we are start from a proper
environment.

4 years agoAlways install systemd services
Pierre Ossman [Fri, 22 Dec 2017 09:35:29 +0000 (10:35 +0100)]
Always install systemd services

It is the most common init system these days so it should not be
hidden in the contrib/ directory.

This also removes all old SysV files from the contrib packages.

4 years agoAdd default configuration files
Pierre Ossman [Wed, 23 Jan 2019 13:09:35 +0000 (14:09 +0100)]
Add default configuration files

Install some example files to make things more easily discoverable.

4 years agoRemove old distribution packaging
Pierre Ossman [Sat, 1 Feb 2020 10:12:27 +0000 (11:12 +0100)]
Remove old distribution packaging

These are EOL (or soon to be) and we want to start relying on things
present in current distributions.

4 years agoMerge branch 'xorg-server-1.20.7' of https://github.com/lheckemann/tigervnc
Pierre Ossman [Thu, 27 Feb 2020 12:50:38 +0000 (13:50 +0100)]
Merge branch 'xorg-server-1.20.7' of https://github.com/lheckemann/tigervnc

4 years agoFix error check for zlib calls
Pierre Ossman [Thu, 27 Feb 2020 12:35:41 +0000 (13:35 +0100)]
Fix error check for zlib calls

There are multiple "okay" return values, not just Z_OK. Make sure we
don't bail out needlessly.

4 years agoFix framebuffer setup in encperf
Pierre Ossman [Thu, 27 Feb 2020 11:43:47 +0000 (12:43 +0100)]
Fix framebuffer setup in encperf

We adapted to the wrong new callback in a previous commit.

4 years agoProvide dummy output for dummy client connections
Pierre Ossman [Thu, 27 Feb 2020 11:43:05 +0000 (12:43 +0100)]
Provide dummy output for dummy client connections

The CConnection base class wants to be able to write things these days,
so we need to provide it a place to do so.

4 years agoMerge pull request #958 from sequencer/env_userpass
Samuel Mannehed [Fri, 14 Feb 2020 12:28:06 +0000 (13:28 +0100)]
Merge pull request #958 from sequencer/env_userpass

Read username and passwrod from env.

4 years agobug fix for user is NULL 958/head
Jiuyang liu [Mon, 10 Feb 2020 20:50:00 +0000 (20:50 +0000)]
bug fix for user is NULL

4 years agoadd man
Jiuyang liu [Mon, 10 Feb 2020 20:46:10 +0000 (20:46 +0000)]
add man

4 years agoimplement username/password from env.
Jiuyang liu [Thu, 6 Feb 2020 14:48:25 +0000 (14:48 +0000)]
implement username/password from env.

4 years agoxserver: add no-op input thread init function 951/head
Linus Heckemann [Sat, 1 Feb 2020 10:08:26 +0000 (11:08 +0100)]
xserver: add no-op input thread init function

This allows Xvnc to build with xorg-server 1.20.7, which requires OS
layers to implement a ddxInputThreadInit function when configured with
--enable-input-thread (the default).

relevant xorg-server commit: e3f26605d85d987da434640f52646d728f1fe919

4 years agoInclude Carbon when statically linking gettext on macOS
Pierre Ossman [Thu, 30 Jan 2020 13:23:24 +0000 (14:23 +0100)]
Include Carbon when statically linking gettext on macOS

As gettext needs some stuff from Carbon and we don't want to rely on it
being pulled in as a side effect.

4 years agoUpdate copyright year to 2020
Pierre Ossman [Thu, 16 Jan 2020 13:26:48 +0000 (14:26 +0100)]
Update copyright year to 2020

4 years agoMerge branch 'emulateMB' of https://github.com/CendioAlex/tigervnc
Pierre Ossman [Thu, 16 Jan 2020 13:18:50 +0000 (14:18 +0100)]
Merge branch 'emulateMB' of https://github.com/CendioAlex/tigervnc

4 years agoUse sys/time.h on Windows as well
Pierre Ossman [Thu, 16 Jan 2020 13:18:08 +0000 (14:18 +0100)]
Use sys/time.h on Windows as well

Modern MinGW seems to provide this, so simplify things a bit. This also
side steps some of the issue of the windows.h/winsock2.h include
ordering.

4 years agoAdd emulated middle mouse button 942/head
Alex Tanskanen [Mon, 13 Jan 2020 14:23:20 +0000 (15:23 +0100)]
Add emulated middle mouse button

Not every mouse has three buttons e.g. laptops. Some OS might not
have support for middle mouse button emulation.

This commit adds emulation for middle mouse button when pressing both
left and right mouse button simultaneously.

4 years agoRemove "Dismiss menu" from context menu 938/head
Alex Tanskanen [Thu, 9 Jan 2020 15:17:06 +0000 (16:17 +0100)]
Remove "Dismiss menu" from context menu

This was not necessary since you could use ESC key or simply just
clicking outside of the context menu to close the menu.

4 years agoAllow XK_Scroll_Lock when LED state isn't supported
Pierre Ossman [Fri, 3 Jan 2020 12:46:54 +0000 (13:46 +0100)]
Allow XK_Scroll_Lock when LED state isn't supported

Otherwise such clients cannot use Scroll Lock at all, and that is
probably worse than any effects we might get from getting out of sync.

4 years agoClean up initialization of DIBSectionBuffer
Pierre Ossman [Fri, 3 Jan 2020 12:10:20 +0000 (13:10 +0100)]
Clean up initialization of DIBSectionBuffer

We had an unintentional conflict with PixelBuffer::setSize() here.
But we can simplify this further as this initialization is only used
by the subclass DeviceFrameBuffer, and only once.

4 years agoProvide correct dimensions for XShm setup
Pierre Ossman [Mon, 30 Dec 2019 09:50:52 +0000 (10:50 +0100)]
Provide correct dimensions for XShm setup

Since 53f913a we initialize the underlying PixelBuffer with 0x0
dimensions, which means we need to keep more explicit track of what
we are trying to allocate in the setup methods.

4 years agoRemove unneeded memory checks
Pierre Ossman [Mon, 30 Dec 2019 09:26:12 +0000 (10:26 +0100)]
Remove unneeded memory checks

new throws an exception on allocation errors rather than return NULL.

4 years agoFix saving of bad server certificates
Pierre Ossman [Mon, 30 Dec 2019 09:24:11 +0000 (10:24 +0100)]
Fix saving of bad server certificates

This check is completely backwards and it is currently unknown how
this ever worked.

4 years agoel6 build improvements. dependency updates, link order fixes
Brian P. Hinz [Sat, 28 Dec 2019 21:18:35 +0000 (16:18 -0500)]
el6 build improvements. dependency updates, link order fixes

4 years agoUpdate Esperanto translation
Felipe Castro [Wed, 25 Dec 2019 15:34:00 +0000 (12:34 -0300)]
Update Esperanto translation

4 years agoSet initial blank cursor
Pierre Ossman [Mon, 23 Dec 2019 15:26:40 +0000 (16:26 +0100)]
Set initial blank cursor

If the server doesn't support local cursors and want to render them
itself then we need to make sure the local cursor is invisible.

This also makes sure we always have some cursor allocated, so we can
remove the checks in some places.

4 years agoUpdate source URLs in el6 spec file
Brian P. Hinz [Sun, 22 Dec 2019 19:17:16 +0000 (14:17 -0500)]
Update source URLs in el6 spec file

4 years agoRemove hard coded source URLs from travis-ci build script
Brian P. Hinz [Sun, 22 Dec 2019 19:02:47 +0000 (14:02 -0500)]
Remove hard coded source URLs from travis-ci build script

4 years agoAllow non-interactive installs for bionic (travis-ci)
Brian P. Hinz [Sat, 21 Dec 2019 23:15:19 +0000 (18:15 -0500)]
Allow non-interactive installs for bionic (travis-ci)

4 years agoAdd ubuntu-bionic to travis-ci builds
Brian P. Hinz [Sat, 21 Dec 2019 22:59:08 +0000 (17:59 -0500)]
Add ubuntu-bionic to travis-ci builds

4 years agoMake sure travis-ci builds java viewer with latest openjdk 8
Brian P. Hinz [Sat, 21 Dec 2019 22:48:28 +0000 (17:48 -0500)]
Make sure travis-ci builds java viewer with latest openjdk 8

4 years agoMostly stylistic changes to java viewer to match recent changes to native viewer
Brian P. Hinz [Sat, 21 Dec 2019 21:51:33 +0000 (16:51 -0500)]
Mostly stylistic changes to java viewer to match recent changes to native viewer

4 years agoFix travis-ci build scripts broken by c59f195
Brian P. Hinz [Sat, 21 Dec 2019 17:04:32 +0000 (12:04 -0500)]
Fix travis-ci build scripts broken by c59f195

4 years agoFix maximum compress lvl in parameter list
Samuel Mannehed [Fri, 20 Dec 2019 15:13:17 +0000 (16:13 +0100)]
Fix maximum compress lvl in parameter list

Commit 4e61f8dbc51f83b1d71319b763fbd4d916d13e98 fixed the GUI but forgot
to change the other places in the code.

4 years agoUse the correct minimum value for compression lvl
Samuel Mannehed [Fri, 20 Dec 2019 15:06:48 +0000 (16:06 +0100)]
Use the correct minimum value for compression lvl

There was even some confusion in the RFB protocol regarding this, but
the zlib implementation confirms that accepted values for compression
level is 0-9.

4 years agoUse the correct maximum value for compression lvl
Samuel Mannehed [Fri, 20 Dec 2019 14:25:53 +0000 (15:25 +0100)]
Use the correct maximum value for compression lvl

The GUI incorrectly noted the max level to be 6 while it in fact is 9.

4 years agoRemove confusing note about compression level
Samuel Mannehed [Fri, 20 Dec 2019 14:24:23 +0000 (15:24 +0100)]
Remove confusing note about compression level

Even if this note is true it just adds confusion.

4 years agoSimplify color level descriptions
Samuel Mannehed [Fri, 20 Dec 2019 13:47:04 +0000 (14:47 +0100)]
Simplify color level descriptions

The number of colors used isn't something the end-users should have to
concern themselves with. I intentionally left the information in the
man-pages.

4 years agoMerge branch 'secfix' of https://github.com/CendioOssman/tigervnc
Pierre Ossman [Fri, 20 Dec 2019 06:39:06 +0000 (07:39 +0100)]
Merge branch 'secfix' of https://github.com/CendioOssman/tigervnc

4 years agoRemove support for ubuntu trusty since it's been EoL for 6 months
Brian P. Hinz [Mon, 16 Dec 2019 00:39:03 +0000 (19:39 -0500)]
Remove support for ubuntu trusty since it's been EoL for 6 months

4 years agoCheck the correct stream if there is more data pending
Pierre Ossman [Mon, 9 Dec 2019 15:58:07 +0000 (16:58 +0100)]
Check the correct stream if there is more data pending

The input stream might no longer be the raw socket, so we need to
query what's currently active. That wrapping stream might have its
own buffering and may have more data even if the socket is drained.

4 years agoHandle pending data in TLS buffers
Pierre Ossman [Mon, 9 Dec 2019 15:57:04 +0000 (16:57 +0100)]
Handle pending data in TLS buffers

There might be more bytes left in the current TLS record, even if
there is nothing on the underlying stream. Make sure we properly
return this when we aren't being requested to block.

4 years agoCorrectly calculate rects with no CopyRect support
Pierre Ossman [Mon, 9 Dec 2019 14:24:15 +0000 (15:24 +0100)]
Correctly calculate rects with no CopyRect support

The copied rects have already been merged in to the changed rects
at this point if the client doesn't support the CopyRect encoding.

4 years agoDon't background the main session command
Pierre Ossman [Mon, 9 Dec 2019 12:54:17 +0000 (13:54 +0100)]
Don't background the main session command

When used with -fg we expect the startup script to remain running until
the session is over. This will not happen if the session command is put
in the background using &.

4 years agoFix link order of nettle and hogweed
Pierre Ossman [Mon, 9 Dec 2019 12:33:48 +0000 (13:33 +0100)]
Fix link order of nettle and hogweed

Hogweed needs nettle, not the other way around. So make sure they
are specified in the correct order for the static link to succeed.

4 years agoUpdate Hungarian translation
Balázs Úr [Sat, 23 Nov 2019 22:25:00 +0000 (23:25 +0100)]
Update Hungarian translation

4 years agoAdd Korean translation
JiYoon Kwon [Sat, 23 Nov 2019 03:41:00 +0000 (12:41 +0900)]
Add Korean translation

4 years agoUse openjdk-8 to build java viewer for bionic
Brian P. Hinz [Sun, 1 Dec 2019 01:51:39 +0000 (20:51 -0500)]
Use openjdk-8 to build java viewer for bionic

4 years agoUpdate build deps for Ubuntu Bionic packages
Brian P. Hinz [Sat, 30 Nov 2019 20:30:26 +0000 (15:30 -0500)]
Update build deps for Ubuntu Bionic packages

4 years agoAdd support for VMwareCursor pseudo encoding to Java client
Brian P. Hinz [Thu, 28 Nov 2019 19:22:33 +0000 (14:22 -0500)]
Add support for VMwareCursor pseudo encoding to Java client

5 years agoRemove old Java applet support
Brian P. Hinz [Fri, 22 Nov 2019 03:35:40 +0000 (22:35 -0500)]
Remove old Java applet support

5 years agoRFB refactoring to sync with native client
Brian P. Hinz [Fri, 22 Nov 2019 01:00:49 +0000 (20:00 -0500)]
RFB refactoring to sync with native client

5 years agoInvalidate duplicate screens
Brian P. Hinz [Sat, 16 Nov 2019 20:07:34 +0000 (15:07 -0500)]
Invalidate duplicate screens

5 years agoHandle pixel formats with odd shift values 921/head
Pierre Ossman [Wed, 2 Oct 2019 14:06:08 +0000 (16:06 +0200)]
Handle pixel formats with odd shift values

Our fast paths assume that each channel fits in to a separate byte.
That means the shift needs to be a multiple of 8. Start actually
checking this so that a client cannot trip us up and possibly cause
incorrect code exection.

Issue found by Pavel Cheremushkin from Kaspersky Lab.

5 years agoAdd unit tests for PixelFormat.is888() detection
Pierre Ossman [Wed, 2 Oct 2019 14:05:34 +0000 (16:05 +0200)]
Add unit tests for PixelFormat.is888() detection

5 years agoBe defensive about overflows in stream objects
Pierre Ossman [Tue, 24 Sep 2019 07:41:07 +0000 (09:41 +0200)]
Be defensive about overflows in stream objects

We use a lot of lengths given to us over the network, so be more
paranoid about them causing an overflow as otherwise an attacker
might trick us in to overwriting other memory.

This primarily affects the client which often gets lengths from the
server, but there are also some scenarios where the server might
theoretically be vulnerable.

Issue found by Pavel Cheremushkin from Kaspersky Lab.

5 years agoUse size_t for lengths in stream objects
Pierre Ossman [Mon, 23 Sep 2019 09:00:17 +0000 (11:00 +0200)]
Use size_t for lengths in stream objects

Provides safety against them accidentally becoming negative because
of bugs in the calculations.

Also does the same to CharArray and friends as they were strongly
connection to the stream objects.

5 years agoRemove unused FixedMemOutStream
Pierre Ossman [Mon, 23 Sep 2019 08:09:31 +0000 (10:09 +0200)]
Remove unused FixedMemOutStream

5 years agoAdd sanity checks for PixelFormat shift values
Pierre Ossman [Tue, 10 Sep 2019 14:07:50 +0000 (16:07 +0200)]
Add sanity checks for PixelFormat shift values

Otherwise we might be tricked in to reading and writing things at
incorrect offsets for pixels which ultimately could result in an
attacker writing things to the stack or heap and executing things
they shouldn't.

This only affects the server as the client never uses the pixel
format suggested by th server.

Issue found by Pavel Cheremushkin from Kaspersky Lab.

5 years agoFix depth sanity test in PixelFormat
Pierre Ossman [Tue, 10 Sep 2019 14:01:44 +0000 (16:01 +0200)]
Fix depth sanity test in PixelFormat

5 years agoAdd unit test for PixelFormat sanity checks
Pierre Ossman [Tue, 10 Sep 2019 13:59:51 +0000 (15:59 +0200)]
Add unit test for PixelFormat sanity checks

5 years agoHandle empty Tight gradient rects
Pierre Ossman [Tue, 10 Sep 2019 13:36:42 +0000 (15:36 +0200)]
Handle empty Tight gradient rects

We always assumed there would be one pixel per row so a rect with
a zero width would result in us writing to unknown memory.

This could theoretically be used by a malicious server to inject
code in to the viewer process.

Issue found by Pavel Cheremushkin from Kaspersky Lab.

5 years agoAdd write protection to OffsetPixelBuffer
Pierre Ossman [Tue, 10 Sep 2019 13:25:30 +0000 (15:25 +0200)]
Add write protection to OffsetPixelBuffer

No one should every try to write to this buffer. Enforce that by
throwing an exception if any one tries to get a writeable pointer
to the data.

5 years agoRestrict PixelBuffer dimensions to safe values
Pierre Ossman [Tue, 10 Sep 2019 13:21:03 +0000 (15:21 +0200)]
Restrict PixelBuffer dimensions to safe values

We do a lot of calculations based on pixel coordinates and we need
to make sure they do not overflow. Restrict the maximum dimensions
we support rather than try to switch over all calculations to use
64 bit integers.

This prevents attackers from from injecting code by specifying a
huge framebuffer size and relying on the values overflowing to
access invalid areas of the heap.

This primarily affects the client which gets both the screen
dimensions and the pixel contents from the remote side. But the
server might also be affected as a client can adjust the screen
dimensions, as can applications inside the session.

Issue found by Pavel Cheremushkin from Kaspersky Lab.

5 years agoEncapsulate PixelBuffer internal details
Pierre Ossman [Tue, 10 Sep 2019 13:18:30 +0000 (15:18 +0200)]
Encapsulate PixelBuffer internal details

Don't allow subclasses to just override dimensions or buffer details
directly and instead force them to go via methods. This allows us
to do sanity checks on the new values and catch bugs and attacks.

5 years agoMake ZlibInStream more robust against failures
Pierre Ossman [Tue, 10 Sep 2019 09:05:48 +0000 (11:05 +0200)]
Make ZlibInStream more robust against failures

Move the checks around to avoid missing cases where we might access
memory that is no longer valid. Also avoid touching the underlying
stream implicitly (e.g. via the destructor) as it might also no
longer be valid.

A malicious server could theoretically use this for remote code
execution in the client.

Issue found by Pavel Cheremushkin from Kaspersky Lab