Go to file
Gilmar Santos Jr 15b1e2a3bb red-stream: WebDAV doesn't work when SASL is active
When SASL is active, if a read request is made and SASL buffer contains some
data (but not enough to fulfill the request), upon return the taken data from
the buffer is not accounted for and hence part of the message gets discarded.

red_stream_sasl_read function takes available data from sasl buffer and returns
if it's enough. If it's not, nbyte is decremented and buf pointer is
incremented to account for the taken data (if any). Then it tries to get more
data from the socket and decode it.

Suppose there was some data in the sasl buffer, but not enough. Then the socket
is not readable (EAGAIN, EINTR, whatever) or the new data isn't enough for
sasl_decode (hence decodedlen == 0). In both cases the function returns as if
no data was read, but it took some data from sasl buffer. This data is lost and
from this point on the communication ceases on the channel (eventually new data
is read, but messages are corrupt without the parts previously discarded).

On the other hand, if some data is read from sasl buffer and everything else
works fine, the output buffer contains all the data, but the count returned
only inform the caller about the newly read data (which causes the similar
effect of discarding part of the message).

Fixes: https://gitlab.freedesktop.org/spice/spice/-/issues/40

Acked-by: Frediano Ziglio <fziglio@redhat.com>
2020-05-11 19:09:15 +01:00
build-aux Do not generate ChangeLog file 2020-02-27 11:22:40 +00:00
docs docs: add Intel GVTg configuration to manual 2020-04-30 13:33:41 +03:00
m4 Remove conversion warnings 2020-05-01 06:58:08 +01:00
server red-stream: WebDAV doesn't work when SASL is active 2020-05-11 19:09:15 +01:00
subprojects Update spice-common submodule 2020-04-29 18:54:01 +01:00
tests migrate.py: By default try to search system qemu executable 2020-03-09 12:28:45 +00:00
tools build: Update spice-common integration 2020-03-02 14:04:06 +00:00
uncrustify_cfg fresh start 2009-10-14 15:06:41 +02:00
.gitignore docs: update Makefile to match meson dist 2019-10-14 13:49:18 +01:00
.gitlab-ci.yml Allows C++ to be used in sources 2020-05-01 06:58:08 +01:00
.gitmodules build: Move spice-common to subprojects/ directory 2018-07-23 14:49:19 -03:00
.mailmap syntax-check: Fix missing AUTHORS 2016-12-05 13:48:28 +00:00
.travis.yml Remove Celt support 2020-03-17 17:15:51 +00:00
AUTHORS red-stream: WebDAV doesn't work when SASL is active 2020-05-11 19:09:15 +01:00
autogen.sh build-sys: Pass --enable-python-checks when running autogen.sh 2015-04-23 10:38:24 +02:00
cfg.mk Converting Spice_for_newbies.odt to AsciiDoctor format 2019-05-31 15:06:10 +01:00
CHANGELOG.md build: Prepare for 0.14.3 release 2020-02-27 11:22:44 +00:00
configure.ac build: Remove GObject dependency 2020-05-01 06:58:09 +01:00
COPYING Relicense everything from GPL to LGPL 2.1+ 2010-04-13 22:22:15 +02:00
GNUmakefile syntax-check: Update gnufiles 2016-11-18 12:06:53 +00:00
maint.mk syntax-check: Update gnufiles 2016-11-18 12:06:53 +00:00
Makefile.am build: Make building the test binaries optional under Autoconf 2020-03-26 09:10:39 +00:00
meson_options.txt build: Make building the test binaries optional under Meson 2020-03-24 08:38:49 +00:00
meson.build build: Remove GObject dependency 2020-05-01 06:58:09 +01:00
README Update spice-protocol version 2019-04-26 11:45:12 +01:00
README.Windows.md Add some notes for the Windows port 2019-05-07 10:14:35 +01:00
spice-server.pc.in build: Change Autotools pkg-config name field to match Meson 2020-04-10 15:28:16 +01:00
TODO.multiclient Remove trailing whitespace from end of lines 2012-01-13 18:11:59 +02:00

   SPICE: Simple Protocol for Independent Computing Environments
   =============================================================

SPICE is a remote display system built for virtual environments which
allows you to view a computing 'desktop' environment not only on the
machine where it is running, but from anywhere on the Internet and
from a wide variety of machine architectures.

Installation
------------

The SPICE package uses GNU autotools, so the build install process
follows the standard process documented in the INSTALL file. As a
quick start you can do

  ./configure --prefix=/usr --sysconfdir=/etc \
        --localstatedir=/var --libdir=/usr/lib
  make
  sudo make install

Or to install into a private user specific location

  ./configure --prefix=$HOME/spice
  make
  make install

The following mandatory dependencies are required in order to
build SPICE

    Spice protocol >= 0.14.0
    Pixman         >= 0.17.7
    OpenSSL
    libjpeg
    zlib

The following optional dependencies increase the available
functionality

    Cyrus-SASL
    libcacard      >= 2.5.1             (Smartcard support)
    Opus           >= 1.0.0             (Opus audio encoding support)
    LZ4                                 (LZ4 compression support)
    GStreamer      >= 1.0.0

Communication
-------------

To communicate with the development team, or to post patches
there is a technical mailing list:

   http://lists.freedesktop.org/mailman/listinfo/spice-devel

There is also a mailing list for new release announcements:

   http://lists.freedesktop.org/archives/spice-announce/

To view known bugs, or report new bugs, in SPICE visit

   https://gitlab.freedesktop.org/spice/spice/issues/new?

Bugs found when using an OS distribution's binary packages should
be reported to the OS vendors' own bug tracker first.

The latest SPICE code can be found in GIT at:

   https://gitlab.freedesktop.org/spice/

Licensing
---------

SPICE is provided under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.

Please see the COPYING file for the complete LGPLv2+ license
terms, or visit <http://www.gnu.org/licenses/>.

Experimental Features
---------------------
To enable multiple client connections, set:
SPICE_DEBUG_ALLOW_MC=1

-- End of readme