SHA256
1
0
forked from pool/tigervnc

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

- Update to tigervnc 1.4.1 on xorg-server 1.16.1.

OBS-URL: https://build.opensuse.org/request/show/280582
OBS-URL: https://build.opensuse.org/package/show/X11:XOrg/tigervnc?expand=0&rev=46
This commit is contained in:
Michal Srb 2015-01-09 13:08:09 +00:00 committed by Git OBS Bridge
parent 4aa15ef254
commit b854932e02
17 changed files with 119 additions and 349 deletions

View File

@ -1,40 +1,54 @@
--- tigervnc-1.3.1.orig/unix/xserver/hw/vnc/buildtime.c Index: tigervnc-1.4.1/unix/xserver/hw/vnc/buildtime.c
+++ tigervnc-1.3.1/unix/xserver/hw/vnc/buildtime.c ===================================================================
--- tigervnc-1.4.1.orig/unix/xserver/hw/vnc/buildtime.c
+++ tigervnc-1.4.1/unix/xserver/hw/vnc/buildtime.c
@@ -15,4 +15,4 @@ @@ -15,4 +15,4 @@
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
* USA. * USA.
*/ */
-char buildtime[] = __DATE__ " " __TIME__; -char buildtime[] = __DATE__ " " __TIME__;
+char buildtime[] = "??? ?? ???? ??:??:??"; +char buildtime[] = "??? ?? ???? ??:??:??";
--- tigervnc-1.3.1.orig/unix/vncconfig/buildtime.c Index: tigervnc-1.4.1/unix/vncconfig/buildtime.c
+++ tigervnc-1.3.1/unix/vncconfig/buildtime.c ===================================================================
--- tigervnc-1.4.1.orig/unix/vncconfig/buildtime.c
+++ tigervnc-1.4.1/unix/vncconfig/buildtime.c
@@ -15,4 +15,4 @@ @@ -15,4 +15,4 @@
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
* USA. * USA.
*/ */
-char buildtime[] = __DATE__ " " __TIME__; -char buildtime[] = __DATE__ " " __TIME__;
+char buildtime[] = "??? ?? ???? ??:??:??"; +char buildtime[] = "??? ?? ???? ??:??:??";
--- tigervnc-1.3.1.orig/unix/x0vncserver/buildtime.c Index: tigervnc-1.4.1/unix/x0vncserver/buildtime.c
+++ tigervnc-1.3.1/unix/x0vncserver/buildtime.c ===================================================================
--- tigervnc-1.4.1.orig/unix/x0vncserver/buildtime.c
+++ tigervnc-1.4.1/unix/x0vncserver/buildtime.c
@@ -15,4 +15,4 @@ @@ -15,4 +15,4 @@
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
* USA. * USA.
*/ */
-char buildtime[] = __DATE__ " " __TIME__; -char buildtime[] = __DATE__ " " __TIME__;
+char buildtime[] = "??? ?? ???? ??:??:??"; +char buildtime[] = "??? ?? ???? ??:??:??";
--- tigervnc-1.3.1.orig/vncviewer/buildTime.cxx Index: tigervnc-1.4.1/win/winvnc/buildTime.cxx
+++ tigervnc-1.3.1/vncviewer/buildTime.cxx ===================================================================
@@ -15,4 +15,4 @@ --- tigervnc-1.4.1.orig/win/winvnc/buildTime.cxx
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, +++ tigervnc-1.4.1/win/winvnc/buildTime.cxx
* USA.
*/
-const char* buildTime = "Built on " __DATE__ " at " __TIME__;
+const char* buildTime = "Built on ??? ?? ???? at ??:??:??";
--- tigervnc-1.3.1.orig/win/winvnc/buildTime.cxx
+++ tigervnc-1.3.1/win/winvnc/buildTime.cxx
@@ -15,4 +15,4 @@ @@ -15,4 +15,4 @@
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
* USA. * USA.
*/ */
-const char* buildTime = "Built on " __DATE__ " at " __TIME__; -const char* buildTime = "Built on " __DATE__ " at " __TIME__;
+const char* buildTime = "Built on ??? ?? ???? at ??:??:??"; +const char* buildTime = "Built on ??? ?? ???? at ??:??:??";
Index: tigervnc-1.4.1/CMakeLists.txt
===================================================================
--- tigervnc-1.4.1.orig/CMakeLists.txt
+++ tigervnc-1.4.1/CMakeLists.txt
@@ -39,8 +39,7 @@ if(MSVC)
message(FATAL_ERROR "TigerVNC cannot be built with Visual Studio. Please use MinGW")
endif()
-set(BUILD_TIMESTAMP "")
-execute_process(COMMAND "date" "+%Y-%m-%d %H:%M" OUTPUT_VARIABLE BUILD_TIMESTAMP)
+set(BUILD_TIMESTAMP "??-??-?? ??:??")
if(NOT BUILD_TIMESTAMP)
set(BUILD_TIMESTAMP "")

View File

@ -1,13 +0,0 @@
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,

View File

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

3
tigervnc-1.4.1.tar.gz Normal file
View File

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

View File

@ -1,8 +1,8 @@
diff --git a/vncviewer/DesktopWindow.cxx b/vncviewer/DesktopWindow.cxx Index: tigervnc-1.4.1/vncviewer/DesktopWindow.cxx
index 40d08ae..7a571ec 100644 ===================================================================
--- a/vncviewer/DesktopWindow.cxx --- tigervnc-1.4.1.orig/vncviewer/DesktopWindow.cxx
+++ b/vncviewer/DesktopWindow.cxx +++ tigervnc-1.4.1/vncviewer/DesktopWindow.cxx
@@ -186,6 +186,8 @@ DesktopWindow::~DesktopWindow() @@ -188,6 +188,8 @@ DesktopWindow::~DesktopWindow()
OptionsDialog::removeCallback(handleOptions); OptionsDialog::removeCallback(handleOptions);
@ -11,11 +11,11 @@ index 40d08ae..7a571ec 100644
// FLTK automatically deletes all child widgets, so we shouldn't touch // FLTK automatically deletes all child widgets, so we shouldn't touch
// them ourselves here // them ourselves here
} }
diff --git a/vncviewer/Viewport.cxx b/vncviewer/Viewport.cxx Index: tigervnc-1.4.1/vncviewer/Viewport.cxx
index e308a63..41733f9 100644 ===================================================================
--- a/vncviewer/Viewport.cxx --- tigervnc-1.4.1.orig/vncviewer/Viewport.cxx
+++ b/vncviewer/Viewport.cxx +++ tigervnc-1.4.1/vncviewer/Viewport.cxx
@@ -112,6 +112,11 @@ Viewport::Viewport(int w, int h, const rfb::PixelFormat& serverPF, CConn* cc_) @@ -144,6 +144,11 @@ Viewport::Viewport(int w, int h, const r
Viewport::~Viewport() Viewport::~Viewport()
{ {
@ -26,12 +26,12 @@ index e308a63..41733f9 100644
+ +
// Unregister all timeouts in case they get a change tro trigger // Unregister all timeouts in case they get a change tro trigger
// again later when this object is already gone. // again later when this object is already gone.
Fl::remove_timeout(handleUpdateTimeout, this); Fl::remove_timeout(handlePointerTimeout, this);
diff --git a/vncviewer/vncviewer.cxx b/vncviewer/vncviewer.cxx Index: tigervnc-1.4.1/vncviewer/vncviewer.cxx
index 37d63a6..5bb811d 100644 ===================================================================
--- a/vncviewer/vncviewer.cxx --- tigervnc-1.4.1.orig/vncviewer/vncviewer.cxx
+++ b/vncviewer/vncviewer.cxx +++ tigervnc-1.4.1/vncviewer/vncviewer.cxx
@@ -83,6 +83,8 @@ char vncServerName[VNCSERVERNAMELEN] = { '\0' }; @@ -88,6 +88,8 @@ char vncServerName[VNCSERVERNAMELEN] = {
static bool exitMainloop = false; static bool exitMainloop = false;
static const char *exitError = NULL; static const char *exitError = NULL;
@ -40,10 +40,10 @@ index 37d63a6..5bb811d 100644
void exit_vncviewer(const char *error) void exit_vncviewer(const char *error)
{ {
// Prioritise the first error we get as that is probably the most // Prioritise the first error we get as that is probably the most
@@ -110,6 +112,16 @@ static void CleanupSignalHandler(int sig) @@ -114,6 +116,16 @@ static void CleanupSignalHandler(int sig
// CleanupSignalHandler allows C++ object cleanup to happen because it calls // CleanupSignalHandler allows C++ object cleanup to happen because it calls
// exit() rather than the default which is to abort. // exit() rather than the default which is to abort.
vlog.info("CleanupSignalHandler called"); vlog.info(_("CleanupSignalHandler called"));
+ delete cc; + delete cc;
+ exit(1); + exit(1);
+} +}
@ -57,10 +57,19 @@ index 37d63a6..5bb811d 100644
exit(1); exit(1);
} }
@@ -384,6 +396,10 @@ int main(int argc, char** argv) @@ -392,11 +404,19 @@ int main(int argc, char** argv)
init_fltk(); init_fltk();
+ fl_open_display();
+
+ XSetIOErrorHandler(CleanupXIOErrorHandler);
+
#if !defined(WIN32) && !defined(__APPLE__)
fl_open_display();
XkbSetDetectableAutoRepeat(fl_display, True, NULL);
#endif
+ fl_open_display(); + fl_open_display();
+ +
+ XSetIOErrorHandler(CleanupXIOErrorHandler); + XSetIOErrorHandler(CleanupXIOErrorHandler);
@ -68,7 +77,7 @@ index 37d63a6..5bb811d 100644
Configuration::enableViewerParams(); Configuration::enableViewerParams();
/* Load the default parameter settings */ /* Load the default parameter settings */
@@ -484,7 +500,7 @@ int main(int argc, char** argv) @@ -497,7 +517,7 @@ int main(int argc, char** argv)
#endif #endif
} }

View File

@ -1,12 +1,13 @@
diff -up a/vncviewer/CConn.cxx.newfbsize b/vncviewer/CConn.cxx Index: tigervnc-1.4.1/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 --- tigervnc-1.4.1.orig/vncviewer/CConn.cxx
@@ -327,6 +327,8 @@ void CConn::beginRect(const Rect& r, uns +++ tigervnc-1.4.1/vncviewer/CConn.cxx
if (encoding != encodingCopyRect) { @@ -424,6 +424,8 @@ void CConn::dataRect(const Rect& r, int
if (encoding != encodingCopyRect)
lastServerEncoding = encoding; lastServerEncoding = encoding;
}
+ if (encoding == pseudoEncodingDesktopSize) + if (encoding == pseudoEncodingDesktopSize)
+ setDesktopSize( r.width(), r.height() ); + setDesktopSize( r.width(), r.height() );
}
void CConn::endRect(const Rect& r, int encoding) if (!Decoder::supported(encoding)) {
vlog.error(_("Unknown rect encoding %d"), encoding);

View File

@ -1,15 +0,0 @@
diff -aur o/doc/rfbtight.tex n/doc/rfbtight.tex
--- o/doc/rfbtight.tex 2011-08-09 23:16:48.000000000 +0200
+++ n/doc/rfbtight.tex 2012-02-23 19:45:07.473906253 +0100
@@ -4,8 +4,9 @@
\setlength{\parindent}{0pt}
\setlength{\parskip}{1ex plus 0.5ex minus 0.2ex}
-\newcommand{\typestr}[1]{\textit{#1}}
-\newcommand{\literal}[1]{\textit{\textbf{#1}}}
+\newcommand\standout{\hspace{0pt plus4em}}
+\newcommand{\typestr}[1]{\standout\hspace*{0pt}\textbf{#1}\standout}
+\newcommand{\literal}[1]{\standout\hspace*{0pt}\textit{\textbf{#1}}\standout}
\begin{document}

View File

@ -1,3 +1,8 @@
-------------------------------------------------------------------
Fri Jan 9 12:50:45 UTC 2015 - msrb@suse.com
- Update to tigervnc 1.4.1 on xorg-server 1.16.1.
------------------------------------------------------------------- -------------------------------------------------------------------
Sun Nov 16 09:33:04 UTC 2014 - oscar@naiandei.net Sun Nov 16 09:33:04 UTC 2014 - oscar@naiandei.net

View File

@ -1,7 +1,7 @@
# #
# spec file for package tigervnc # spec file for package tigervnc
# #
# Copyright (c) 2014 SUSE LINUX Products GmbH, Nuernberg, Germany. # Copyright (c) 2015 SUSE LINUX Products GmbH, Nuernberg, Germany.
# #
# All modifications and additions to the file contributed by third parties # All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed # remain the property of their copyright owners, unless otherwise agreed
@ -17,7 +17,7 @@
Name: tigervnc Name: tigervnc
Version: 1.3.1 Version: 1.4.1
Release: 0 Release: 0
Provides: tightvnc = 1.3.9 Provides: tightvnc = 1.3.9
Obsoletes: tightvnc < 1.3.9 Obsoletes: tightvnc < 1.3.9
@ -90,8 +90,8 @@ BuildRoot: %{_tmppath}/%{name}-%{version}-build
Summary: A high-performance, platform-neutral implementation of VNC Summary: A high-performance, platform-neutral implementation of VNC
License: GPL-2.0 and MIT License: GPL-2.0 and MIT
Group: System/X11/Servers/XF86_4 Group: System/X11/Servers/XF86_4
Source1: tigervnc-1.3.1.tar.bz2 Source1: tigervnc-1.4.1.tar.gz
Source2: xorg-server-1.14.0.tar.bz2 Source2: xorg-server-1.16.1.tar.bz2
Source3: vnc.xinetd Source3: vnc.xinetd
Source4: 10-libvnc.conf Source4: 10-libvnc.conf
Source5: vnc-server.firewall Source5: vnc-server.firewall
@ -102,25 +102,19 @@ Source9: vncpasswd.arg
Source10: index.vnc Source10: index.vnc
# Tiger vnc patches # Tiger vnc patches
Patch1: u_tigervnc-1.3.0-fix-use-after-free.patch Patch1: tigervnc-newfbsize.patch
Patch2: tigervnc-newfbsize.patch Patch2: tigervnc-clean-pressed-key-on-exit.patch
Patch3: tigervnc-clean-pressed-key-on-exit.patch Patch3: tigervnc-sf3495623.patch
Patch4: tigervnc-sf3492352.diff Patch4: u_tigervnc-dont-send-ascii-control-characters.patch
Patch5: tigervnc-sf3495623.patch Patch5: u_tigervnc-ignore-epipe-on-write.patch
Patch6: u_tigervnc-dont-send-ascii-control-characters.patch Patch6: n_tigervnc-date-time.patch
Patch7: u_tigervnc-ignore-epipe-on-write.patch Patch7: U_include-vencrypt-only-if-any-subtype-present.patch
Patch8: n_tigervnc-date-time.patch Patch8: u_tigervnc-use_preferred_mode.patch
Patch9: U_include-vencrypt-only-if-any-subtype-present.patch Patch9: u_tigervnc-cve-2014-8240.patch
Patch10: u_tigervnc-check-shm-harder.patch
Patch11: u_tigervnc-use_preferred_mode.patch
Patch12: u_tigervnc-cve-2014-8240.patch
# Xserver patches # Xserver patches
Patch20: tigervnc-1.2.80-fix-int-to-pointer.patch Patch20: N_xorg-server-xdmcp.patch
Patch21: u_aarch64-support.patch Patch21: n_tigervnc-dont-build-gtf.patch
Patch22: N_xorg-server-xdmcp.patch
Patch23: n_tigervnc-dont-build-gtf.patch
Patch24: u_arch-Fix-image-and-bitmap-byte-order-for-ppc64le.patch
%description %description
TigerVNC is a high-performance, platform-neutral implementation of VNC (Virtual Network Computing), TigerVNC is a high-performance, platform-neutral implementation of VNC (Virtual Network Computing),
@ -150,23 +144,17 @@ fi
%patch1 -p1 %patch1 -p1
%patch2 -p1 %patch2 -p1
%patch3 -p1 %patch3 -p1
%patch4 -p1 %patch4 -p0
%patch5 -p1 %patch5 -p0
%patch6 -p0 %patch6 -p1
%patch7 -p0 %patch7 -p0
%patch8 -p1 %patch8 -p0
%patch9 -p0 %patch9 -p1
%patch10 -p0
%patch11 -p0
%patch12 -p1
pushd unix/xserver pushd unix/xserver
patch -p1 < ../xserver114.patch patch -p1 < ../xserver116.patch
%patch20 -p1 %patch20 -p1
%patch21 -p1 %patch21 -p1
%patch22 -p1
%patch23 -p1
%patch24 -p1
popd popd
%build %build
@ -254,7 +242,7 @@ fi
%defattr(-,root,root,-) %defattr(-,root,root,-)
%ghost %{_bindir}/vncviewer %ghost %{_bindir}/vncviewer
%{_bindir}/vncviewer-tigervnc %{_bindir}/vncviewer-tigervnc
%exclude /usr/share/doc/tigervnc-1.3.1 %exclude /usr/share/doc/tigervnc-1.4.1
%doc LICENCE.TXT %doc LICENCE.TXT
%doc README.txt %doc README.txt
%ghost %_mandir/man1/vncviewer.1.gz %ghost %_mandir/man1/vncviewer.1.gz

View File

@ -1,42 +0,0 @@
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
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

@ -1,38 +0,0 @@
From: Dinar Valeev <dvaleev@suse.com>
Date: Mon Feb 24 10:48:22 2014 +0100
Subject: [PATCH]arch: Fix image and bitmap byte order for ppc64le
Patch-Mainline: to be upstreamed
Git-commit: 3874826e84151917a443f8efb46ea7414c990243
Git-repo: git://anongit.freedesktop.org/git/xorg/xserver
References: bnc#865069
Signed-off-by: Egbert Eich <eich@suse.com>
So far PPC was big endian for sure. For ppc64le this is no longer
true.
Signed-off-by: Egbert Eich <eich@freedesktop.org>
---
include/servermd.h | 9 +++++++--
1 file changed, 7 insertions(+), 2 deletions(-)
diff --git a/include/servermd.h b/include/servermd.h
index 11f6c10..256d84b 100644
--- a/include/servermd.h
+++ b/include/servermd.h
@@ -114,8 +114,13 @@ SOFTWARE.
#if defined(__powerpc__) || defined(__ppc__) || defined(__ppc64__)
-#define IMAGE_BYTE_ORDER MSBFirst
-#define BITMAP_BIT_ORDER MSBFirst
+#if defined(__LITTLE_ENDIAN__)
+#define IMAGE_BYTE_ORDER LSBFirst
+#define BITMAP_BIT_ORDER LSBFirst
+#else
+#define IMAGE_BYTE_ORDER MSBFirst
+#define BITMAP_BIT_ORDER MSBFirst
+#endif
#define GLYPHPADBYTES 4
#endif /* PowerPC */

View File

@ -1,115 +0,0 @@
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;
};
}

View File

@ -1,26 +0,0 @@
Index: vncviewer/X11PixelBuffer.cxx
===================================================================
--- vncviewer/X11PixelBuffer.cxx (revision 5186)
+++ vncviewer/X11PixelBuffer.cxx (working copy)
@@ -158,6 +158,8 @@
Bool pixmaps;
XErrorHandler old_handler;
Status status;
+ Window test_window;
+ GC test_gc;
if (!XShmQueryVersion(fl_display, &major, &minor, &pixmaps))
return 0;
@@ -187,6 +189,12 @@
old_handler = XSetErrorHandler(XShmAttachErrorHandler);
XShmAttach(fl_display, shminfo);
+ test_window = XCreateSimpleWindow(fl_display, XDefaultRootWindow(fl_display), 0, 0, width(), height(), 0, 0, 0);
+ test_gc = XCreateGC(fl_display, test_window, 0, 0);
+ XShmPutImage(fl_display, test_window, test_gc, xim, 0, 0, 0, 0, width(), height(), False);
+ XFreeGC(fl_display, test_gc);
+ XDestroyWindow(fl_display, test_window);
+
XSync(fl_display, False);
XSetErrorHandler(old_handler);

View File

@ -2,9 +2,10 @@ Patch-Mainline: To be upstreamed
References: bnc#900896 CVE-2014-8240 References: bnc#900896 CVE-2014-8240
Signed-off-by: Michal Srb <msrb@suse.com> Signed-off-by: Michal Srb <msrb@suse.com>
diff -up tigervnc-1.3.1/unix/x0vncserver/Image.cxx.CVE-2014-8240 tigervnc-1.3.1/unix/x0vncserver/Image.cxx Index: tigervnc-1.4.1/unix/x0vncserver/Image.cxx
--- tigervnc-1.3.1/unix/x0vncserver/Image.cxx.CVE-2014-8240 2008-03-19 16:14:48.000000000 +0000 ===================================================================
+++ tigervnc-1.3.1/unix/x0vncserver/Image.cxx 2014-10-16 12:23:08.013339234 +0100 --- tigervnc-1.4.1.orig/unix/x0vncserver/Image.cxx
+++ tigervnc-1.4.1/unix/x0vncserver/Image.cxx
@@ -80,6 +80,14 @@ void Image::Init(int width, int height) @@ -80,6 +80,14 @@ void Image::Init(int width, int height)
xim = XCreateImage(dpy, vis, DefaultDepth(dpy, DefaultScreen(dpy)), xim = XCreateImage(dpy, vis, DefaultDepth(dpy, DefaultScreen(dpy)),
ZPixmap, 0, 0, width, height, BitmapPad(dpy), 0); ZPixmap, 0, 0, width, height, BitmapPad(dpy), 0);
@ -38,12 +39,13 @@ diff -up tigervnc-1.3.1/unix/x0vncserver/Image.cxx.CVE-2014-8240 tigervnc-1.3.1/
} }
shminfo->shmid = shmget(IPC_PRIVATE, shminfo->shmid = shmget(IPC_PRIVATE,
diff -up tigervnc-1.3.1/vncviewer/X11PixelBuffer.cxx.CVE-2014-8240 tigervnc-1.3.1/vncviewer/X11PixelBuffer.cxx Index: tigervnc-1.4.1/vncviewer/X11PixelBuffer.cxx
--- tigervnc-1.3.1/vncviewer/X11PixelBuffer.cxx.CVE-2014-8240 2011-08-23 13:04:46.000000000 +0100 ===================================================================
+++ tigervnc-1.3.1/vncviewer/X11PixelBuffer.cxx 2014-10-16 12:22:53.053261132 +0100 --- tigervnc-1.4.1.orig/vncviewer/X11PixelBuffer.cxx
@@ -105,6 +105,15 @@ PlatformPixelBuffer::PlatformPixelBuffer +++ tigervnc-1.4.1/vncviewer/X11PixelBuffer.cxx
ZPixmap, 0, 0, width, height, BitmapPad(fl_display), 0); @@ -106,6 +106,15 @@ X11PixelBuffer::X11PixelBuffer(int width
assert(xim); if (!xim)
throw rfb::Exception(_("Could not create framebuffer image"));
+ if (xim->bytes_per_line <= 0 || + if (xim->bytes_per_line <= 0 ||
+ xim->height <= 0 || + xim->height <= 0 ||
@ -55,9 +57,9 @@ diff -up tigervnc-1.3.1/vncviewer/X11PixelBuffer.cxx.CVE-2014-8240 tigervnc-1.3.
+ } + }
+ +
xim->data = (char*)malloc(xim->bytes_per_line * xim->height); xim->data = (char*)malloc(xim->bytes_per_line * xim->height);
assert(xim->data); if (!xim->data)
} throw rfb::Exception(_("Not enough memory for framebuffer"));
@@ -169,6 +178,16 @@ int PlatformPixelBuffer::setupShm() @@ -172,6 +181,16 @@ int X11PixelBuffer::setupShm()
if (!xim) if (!xim)
goto free_shminfo; goto free_shminfo;

View File

@ -5,10 +5,10 @@ References: bnc#864666
Index: vncviewer/Viewport.cxx Index: vncviewer/Viewport.cxx
=================================================================== ===================================================================
--- vncviewer/Viewport.cxx (revision 5162) --- vncviewer/Viewport.cxx.orig
+++ vncviewer/Viewport.cxx (working copy) +++ vncviewer/Viewport.cxx
@@ -753,7 +753,13 @@ @@ -1044,7 +1044,13 @@ rdr::U32 Viewport::translateKeyEvent(voi
return XK_VoidSymbol; return NoSymbol;
} }
- ucs = fl_utf8decode(keyText, NULL, NULL); - ucs = fl_utf8decode(keyText, NULL, NULL);

View File

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

View File

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