| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
| |
As gettext needs some stuff from Carbon and we don't want to rely on it
being pulled in as a side effect.
|
| |
|
|\ |
|
| |
| |
| |
| |
| |
| |
| |
| | |
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.
|
|/
|
|
|
|
| |
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.
|
|
|
|
|
| |
This was not necessary since you could use ESC key or simply just
clicking outside of the context menu to close the menu.
|
|
|
|
|
| |
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.
|
|
|
|
|
|
| |
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.
|
|
|
|
|
|
| |
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.
|
|
|
|
| |
new throws an exception on allocation errors rather than return NULL.
|
|
|
|
|
| |
This check is completely backwards and it is currently unknown how
this ever worked.
|
| |
|
| |
|
|
|
|
|
|
|
|
| |
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.
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
| |
Commit 4e61f8dbc51f83b1d71319b763fbd4d916d13e98 fixed the GUI but forgot
to change the other places in the code.
|
|
|
|
|
|
| |
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.
|
|
|
|
| |
The GUI incorrectly noted the max level to be 6 while it in fact is 9.
|
|
|
|
| |
Even if this note is true it just adds confusion.
|
|
|
|
|
|
| |
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.
|
|\ |
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
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.
|
| | |
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
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.
|
| |
| |
| |
| |
| |
| |
| |
| | |
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.
|
| | |
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
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.
|
| | |
|
| | |
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
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.
|
| |
| |
| |
| |
| |
| | |
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.
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
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.
|
| |
| |
| |
| |
| |
| | |
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.
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
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
|
| | |
|
| |
| |
| |
| |
| |
| | |
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.
|
| |
| |
| |
| |
| |
| | |
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.
|
| |
| |
| |
| |
| | |
The copied rects have already been merged in to the changed rects
at this point if the client doesn't support the CopyRect encoding.
|
| |
| |
| |
| |
| |
| | |
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 &.
|
| |
| |
| |
| |
| | |
Hogweed needs nettle, not the other way around. So make sure they
are specified in the correct order for the static link to succeed.
|
| | |
|
| | |
|
| | |
|
| | |
|