SHA256
1
0
forked from pool/tigervnc

Accepting request 209248 from home:michalsrb:branches:X11:XOrg

- Update client to 1.3.0.
- Build xorg-x11-Xvnc package from this sources.

OBS-URL: https://build.opensuse.org/request/show/209248
OBS-URL: https://build.opensuse.org/package/show/X11:XOrg/tigervnc?expand=0&rev=5
This commit is contained in:
Stefan Dirsch 2013-12-03 11:51:21 +00:00 committed by Git OBS Bridge
parent cd29bca40a
commit b151ac9e0b
17 changed files with 591 additions and 173 deletions

19
10-libvnc.conf Normal file
View File

@ -0,0 +1,19 @@
# This file contains configuration of libvnc.so module
#
# To get libvnc.so module working, do this:
# 1. run "vncpasswd" as root user
# 2. uncomment configuration lines below
#
# Please note you can specify any option which Xvnc accepts.
# Refer to `Xvnc -help` output for detailed list of options.
#Section "Module"
# Load "vnc"
#EndSection
#Section "Screen"
# Identifier "Screen0
# DefaultDepth 16
# Option "SecurityTypes" "VncAuth"
# Option "PasswordFile" "/root/.vnc/passwd"
#EndSection

30
N_xorg-server-xdmcp.patch Normal file
View File

@ -0,0 +1,30 @@
Index: xorg-server-1.12.1/os/access.c
===================================================================
--- xorg-server-1.12.1.orig/os/access.c
+++ xorg-server-1.12.1/os/access.c
@@ -714,7 +714,9 @@ DefineSelf(int fd)
/*
* ignore 'localhost' entries as they're not useful
- * on the other end of the wire
+ * on the other end of the wire and because on hosts
+ * with shared home dirs they'll result in conflicting
+ * entries in ~/.Xauthority
*/
if (ifr->ifa_flags & IFF_LOOPBACK)
continue;
@@ -735,6 +737,14 @@ DefineSelf(int fd)
else if (family == FamilyInternet6 &&
IN6_IS_ADDR_LOOPBACK((struct in6_addr *) addr))
continue;
+
+ /* Ignore IPv6 link local addresses (fe80::/10), because
+ * they need a scope identifier, which we have no way
+ * of telling to the other end.
+ */
+ if (family == FamilyInternet6 &&
+ IN6_IS_ADDR_LINKLOCAL((struct in6_addr *)addr))
+ continue;
#endif
XdmcpRegisterConnection(family, (char *) addr, len);
#if defined(IPv6) && defined(AF_INET6)

View File

@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:594b70825a2c24863afd7b8dd2a5bc1935807118c6726e1d98396dee44d060f4
size 2742707

View File

@ -0,0 +1,13 @@
Index: unix/xserver/hw/vnc/vncExtInit.cc
===================================================================
--- xserver/hw/vnc/vncExtInit.cc (revision 5122)
+++ xserver/hw/vnc/vncExtInit.cc (working copy)
@@ -1068,7 +1068,7 @@
{
REQUEST(xVncExtApproveConnectReq);
REQUEST_SIZE_MATCH(xVncExtApproveConnectReq);
- if (queryConnectId == (void*)stuff->opaqueId) {
+ if ((CARD32)(long)queryConnectId == stuff->opaqueId) {
for (int scr = 0; scr < screenInfo.numScreens; scr++) {
if (desktop[scr]) {
desktop[scr]->approveConnection(queryConnectId, stuff->approve,

3
tigervnc-1.3.0.tar.bz2 Normal file
View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:61e5a78118c3a4adbc3b3026615a1068aed43839c2ad62815832bbc780f38c5a
size 1069481

12
tigervnc-newfbsize.patch Normal file
View File

@ -0,0 +1,12 @@
diff -up a/vncviewer/CConn.cxx.newfbsize b/vncviewer/CConn.cxx
--- a/vncviewer/CConn.cxx.newfbsize 2008-10-23 13:00:59.000000000 +0200
+++ b/vncviewer/CConn.cxx 2008-10-23 13:01:11.000000000 +0200
@@ -327,6 +327,8 @@ void CConn::beginRect(const Rect& r, uns
if (encoding != encodingCopyRect) {
lastServerEncoding = encoding;
}
+ if (encoding == pseudoEncodingDesktopSize)
+ setDesktopSize( r.width(), r.height() );
}
void CConn::endRect(const Rect& r, int encoding)

View File

@ -1,3 +1,9 @@
-------------------------------------------------------------------
Mon Nov 18 14:05:44 UTC 2013 - msrb@suse.com
- Update to 1.3.0.
- Build xorg-x11-Xvnc package from this sources.
-------------------------------------------------------------------
Wed Sep 19 08:08:53 UTC 2012 - werner@suse.de

View File

@ -14,20 +14,19 @@
# Please submit bugfixes or comments via http://bugs.opensuse.org/
#
%define tigervnc 1
%bcond_with Xstatic
%bcond_without dox
Name: tigervnc
Version: 1.1.0
Version: 1.3.0
Release: 0
License: GPL-2.0 and MIT
%if %tigervnc
# BuildRequires: xorg-x11-server-sdk Mesa-devel libopenssl-devel gcc-c++ libjpeg-devel
Conflicts: tightvnc
BuildRequires: xorg-x11-server-sdk Mesa-devel libopenssl-devel gcc-c++ libjpeg-devel fltk-devel
BuildRequires: nasm gcc-c++ pkgconfig(xproto) pkgconfig(x11) pkgconfig(xext) pkgconfig(xtst)
BuildRequires: autoconf automake libtool binutils-gold
BuildRequires: cmake autoconf automake libtool binutils-gold
BuildRequires: java-devel jpackage-utils
# Because of keytool to build java client
BuildRequires: mozilla-nss
BuildRequires: xorg-x11-libICE-devel xorg-x11-libSM-devel pkgconfig(libtasn1) pkgconfig(gnutls) libgcrypt-devel libgpg-error-devel pam-devel
%if %{with Xstatic}
BuildRequires: pkgconfig(fontutil)
BuildRequires: pkg-config xmlto pkgconfig(pixman-1) >= 0.15.20 pkgconfig(glproto) pkgconfig(gl) pkgconfig(dri) pkgconfig(openssl)
BuildRequires: pkgconfig(fixesproto) >= 4.1 pkgconfig(damageproto) >= 1.1 pkgconfig(xcmiscproto) >= 1.2.0 pkgconfig(xtrans) >= 1.2.2
@ -36,167 +35,156 @@ BuildRequires: pkgconfig(xextproto) >= 7.0.99.3 pkgconfig(inputproto) >= 1.9.9
BuildRequires: pkgconfig(videoproto) pkgconfig(compositeproto) >= 0.4 pkgconfig(recordproto) >= 1.13.99.1 pkgconfig(scrnsaverproto) >= 1.1
BuildRequires: pkgconfig(resourceproto) pkgconfig(xineramaproto) pkgconfig(xkbfile) pkgconfig(xau) pkgconfig(xdmcp) pkgconfig(xfont) >= 1.4.2
BuildRequires: pkgconfig(pciaccess) >= 0.8.0
%endif %{nil Xstatic}
%if %{with dox}
BuildRequires: texlive
BuildRequires: texlive-latex
%if 0%{?suse_version} > 1220
BuildRequires: texlive-amsfonts
BuildRequires: texlive-cm-super
BuildRequires: texlive-ec
%endif
%endif %{nil with dox}
URL: http://sourceforge.net/apps/mediawiki/tigervnc/
%else
Requires: x11vnc
%endif
URL: http://sourceforge.net/apps/mediawiki/tigervnc/
BuildRoot: %{_tmppath}/%{name}-%{version}-build
Group: System/X11/Servers/XF86_4
%if %tigervnc
Summary: A high-performance, platform-neutral implementation of VNC
# _____________*_________*_________*_________*_________*_________*_________*
%else
Summary: Xvnc wrapper script which makes use of Xvfb/x11vnc
%endif
%if %tigervnc
Source1: http://downloads.sf.net/tigervnc/%name-%version.tar.gz
%if %{with Xstatic}
Source2: xorg-server-1.9.3.tar.bz2
Patch: xorg-server-xdmcp.patch
Patch3: xorg-bug38185.patch
%endif
Patch1: tigervnc-sf3492352.diff
Patch2: tigervnc-sf3492503.patch
Patch4: tigervnc-sf3493012.patch
Patch5: tigervnc-sf3495623.patch
%else
Source0: Xvnc.pl
%endif
Source1: tigervnc-1.3.0.tar.bz2
Source2: xorg-server-1.13.0.tar.bz2
Source3: vnc.xinetd
Source4: 10-libvnc.conf
Source5: vnc-server.firewall
Source6: vnc-httpd.firewall
Source7: vnc_inetd_httpd
Source8: vnc.reg
# Tiger vnc patches
Patch1: u_tigervnc-1.3.0-fix-use-after-free.patch
Patch2: tigervnc-newfbsize.patch
# Xserver patches
Patch10: tigervnc-1.2.80-fix-int-to-pointer.patch
Patch11: u_aarch64-support.patch
Patch12: N_xorg-server-xdmcp.patch
%description
%if %tigervnc
TigerVNC is a high-performance, platform-neutral implementation of VNC (Virtual Network Computing),
a client/server application that allows users to launch and interact with graphical applications on remote machines.
TigerVNC provides the levels of performance necessary to run 3D and video applications;
it attempts to maintain a common look and feel and re-use components, where possible, across the various platforms that it supports.
TigerVNC also provides extensions for advanced authentication methods and TLS encryption.
%else
This is a wrapper script, which makes use of Xvfb/x11vnc to implement
a Xvnc server.
%endif
TigerVNC also provides extensions for advanced authentication methods and TLS encryption.
%package -n xorg-x11-Xvnc
Requires: xinetd
Summary: TigerVNC implementation of Xvnc
Group: System/X11/Servers/XF86_4
%description -n xorg-x11-Xvnc
This is the TigerVNC implementation of Xvnc.
%prep
%if %tigervnc
%setup -T -n %{name}-%{version}/unix/xserver -b1 \
%if %{with Xstatic}
-b2
cp -r -t. ../../../xorg-server-*/*
patch -p1 < ../xserver19.patch
%patch -p2
%patch3 -p1
%endif
%setup -T -b1 -b2
cp -r ../xorg-server-*/* unix/xserver/
cd ../..
%patch1 -p1
%patch2 -p1
%patch4 -p1
%patch5 -p1
cd doc
mv ft-protocol-problems.txt ft-protocol-problems.eml
%endif
%define xcflags -include $PWD/deprec.h -fuse-linker-plugin
%build
%if %tigervnc
pushd ../..
%if %{with dox}
cd doc
for s in rfbtight
do while [[ ! -r "$s.toc" ]] || grep "^No file .*$s\\.toc" "$s.log" && pdflatex "$s.tex"
do :
done
done
cd ..
%endif %{nil with dox}
autoreconf -fi
echo>deprec.h '#ifdef __cplusplus
#define CDECL118 "C"
#else
#define CDECL118
#endif
extern CDECL118 struct hostent *gethostbyname (const char *__name) __attribute__ ((deprecated));
#undef __DATE__
#undef __TIME__
#define __DATE__ "(rpm -qif $0)"
#define __TIME__ __DATE__
'
%configure --disable-static --with-system-jpeg --with-system-zlib \
CFLAGS="$CFLAGS %{xcflags}" CXXFLAGS="$CXXFLAGS %{xcflags}"
make %{?_smp_mflags}
%if %{with Xstatic}
pushd unix/xserver
patch -p1 < ../xserver113.patch
%patch10 -p1
%patch11 -p1
%patch12 -p1
popd
%build
# Build all tigervnc
cmake -DCMAKE_INSTALL_PREFIX:PATH=%{_prefix}
make %{?_smp_mflags}
# Build Xvnc server
pushd unix/xserver
autoreconf -fi
%configure \
--disable-xorg --disable-xnest --disable-xvfb --disable-dmx \
--disable-xwin --disable-xephyr --disable-kdrive --with-pic \
--disable-static --disable-xinerama \
--with-xkb-path="/usr/share/X11/xkb" \
--with-xkb-output="/var/lib/xkb/compiled" \
--enable-glx --enable-dri --enable-dri2 \
--disable-config-dbus \
--disable-config-hal \
--disable-config-udev \
--without-dtrace \
--disable-unit-tests \
--disable-devel-docs \
--with-fontrootdir=/usr/share/fonts \
--disable-selective-werror
make %{?_smp_mflags}
popd
# Build java client
pushd java
cmake -DCMAKE_INSTALL_PREFIX:PATH=%{_prefix}
make %{?_smp_mflags}
popd
: ./autogen.sh
autoreconf -fiv -Werror
%configure --disable-xvfb --disable-xnest --disable-xorg --disable-dmx \
--disable-xwin --disable-xephyr --disable-kdrive --with-pic \
--disable-static --disable-xinerama \
--disable-composite \
--with-xkb-path="/usr/share/X11/xkb" \
--with-xkb-output="/var/lib/xkb/compiled" \
--disable-dri2 \
--enable-glx \
--disable-config-dbus \
--disable-config-hal \
--disable-config-udev \
--without-dtrace \
--with-fontrootdir=/usr/share/fonts
%make %{?_smp_mflags}
%endif %{nil with Xstatic}
%endif %{nil tigervnc}
%install
%if %tigervnc
cd ../..
%makeinstall
%else %{nil tigervnc}
mkdir -p $RPM_BUILD_ROOT/usr/bin
install -m 755 $RPM_SOURCE_DIR/Xvnc.pl $RPM_BUILD_ROOT/usr/bin/Xvnc
%endif %{nil tigervnc}
mkdir -p $RPM_BUILD_ROOT/etc/sysconfig/SuSEfirewall2.d/services
cat > $RPM_BUILD_ROOT/etc/sysconfig/SuSEfirewall2.d/services/%{name} << EOF
## Name: VNC Server
## Description: Opens ports for VNC Server
TCP="5801 5901"
EOF
%make_install
pushd unix/xserver
%make_install
popd
pushd java
mkdir -p $RPM_BUILD_ROOT%{_datadir}/vnc/classes
install -m755 VncViewer.jar $RPM_BUILD_ROOT%{_datadir}/vnc/classes
install -m644 com/tigervnc/vncviewer/index.vnc $RPM_BUILD_ROOT%{_datadir}/vnc/classes
popd
install -D -m 644 %{SOURCE3} $RPM_BUILD_ROOT/etc/xinetd.d/vnc
install -D -m 644 %{SOURCE4} $RPM_BUILD_ROOT/etc/X11/xorg.conf.d/10-libvnc.conf
install -D -m 644 %{SOURCE5} $RPM_BUILD_ROOT/etc/sysconfig/SuSEfirewall2.d/services/vnc-server
install -D -m 644 %{SOURCE6} $RPM_BUILD_ROOT/etc/sysconfig/SuSEfirewall2.d/services/vnc-httpd
install -D -m 755 %{SOURCE7} $RPM_BUILD_ROOT%{_bindir}/vnc_inetd_httpd
install -D -m 644 %{SOURCE8} $RPM_BUILD_ROOT/etc/slp.reg.d/vnc.reg
%find_lang '%{name}'
%files -f ../../%{name}.lang
%files -f %{name}.lang
%defattr(-,root,root,-)
%{_bindir}/vncviewer
%exclude /usr/share/doc/tigervnc-1.3.0
%doc LICENCE.TXT
%doc README.txt
%{_mandir}/man1/vncviewer.1*
%files -n xorg-x11-Xvnc
%defattr(-,root,root)
%config /etc/sysconfig/SuSEfirewall2.d/services/%{name}
%{_bindir}/*
%if %tigervnc
%doc %{_mandir}/man1/*
%if %{with Xstatic}
%{_bindir}/Xvnc
%{_bindir}/vncconfig
%{_bindir}/vncpasswd
%{_bindir}/vncserver
%{_bindir}/x0vncserver
%{_bindir}/vnc_inetd_httpd
%exclude %{_mandir}/man1/Xserver.1*
%{_mandir}/man1/Xvnc.1*
%{_mandir}/man1/vncconfig.1*
%{_mandir}/man1/vncpasswd.1*
%{_mandir}/man1/vncserver.1*
%{_mandir}/man1/x0vncserver.1*
%exclude /usr/%{_lib}/xorg/protocol.txt
%exclude /usr/%{_lib}/xorg/modules/extensions/libvnc.la
%exclude /usr/%{_lib}/xorg/modules/extensions/libvnc.so
%{_libdir}/xorg/modules/extensions/libvnc.so
%exclude /var/lib/xkb/compiled/README.compiled
%endif %{nil Xstatic}
/etc/sysconfig/SuSEfirewall2.d/services/vnc-server
/etc/sysconfig/SuSEfirewall2.d/services/vnc-httpd
%config(noreplace) /etc/X11/xorg.conf.d/10-libvnc.conf
%config(noreplace) /etc/xinetd.d/vnc
%dir /etc/slp.reg.d
%config(noreplace) /etc/slp.reg.d/vnc.reg
%exclude /usr/lib/debug/*
%exclude /usr/lib/debug/.*
%exclude /usr/src/debug
%endif
%if %{with Xstatic}
%doc COPYING
%endif %{nil with Xstatic}
%doc ../../README.txt ../../LICENCE.TXT
%doc ../../doc/ft-protocol-problems.eml ../../doc/realvnc-internals.txt ../../doc/registered-codes.txt
%if %{with dox}
%doc ../../doc/rfbtight.pdf
%else %{nil with dox}
%doc ../../doc/rfbtight.tex
%endif %{nil with dox}
%doc java/com/tigervnc/vncviewer/README
%{_datadir}/vnc
%changelog

60
u_aarch64-support.patch Normal file
View File

@ -0,0 +1,60 @@
Subject: Basic support for aarch64
Author: Andreas Schwab <schwab@suse.de>
Index: xorg-server-1.13.2/hw/xfree86/os-support/linux/lnx_video.c
===================================================================
--- xorg-server-1.13.2.orig/hw/xfree86/os-support/linux/lnx_video.c
+++ xorg-server-1.13.2/hw/xfree86/os-support/linux/lnx_video.c
@@ -58,7 +58,8 @@ static Bool ExtendedEnabled = FALSE;
!defined(__sparc__) && \
!defined(__mips__) && \
!defined(__nds32__) && \
- !defined(__arm__)
+ !defined(__arm__) && \
+ !defined(__aarch64__)
/*
* Due to conflicts with "compiler.h", don't rely on <sys/io.h> to declare
@@ -511,7 +512,7 @@ xf86EnableIO(void)
#endif
}
close(fd);
-#elif !defined(__mc68000__) && !defined(__sparc__) && !defined(__mips__) && !defined(__sh__) && !defined(__hppa__) && !defined(__s390__) && !defined(__arm__) && !defined(__m32r__) && !defined(__nds32__)
+#elif !defined(__mc68000__) && !defined(__sparc__) && !defined(__mips__) && !defined(__sh__) && !defined(__hppa__) && !defined(__s390__) && !defined(__arm__) && !defined(__m32r__) && !defined(__nds32__) && !defined(__aarch64__)
if (ioperm(0, 1024, 1) || iopl(3)) {
if (errno == ENODEV)
ErrorF("xf86EnableIOPorts: no I/O ports found\n");
@@ -540,7 +541,7 @@ xf86DisableIO(void)
#if defined(__powerpc__)
munmap(ioBase, 0x20000);
ioBase = NULL;
-#elif !defined(__mc68000__) && !defined(__sparc__) && !defined(__mips__) && !defined(__sh__) && !defined(__hppa__) && !defined(__arm__) && !defined(__s390__) && !defined(__m32r__) && !defined(__nds32__)
+#elif !defined(__mc68000__) && !defined(__sparc__) && !defined(__mips__) && !defined(__sh__) && !defined(__hppa__) && !defined(__arm__) && !defined(__s390__) && !defined(__m32r__) && !defined(__nds32__) && !defined(__aarch64__)
iopl(0);
ioperm(0, 1024, 0);
#endif
Index: xorg-server-1.13.2/include/servermd.h
===================================================================
--- xorg-server-1.13.2.orig/include/servermd.h
+++ xorg-server-1.13.2/include/servermd.h
@@ -286,6 +286,20 @@ SOFTWARE.
#define GLYPHPADBYTES 4
#endif /* linux/s390 */
+#ifdef __aarch64__
+
+#ifdef __AARCH64EL__
+#define IMAGE_BYTE_ORDER LSBFirst
+#define BITMAP_BIT_ORDER LSBFirst
+#endif
+#ifdef __AARCH64EB__
+#define IMAGE_BYTE_ORDER MSBFirst
+#define BITMAP_BIT_ORDER MSBFirst
+#endif
+#define GLYPHPADBYTES 4
+
+#endif /* __aarch64__ */
+
/* size of buffer to use with GetImage, measured in bytes. There's obviously
* a trade-off between the amount of heap used and the number of times the
* ddx routine has to be called.

View File

@ -0,0 +1,115 @@
Author: Michal Srb <msrb@suse.com>
Subject: Fix use after free in ZRLEEncoder.
Patch-Mainline: To be upstreamed
References: bnc#840433
There is use after free crash when client using zrle disconnects:
ZRLEEncoder contains zos variable (rdr::ZlibOutStream) and mos variable (pointer to rdr::MemOutStream).
mos is always allocated in constructor (it could be a copy of static sharedMos pointer if sharedMos != 0, but it is always 0).
When ZRLEEncoder::writeRect is called, any of zrleEncode* functions sets mos as an underlying stream of zos.
When ZRLEEncoder is destructed, mos is deleted (sharedMos is always 0), then zos is implicitly destructed, but zos accesses it's underlying stream in it's destructor!
We need to destruct mos first and zos second when ZRLEEncoder is destructed.
As sharedMos is never used, we can remove that, simplify ZRLEEncoder and turn zos into a member variable same as mos. They will be both implicitly destructed in reverse order of declaration.
diff -ur tigervnc-1.3.0-orig/common/rfb/ZRLEEncoder.cxx tigervnc-1.3.0/common/rfb/ZRLEEncoder.cxx
--- tigervnc-1.3.0-orig/common/rfb/ZRLEEncoder.cxx 2013-09-17 00:18:28.557911306 +0300
+++ tigervnc-1.3.0/common/rfb/ZRLEEncoder.cxx 2013-09-17 00:19:57.487915741 +0300
@@ -26,7 +26,6 @@
using namespace rfb;
-rdr::MemOutStream* ZRLEEncoder::sharedMos = 0;
int ZRLEEncoder::maxLen = 4097 * 1024; // enough for width 16384 32-bit pixels
IntParameter zlibLevel("ZlibLevel","Zlib compression level",-1);
@@ -55,33 +54,27 @@
}
ZRLEEncoder::ZRLEEncoder(SMsgWriter* writer_)
- : writer(writer_), zos(0,0,zlibLevel)
+ : writer(writer_), zos(0,0,zlibLevel), mos(129*1024)
{
- if (sharedMos)
- mos = sharedMos;
- else
- mos = new rdr::MemOutStream(129*1024);
}
ZRLEEncoder::~ZRLEEncoder()
{
- if (!sharedMos)
- delete mos;
}
bool ZRLEEncoder::writeRect(const Rect& r, TransImageGetter* ig, Rect* actual)
{
rdr::U8* imageBuf = writer->getImageBuf(64 * 64 * 4 + 4);
- mos->clear();
+ mos.clear();
bool wroteAll = true;
*actual = r;
switch (writer->bpp()) {
case 8:
- wroteAll = zrleEncode8(r, mos, &zos, imageBuf, maxLen, actual, ig);
+ wroteAll = zrleEncode8(r, &mos, &zos, imageBuf, maxLen, actual, ig);
break;
case 16:
- wroteAll = zrleEncode16(r, mos, &zos, imageBuf, maxLen, actual, ig);
+ wroteAll = zrleEncode16(r, &mos, &zos, imageBuf, maxLen, actual, ig);
break;
case 32:
{
@@ -94,16 +87,16 @@
if ((fitsInLS3Bytes && pf.isLittleEndian()) ||
(fitsInMS3Bytes && pf.isBigEndian()))
{
- wroteAll = zrleEncode24A(r, mos, &zos, imageBuf, maxLen, actual, ig);
+ wroteAll = zrleEncode24A(r, &mos, &zos, imageBuf, maxLen, actual, ig);
}
else if ((fitsInLS3Bytes && pf.isBigEndian()) ||
(fitsInMS3Bytes && pf.isLittleEndian()))
{
- wroteAll = zrleEncode24B(r, mos, &zos, imageBuf, maxLen, actual, ig);
+ wroteAll = zrleEncode24B(r, &mos, &zos, imageBuf, maxLen, actual, ig);
}
else
{
- wroteAll = zrleEncode32(r, mos, &zos, imageBuf, maxLen, actual, ig);
+ wroteAll = zrleEncode32(r, &mos, &zos, imageBuf, maxLen, actual, ig);
}
break;
}
@@ -111,8 +104,8 @@
writer->startRect(*actual, encodingZRLE);
rdr::OutStream* os = writer->getOutStream();
- os->writeU32(mos->length());
- os->writeBytes(mos->data(), mos->length());
+ os->writeU32(mos.length());
+ os->writeBytes(mos.data(), mos.length());
writer->endRect();
return wroteAll;
}
diff -ur tigervnc-1.3.0-orig/common/rfb/ZRLEEncoder.h tigervnc-1.3.0/common/rfb/ZRLEEncoder.h
--- tigervnc-1.3.0-orig/common/rfb/ZRLEEncoder.h 2013-09-17 00:18:28.558911306 +0300
+++ tigervnc-1.3.0/common/rfb/ZRLEEncoder.h 2013-09-17 00:20:34.372917581 +0300
@@ -38,16 +38,11 @@
// width, in this example about 128 bytes).
static void setMaxLen(int m) { maxLen = m; }
- // setSharedMos() sets a MemOutStream to be shared amongst all
- // ZRLEEncoders. Should be called before any ZRLEEncoders are created.
- static void setSharedMos(rdr::MemOutStream* mos_) { sharedMos = mos_; }
-
private:
ZRLEEncoder(SMsgWriter* writer);
SMsgWriter* writer;
+ rdr::MemOutStream mos;
rdr::ZlibOutStream zos;
- rdr::MemOutStream* mos;
- static rdr::MemOutStream* sharedMos;
static int maxLen;
};
}

4
vnc-httpd.firewall Normal file
View File

@ -0,0 +1,4 @@
## Name: VNC mini-HTTP server
## Description: Opens the VNC HTTP ports so that browsers can connect.
TCP="5800:5899"

4
vnc-server.firewall Normal file
View File

@ -0,0 +1,4 @@
## Name: VNC
## Description: Opens VNC server ports so that viewers can connect.
TCP="5900:5999"

42
vnc.reg Normal file
View File

@ -0,0 +1,42 @@
#############################################################################
#
# OpenSLP registration file
#
# register VNC remote logins via kdm
# You need also to allow remote logins
#
#############################################################################
# Register VNC service for krdc (KDE VNC client in kdenetwork)
service:remotedesktop.kde:vnc://$HOSTNAME:5901,en,65535
tcp-port=5901
description=VNC remote login [1024x768]
# Register VNC service for krdc (KDE VNC client in kdenetwork)
service:remotedesktop.kde:vnc://$HOSTNAME:5902,en,65535
tcp-port=5902
description=VNC remote login [1280x1024]
# Register VNC service for krdc (KDE VNC client in kdenetwork)
service:remotedesktop.kde:vnc://$HOSTNAME:5903,en,65535
tcp-port=5903
description=VNC remote login [1600x1200]
# Register VNC service for Java clients
# Can be used with every Web browser with enabled Java
service:remotedesktop.java:http://$HOSTNAME:5801,en,65535
tcp-port=5801
description=VNC remote login [1024x768]
# Register VNC service for Java clients
# Can be used with every Web browser with enabled Java
service:remotedesktop.java:http://$HOSTNAME:5802,en,65535
tcp-port=5802
description=VNC remote login [1280x1024]
# Register VNC service for Java clients
# Can be used with every Web browser with enabled Java
service:remotedesktop.java:http://$HOSTNAME:5803,en,65535
tcp-port=5803
description=VNC remote login [1600x1200]

90
vnc.xinetd Normal file
View File

@ -0,0 +1,90 @@
# default: off
# description: This serves out a VNC connection which starts at a KDM login \
# prompt. This VNC connection has a resolution of 1024x768, 16bit depth.
service vnc1
{
type = UNLISTED
port = 5901
socket_type = stream
protocol = tcp
wait = no
user = nobody
server = /usr/bin/Xvnc
server_args = -noreset -inetd -once -query localhost -geometry 1024x768 -depth 16 -securitytypes none
disable = yes
}
# default: off
# description: This serves out a VNC connection which starts at a KDM login \
# prompt. This VNC connection has a resolution of 1280x1024, 16bit depth.
service vnc2
{
type = UNLISTED
port = 5902
socket_type = stream
protocol = tcp
wait = no
user = nobody
server = /usr/bin/Xvnc
server_args = -noreset -inetd -once -query localhost -geometry 1280x1024 -depth 16 -securitytypes none
disable = yes
}
# default: off
# description: This serves out a VNC connection which starts at a KDM login \
# prompt. This VNC connection has a resolution of 1600x1200, 16bit depth.
service vnc3
{
type = UNLISTED
port = 5903
socket_type = stream
protocol = tcp
wait = no
user = nobody
server = /usr/bin/Xvnc
server_args = -noreset -inetd -once -query localhost -geometry 1600x1200 -depth 16 -securitytypes none
disable = yes
}
# default: off
# description: This serves out the vncviewer Java applet for the VNC \
# server running on port 5901, (vnc port 1).
service vnchttpd1
{
type = UNLISTED
port = 5801
socket_type = stream
protocol = tcp
wait = no
user = nobody
server = /usr/bin/vnc_inetd_httpd
server_args = 1024 768 5901
disable = yes
}
# default: off
# description: This serves out the vncviewer Java applet for the VNC \
# server running on port 5902, (vnc port 2).
service vnchttpd2
{
type = UNLISTED
port = 5802
socket_type = stream
protocol = tcp
wait = no
user = nobody
server = /usr/bin/vnc_inetd_httpd
server_args = 1280 1024 5902
disable = yes
}
# default: off
# description: This serves out the vncviewer Java applet for the VNC \
# server running on port 5902, (vnc port 3).
service vnchttpd3
{
type = UNLISTED
port = 5803
socket_type = stream
protocol = tcp
wait = no
user = nobody
server = /usr/bin/vnc_inetd_httpd
server_args = 1600 1200 5903
disable = yes
}

60
vnc_inetd_httpd Normal file
View File

@ -0,0 +1,60 @@
#!/bin/bash
read request url httptype || exit 0
url="${url/ /}"
httptype="${httptype/ /}"
width=$1
height=$2
port=$3
if [ "x$httptype" != "x" ]; then
line="x"
while [ -n "$line" ]; do
read line || exit 0
line="${line/ /}"
done
fi
case "$url" in
/)
# We need the size of the display for the current applet.
# The VNC menubar is 20 pixels high ...
height=$((height+20))
ctype="text/html"
content="
<HTML><HEAD><TITLE>Remote Desktop</TITLE></HEAD>
<BODY>
<APPLET CODE=VncViewer.class ARCHIVE=VncViewer.jar WIDTH=$width HEIGHT=$height>
<param name=PORT value=$port>
</APPLET>
</BODY></HTML>"
;;
*.jar|*.class)
# Use basename to make sure we have just a filename, not ../../...
url=${url/.*\/}
ctype="application/octet-stream"
cfile="/usr/share/vnc/classes/$url"
content="FILE"
;;
esac
if [ "x$httptype" != "x" ]; then
echo "HTTP/1.0 200 OK"
echo "Content-Type: $ctype"
if [ "$content" == "FILE" ]; then
clen=`wc -c "$cfile"`
else
clen=`echo "$content"|wc -c`
fi
echo "Content-Length: $clen"
echo "Connection: close"
echo
fi
if [ "$request" == "GET" ]; then
if [ "$content" == "FILE" ]; then
cat "$cfile"
else
echo "$content"
fi
fi
exit 0

View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:a751cae62dad1f8032613bef96a758c2eceacc0425533e8ee446fc53207174c4
size 3713571

View File

@ -1,28 +0,0 @@
--- unix/xserver/os/access.c 2012-02-24 15:32:16.683508316 +0100
+++ unix/xserver/os/access.c 2012-02-24 15:32:16.899508318 +0100
@@ -802,7 +802,9 @@
/*
* ignore 'localhost' entries as they're not useful
- * on the other end of the wire
+ * on the other end of the wire and because on hosts
+ * with shared home dirs they'll result in conflic
+ * entries in ~/.Xauthority
*/
if (ifr->ifa_flags & IFF_LOOPBACK)
continue;
@@ -825,6 +827,14 @@
else if (family == FamilyInternet6 &&
IN6_IS_ADDR_LOOPBACK((struct in6_addr *)addr))
continue;
+
+ /* Ignore IPv6 link local addresses (fe80::/10), because
+ * they need a scope identifier, which we have no way
+ * of telling to the other end.
+ */
+ if (family == FamilyInternet6 &&
+ IN6_IS_ADDR_LINKLOCAL((struct in6_addr *)addr))
+ continue;
#endif
XdmcpRegisterConnection(family, (char *)addr, len);
#if defined(IPv6) && defined(AF_INET6)