forked from pool/tigervnc
- Update to tigervnc 1.7.0.
* Multi-threaded decoder in the FLTK viewer * Improved SSH integration in the Java viewer * Fine grained lock down of Xvnc parameters * Compatibility with Xorg 1.18 * Lots of packaging fixes * Better compatibility with Vino, both in the FLTK and Java viewer - Removed patches: * U_add_allowoverride_parameter.patch * U_include-vencrypt-only-if-any-subtype-present.patch * U_tigervnc_clear_up_zlibinstream_reset_behaviour.patch * u_xserver118.patch OBS-URL: https://build.opensuse.org/package/show/X11:XOrg/tigervnc?expand=0&rev=96
This commit is contained in:
parent
b25521dd8c
commit
35fddca831
@ -1,164 +0,0 @@
|
|||||||
Git-commit: ef0dd758a3fad048c1f04e144b03a3e69b001f21
|
|
||||||
Patch-Mainline: To be upstreamed
|
|
||||||
Author: Michal Srb <michalsrb@gmail.com>
|
|
||||||
Subject: Add AllowOverride parameter.
|
|
||||||
References: fate#319319
|
|
||||||
|
|
||||||
Allows to specify which configuration parameters can be modified on runtime.
|
|
||||||
|
|
||||||
diff --git a/unix/xserver/hw/vnc/vncExt.c b/unix/xserver/hw/vnc/vncExt.c
|
|
||||||
index 43794da..b27115f 100644
|
|
||||||
--- a/unix/xserver/hw/vnc/vncExt.c
|
|
||||||
+++ b/unix/xserver/hw/vnc/vncExt.c
|
|
||||||
@@ -182,17 +182,16 @@ static int ProcVncExtSetParam(ClientPtr client)
|
|
||||||
rep.sequenceNumber = client->sequence;
|
|
||||||
|
|
||||||
/*
|
|
||||||
- * Allow to change only certain parameters.
|
|
||||||
- * Changing other parameters (for example PAM service name)
|
|
||||||
- * could have negative security impact.
|
|
||||||
+ * Prevent change of clipboard related parameters if clipboard is disabled.
|
|
||||||
*/
|
|
||||||
- if (strncasecmp(param, "desktop", 7) != 0 &&
|
|
||||||
- strncasecmp(param, "AcceptPointerEvents", 19) != 0 &&
|
|
||||||
- (vncNoClipboard || strncasecmp(param, "SendCutText", 11) != 0) &&
|
|
||||||
- (vncNoClipboard || strncasecmp(param, "AcceptCutText", 13) != 0))
|
|
||||||
+ if (vncNoClipboard &&
|
|
||||||
+ (strncasecmp(param, "SendCutText", 11) == 0 ||
|
|
||||||
+ strncasecmp(param, "AcceptCutText", 13) == 0))
|
|
||||||
+ goto deny;
|
|
||||||
+
|
|
||||||
+ if (!vncOverrideParam(param))
|
|
||||||
goto deny;
|
|
||||||
|
|
||||||
- vncSetParamSimple(param);
|
|
||||||
rep.success = 1;
|
|
||||||
|
|
||||||
// Send DesktopName update if desktop name has been changed
|
|
||||||
diff --git a/unix/xserver/hw/vnc/vncExtInit.cc b/unix/xserver/hw/vnc/vncExtInit.cc
|
|
||||||
index 863cd36..1d37493 100644
|
|
||||||
--- a/unix/xserver/hw/vnc/vncExtInit.cc
|
|
||||||
+++ b/unix/xserver/hw/vnc/vncExtInit.cc
|
|
||||||
@@ -20,6 +20,9 @@
|
|
||||||
#include <stdio.h>
|
|
||||||
#include <errno.h>
|
|
||||||
|
|
||||||
+#include <set>
|
|
||||||
+#include <string>
|
|
||||||
+
|
|
||||||
#include <rfb/Configuration.h>
|
|
||||||
#include <rfb/Logger_stdio.h>
|
|
||||||
#include <rfb/LogWriter.h>
|
|
||||||
@@ -52,6 +55,15 @@ int vncFbstride[MAXSCREENS];
|
|
||||||
|
|
||||||
int vncInetdSock = -1;
|
|
||||||
|
|
||||||
+struct CaseInsensitiveCompare {
|
|
||||||
+ bool operator() (const std::string &a, const std::string &b) const {
|
|
||||||
+ return strcasecmp(a.c_str(), b.c_str()) < 0;
|
|
||||||
+ }
|
|
||||||
+};
|
|
||||||
+
|
|
||||||
+typedef std::set<std::string, CaseInsensitiveCompare> ParamSet;
|
|
||||||
+static ParamSet allowOverrideSet;
|
|
||||||
+
|
|
||||||
rfb::StringParameter httpDir("httpd",
|
|
||||||
"Directory containing files to serve via HTTP",
|
|
||||||
"");
|
|
||||||
@@ -69,6 +81,9 @@ rfb::StringParameter interface("interface",
|
|
||||||
rfb::BoolParameter avoidShiftNumLock("AvoidShiftNumLock",
|
|
||||||
"Avoid fake Shift presses for keys affected by NumLock.",
|
|
||||||
true);
|
|
||||||
+rfb::StringParameter allowOverride("AllowOverride",
|
|
||||||
+ "Comma separated list of parameters that can be modified using VNC extension.",
|
|
||||||
+ "desktop,AcceptPointerEvents,SendCutText,AcceptCutText");
|
|
||||||
|
|
||||||
static PixelFormat vncGetPixelFormat(int scrIdx)
|
|
||||||
{
|
|
||||||
@@ -99,6 +114,19 @@ static PixelFormat vncGetPixelFormat(int scrIdx)
|
|
||||||
redShift, greenShift, blueShift);
|
|
||||||
}
|
|
||||||
|
|
||||||
+static void parseOverrideList(const char *text, ParamSet &out)
|
|
||||||
+{
|
|
||||||
+ for (const char* iter = text; ; ++iter) {
|
|
||||||
+ if (*iter == ',' || *iter == '\0') {
|
|
||||||
+ out.insert(std::string(text, iter));
|
|
||||||
+ text = iter + 1;
|
|
||||||
+
|
|
||||||
+ if (*iter == '\0')
|
|
||||||
+ break;
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
void vncExtensionInit(void)
|
|
||||||
{
|
|
||||||
int ret;
|
|
||||||
@@ -128,6 +156,10 @@ void vncExtensionInit(void)
|
|
||||||
try {
|
|
||||||
if (!initialised) {
|
|
||||||
rfb::initStdIOLoggers();
|
|
||||||
+
|
|
||||||
+ parseOverrideList(allowOverride, allowOverrideSet);
|
|
||||||
+ allowOverride.setImmutable();
|
|
||||||
+
|
|
||||||
initialised = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
@@ -379,3 +411,16 @@ void vncRefreshScreenLayout(int scrIdx)
|
|
||||||
{
|
|
||||||
desktop[scrIdx]->refreshScreenLayout();
|
|
||||||
}
|
|
||||||
+
|
|
||||||
+int vncOverrideParam(const char *nameAndValue)
|
|
||||||
+{
|
|
||||||
+ const char* equalSign = strchr(nameAndValue, '=');
|
|
||||||
+ if (!equalSign)
|
|
||||||
+ return 0;
|
|
||||||
+
|
|
||||||
+ std::string key(nameAndValue, equalSign);
|
|
||||||
+ if (allowOverrideSet.find(key) == allowOverrideSet.end())
|
|
||||||
+ return 0;
|
|
||||||
+
|
|
||||||
+ return rfb::Configuration::setParam(nameAndValue);
|
|
||||||
+}
|
|
||||||
diff --git a/unix/xserver/hw/vnc/vncExtInit.h b/unix/xserver/hw/vnc/vncExtInit.h
|
|
||||||
index 6430ac0..be6487c 100644
|
|
||||||
--- a/unix/xserver/hw/vnc/vncExtInit.h
|
|
||||||
+++ b/unix/xserver/hw/vnc/vncExtInit.h
|
|
||||||
@@ -90,6 +90,8 @@ void vncPreScreenResize(int scrIdx);
|
|
||||||
void vncPostScreenResize(int scrIdx, int success, int width, int height);
|
|
||||||
void vncRefreshScreenLayout(int scrIdx);
|
|
||||||
|
|
||||||
+int vncOverrideParam(const char *nameAndValue);
|
|
||||||
+
|
|
||||||
#ifdef __cplusplus
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
diff --git a/unix/xserver/hw/vnc/Xvnc.man b/unix/xserver/hw/vnc/Xvnc.man
|
|
||||||
index 4a83315..a4d9f8d 100644
|
|
||||||
--- a/unix/xserver/hw/vnc/Xvnc.man
|
|
||||||
+++ b/unix/xserver/hw/vnc/Xvnc.man
|
|
||||||
@@ -300,6 +300,21 @@ Key affected by NumLock often require a fake Shift to be inserted in order
|
|
||||||
for the correct symbol to be generated. Turning on this option avoids these
|
|
||||||
extra fake Shift events but may result in a slightly different symbol
|
|
||||||
(e.g. a Return instead of a keypad Enter).
|
|
||||||
+.
|
|
||||||
+.TP
|
|
||||||
+.B \-AllowOverride
|
|
||||||
+Comma separated list of parameters that can be modified using VNC extension.
|
|
||||||
+Parameters can be modified for example using \fBvncconfig\fP(1) program from
|
|
||||||
+inside a running session.
|
|
||||||
+
|
|
||||||
+Allowing override of parameters such as \fBPAMService\fP or \fBPasswordFile\fP
|
|
||||||
+can negatively impact security if Xvnc runs under different user than the
|
|
||||||
+programs allowed to override the parameters.
|
|
||||||
+
|
|
||||||
+When \fBNoClipboard\fP parameter is set, allowing override of \fBSendCutText\fP
|
|
||||||
+and \fBAcceptCutText\fP has no effect.
|
|
||||||
+
|
|
||||||
+Default is \fBdesktop,AcceptPointerEvents,SendCutText,AcceptCutText\fP.
|
|
||||||
|
|
||||||
.SH USAGE WITH INETD
|
|
||||||
By configuring the \fBinetd\fP(1) service appropriately, Xvnc can be launched
|
|
@ -1,22 +0,0 @@
|
|||||||
Index: common/rfb/Security.cxx
|
|
||||||
===================================================================
|
|
||||||
--- common/rfb/Security.cxx (revision 5186)
|
|
||||||
+++ common/rfb/Security.cxx (working copy)
|
|
||||||
@@ -71,10 +71,15 @@
|
|
||||||
list<rdr::U8> result;
|
|
||||||
list<U32>::iterator i;
|
|
||||||
|
|
||||||
- result.push_back(secTypeVeNCrypt);
|
|
||||||
+ bool VeNCryptPresent = false;
|
|
||||||
for (i = enabledSecTypes.begin(); i != enabledSecTypes.end(); i++)
|
|
||||||
- if (*i < 0x100)
|
|
||||||
+ if (*i < 0x100) {
|
|
||||||
result.push_back(*i);
|
|
||||||
+ } else {
|
|
||||||
+ if(!VeNCryptPresent)
|
|
||||||
+ result.push_back(secTypeVeNCrypt);
|
|
||||||
+ VeNCryptPresent = true;
|
|
||||||
+ }
|
|
||||||
|
|
||||||
return result;
|
|
||||||
}
|
|
@ -1,159 +0,0 @@
|
|||||||
From 6f318e4451fcb45054408eaf568ca1c30c2d1ab6 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Pierre Ossman <ossman@cendio.se>
|
|
||||||
Date: Wed, 11 Nov 2015 13:11:09 +0100
|
|
||||||
Subject: [PATCH] Clear up ZlibInStream::reset() behaviour
|
|
||||||
|
|
||||||
It previously only did a reset of the ZlibInStream object, not the
|
|
||||||
underlying zlib stream. It also had the side effect of flushing
|
|
||||||
the underlying stream and disassociating from it.
|
|
||||||
|
|
||||||
Clear things up by changing the naming, and introducing a proper
|
|
||||||
reset function (which is needed by the Tight decoder).
|
|
||||||
|
|
||||||
Index: tigervnc-1.5.0/common/rdr/ZlibInStream.cxx
|
|
||||||
===================================================================
|
|
||||||
--- tigervnc-1.5.0.orig/common/rdr/ZlibInStream.cxx
|
|
||||||
+++ tigervnc-1.5.0/common/rdr/ZlibInStream.cxx
|
|
||||||
@@ -16,6 +16,8 @@
|
|
||||||
* USA.
|
|
||||||
*/
|
|
||||||
|
|
||||||
+#include <assert.h>
|
|
||||||
+
|
|
||||||
#include <rdr/ZlibInStream.h>
|
|
||||||
#include <rdr/Exception.h>
|
|
||||||
#include <zlib.h>
|
|
||||||
@@ -26,26 +28,16 @@ enum { DEFAULT_BUF_SIZE = 16384 };
|
|
||||||
|
|
||||||
ZlibInStream::ZlibInStream(int bufSize_)
|
|
||||||
: underlying(0), bufSize(bufSize_ ? bufSize_ : DEFAULT_BUF_SIZE), offset(0),
|
|
||||||
- bytesIn(0)
|
|
||||||
+ zs(NULL), bytesIn(0)
|
|
||||||
{
|
|
||||||
- zs = new z_stream;
|
|
||||||
- zs->zalloc = Z_NULL;
|
|
||||||
- zs->zfree = Z_NULL;
|
|
||||||
- zs->opaque = Z_NULL;
|
|
||||||
- zs->next_in = Z_NULL;
|
|
||||||
- zs->avail_in = 0;
|
|
||||||
- if (inflateInit(zs) != Z_OK) {
|
|
||||||
- delete zs;
|
|
||||||
- throw Exception("ZlibInStream: inflateInit failed");
|
|
||||||
- }
|
|
||||||
ptr = end = start = new U8[bufSize];
|
|
||||||
+ init();
|
|
||||||
}
|
|
||||||
|
|
||||||
ZlibInStream::~ZlibInStream()
|
|
||||||
{
|
|
||||||
+ deinit();
|
|
||||||
delete [] start;
|
|
||||||
- inflateEnd(zs);
|
|
||||||
- delete zs;
|
|
||||||
}
|
|
||||||
|
|
||||||
void ZlibInStream::setUnderlying(InStream* is, int bytesIn_)
|
|
||||||
@@ -60,7 +52,7 @@ int ZlibInStream::pos()
|
|
||||||
return offset + ptr - start;
|
|
||||||
}
|
|
||||||
|
|
||||||
-void ZlibInStream::reset()
|
|
||||||
+void ZlibInStream::removeUnderlying()
|
|
||||||
{
|
|
||||||
ptr = end = start;
|
|
||||||
if (!underlying) return;
|
|
||||||
@@ -72,6 +64,38 @@ void ZlibInStream::reset()
|
|
||||||
underlying = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
+void ZlibInStream::reset()
|
|
||||||
+{
|
|
||||||
+ deinit();
|
|
||||||
+ init();
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+void ZlibInStream::init()
|
|
||||||
+{
|
|
||||||
+ assert(zs == NULL);
|
|
||||||
+
|
|
||||||
+ zs = new z_stream;
|
|
||||||
+ zs->zalloc = Z_NULL;
|
|
||||||
+ zs->zfree = Z_NULL;
|
|
||||||
+ zs->opaque = Z_NULL;
|
|
||||||
+ zs->next_in = Z_NULL;
|
|
||||||
+ zs->avail_in = 0;
|
|
||||||
+ if (inflateInit(zs) != Z_OK) {
|
|
||||||
+ delete zs;
|
|
||||||
+ zs = NULL;
|
|
||||||
+ throw Exception("ZlibInStream: inflateInit failed");
|
|
||||||
+ }
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+void ZlibInStream::deinit()
|
|
||||||
+{
|
|
||||||
+ assert(zs != NULL);
|
|
||||||
+ removeUnderlying();
|
|
||||||
+ inflateEnd(zs);
|
|
||||||
+ delete zs;
|
|
||||||
+ zs = NULL;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
int ZlibInStream::overrun(int itemSize, int nItems, bool wait)
|
|
||||||
{
|
|
||||||
if (itemSize > bufSize)
|
|
||||||
Index: tigervnc-1.5.0/common/rdr/ZlibInStream.h
|
|
||||||
===================================================================
|
|
||||||
--- tigervnc-1.5.0.orig/common/rdr/ZlibInStream.h
|
|
||||||
+++ tigervnc-1.5.0/common/rdr/ZlibInStream.h
|
|
||||||
@@ -38,11 +38,15 @@ namespace rdr {
|
|
||||||
virtual ~ZlibInStream();
|
|
||||||
|
|
||||||
void setUnderlying(InStream* is, int bytesIn);
|
|
||||||
- void reset();
|
|
||||||
+ void removeUnderlying();
|
|
||||||
int pos();
|
|
||||||
+ void reset();
|
|
||||||
|
|
||||||
private:
|
|
||||||
|
|
||||||
+ void init();
|
|
||||||
+ void deinit();
|
|
||||||
+
|
|
||||||
int overrun(int itemSize, int nItems, bool wait);
|
|
||||||
bool decompress(bool wait);
|
|
||||||
|
|
||||||
Index: tigervnc-1.5.0/common/rfb/zrleDecode.h
|
|
||||||
===================================================================
|
|
||||||
--- tigervnc-1.5.0.orig/common/rfb/zrleDecode.h
|
|
||||||
+++ tigervnc-1.5.0/common/rfb/zrleDecode.h
|
|
||||||
@@ -177,7 +177,7 @@ void ZRLE_DECODE (const Rect& r, rdr::In
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
- zis->reset();
|
|
||||||
+ zis->removeUnderlying();
|
|
||||||
}
|
|
||||||
|
|
||||||
#undef ZRLE_DECODE
|
|
||||||
Index: tigervnc-1.5.0/common/rfb/tightDecode.h
|
|
||||||
===================================================================
|
|
||||||
--- tigervnc-1.5.0.orig/common/rfb/tightDecode.h
|
|
||||||
+++ tigervnc-1.5.0/common/rfb/tightDecode.h
|
|
||||||
@@ -59,7 +59,7 @@ void TIGHT_DECODE (const Rect& r)
|
|
||||||
|
|
||||||
rdr::U8 comp_ctl = is->readU8();
|
|
||||||
|
|
||||||
- // Flush zlib streams if we are told by the server to do so.
|
|
||||||
+ // Reset zlib streams if we are told by the server to do so.
|
|
||||||
for (int i = 0; i < 4; i++) {
|
|
||||||
if (comp_ctl & 1) {
|
|
||||||
zis[i].reset();
|
|
||||||
@@ -231,7 +231,7 @@ void TIGHT_DECODE (const Rect& r)
|
|
||||||
delete [] netbuf;
|
|
||||||
|
|
||||||
if (streamId != -1) {
|
|
||||||
- zis[streamId].reset();
|
|
||||||
+ zis[streamId].removeUnderlying();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
|||||||
Index: tigervnc-1.5.0/vncviewer/DesktopWindow.cxx
|
Index: tigervnc-1.7.0/vncviewer/DesktopWindow.cxx
|
||||||
===================================================================
|
===================================================================
|
||||||
--- tigervnc-1.5.0.orig/vncviewer/DesktopWindow.cxx
|
--- tigervnc-1.7.0.orig/vncviewer/DesktopWindow.cxx
|
||||||
+++ tigervnc-1.5.0/vncviewer/DesktopWindow.cxx
|
+++ tigervnc-1.7.0/vncviewer/DesktopWindow.cxx
|
||||||
@@ -177,6 +177,8 @@ DesktopWindow::~DesktopWindow()
|
@@ -177,6 +177,8 @@ DesktopWindow::~DesktopWindow()
|
||||||
|
|
||||||
OptionsDialog::removeCallback(handleOptions);
|
OptionsDialog::removeCallback(handleOptions);
|
||||||
@ -11,11 +11,11 @@ Index: tigervnc-1.5.0/vncviewer/DesktopWindow.cxx
|
|||||||
// 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
|
||||||
}
|
}
|
||||||
Index: tigervnc-1.5.0/vncviewer/Viewport.cxx
|
Index: tigervnc-1.7.0/vncviewer/Viewport.cxx
|
||||||
===================================================================
|
===================================================================
|
||||||
--- tigervnc-1.5.0.orig/vncviewer/Viewport.cxx
|
--- tigervnc-1.7.0.orig/vncviewer/Viewport.cxx
|
||||||
+++ tigervnc-1.5.0/vncviewer/Viewport.cxx
|
+++ tigervnc-1.7.0/vncviewer/Viewport.cxx
|
||||||
@@ -139,6 +139,11 @@ Viewport::Viewport(int w, int h, const r
|
@@ -140,6 +140,11 @@ Viewport::Viewport(int w, int h, const r
|
||||||
|
|
||||||
Viewport::~Viewport()
|
Viewport::~Viewport()
|
||||||
{
|
{
|
||||||
@ -27,10 +27,10 @@ Index: tigervnc-1.5.0/vncviewer/Viewport.cxx
|
|||||||
// 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(handlePointerTimeout, this);
|
Fl::remove_timeout(handlePointerTimeout, this);
|
||||||
Index: tigervnc-1.5.0/vncviewer/vncviewer.cxx
|
Index: tigervnc-1.7.0/vncviewer/vncviewer.cxx
|
||||||
===================================================================
|
===================================================================
|
||||||
--- tigervnc-1.5.0.orig/vncviewer/vncviewer.cxx
|
--- tigervnc-1.7.0.orig/vncviewer/vncviewer.cxx
|
||||||
+++ tigervnc-1.5.0/vncviewer/vncviewer.cxx
|
+++ tigervnc-1.7.0/vncviewer/vncviewer.cxx
|
||||||
@@ -107,6 +107,8 @@ static const char *about_text()
|
@@ -107,6 +107,8 @@ static const char *about_text()
|
||||||
return buffer;
|
return buffer;
|
||||||
}
|
}
|
||||||
@ -40,7 +40,7 @@ Index: tigervnc-1.5.0/vncviewer/vncviewer.cxx
|
|||||||
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
|
||||||
@@ -158,6 +160,16 @@ static void CleanupSignalHandler(int sig
|
@@ -177,6 +179,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(_("Termination signal %d has been received. TigerVNC Viewer will now exit."), sig);
|
vlog.info(_("Termination signal %d has been received. TigerVNC Viewer will now exit."), sig);
|
||||||
@ -57,7 +57,7 @@ Index: tigervnc-1.5.0/vncviewer/vncviewer.cxx
|
|||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -460,11 +472,19 @@ int main(int argc, char** argv)
|
@@ -481,11 +493,19 @@ int main(int argc, char** argv)
|
||||||
|
|
||||||
init_fltk();
|
init_fltk();
|
||||||
|
|
||||||
@ -77,12 +77,12 @@ Index: tigervnc-1.5.0/vncviewer/vncviewer.cxx
|
|||||||
Configuration::enableViewerParams();
|
Configuration::enableViewerParams();
|
||||||
|
|
||||||
/* Load the default parameter settings */
|
/* Load the default parameter settings */
|
||||||
@@ -577,7 +597,7 @@ int main(int argc, char** argv)
|
@@ -602,7 +622,7 @@ int main(int argc, char** argv)
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
- CConn *cc = new CConn(vncServerName, sock);
|
- CConn *cc = new CConn(vncServerName, sock);
|
||||||
+ cc = new CConn(vncServerName, sock);
|
+ cc = new CConn(vncServerName, sock);
|
||||||
|
|
||||||
while (!exitMainloop) {
|
while (!exitMainloop)
|
||||||
int next_timer;
|
run_mainloop();
|
||||||
|
@ -9,5 +9,5 @@ Index: tigervnc-1.6.0/vncviewer/CConn.cxx
|
|||||||
+ if (encoding == pseudoEncodingDesktopSize)
|
+ if (encoding == pseudoEncodingDesktopSize)
|
||||||
+ setDesktopSize( r.width(), r.height() );
|
+ setDesktopSize( r.width(), r.height() );
|
||||||
|
|
||||||
if (!Decoder::supported(encoding)) {
|
CConnection::dataRect(r, encoding);
|
||||||
// TRANSLATORS: Refers to a VNC protocol encoding type
|
|
||||||
|
@ -1,3 +1,19 @@
|
|||||||
|
-------------------------------------------------------------------
|
||||||
|
Tue Sep 13 14:10:08 UTC 2016 - msrb@suse.com
|
||||||
|
|
||||||
|
- Update to tigervnc 1.7.0.
|
||||||
|
* Multi-threaded decoder in the FLTK viewer
|
||||||
|
* Improved SSH integration in the Java viewer
|
||||||
|
* Fine grained lock down of Xvnc parameters
|
||||||
|
* Compatibility with Xorg 1.18
|
||||||
|
* Lots of packaging fixes
|
||||||
|
* Better compatibility with Vino, both in the FLTK and Java viewer
|
||||||
|
- Removed patches:
|
||||||
|
* U_add_allowoverride_parameter.patch
|
||||||
|
* U_include-vencrypt-only-if-any-subtype-present.patch
|
||||||
|
* U_tigervnc_clear_up_zlibinstream_reset_behaviour.patch
|
||||||
|
* u_xserver118.patch
|
||||||
|
|
||||||
-------------------------------------------------------------------
|
-------------------------------------------------------------------
|
||||||
Mon Aug 8 20:05:19 UTC 2016 - eich@suse.com
|
Mon Aug 8 20:05:19 UTC 2016 - eich@suse.com
|
||||||
|
|
||||||
|
@ -23,7 +23,7 @@
|
|||||||
%define tlscert %{_sysconfdir}/vnc/tls.cert
|
%define tlscert %{_sysconfdir}/vnc/tls.cert
|
||||||
|
|
||||||
Name: tigervnc
|
Name: tigervnc
|
||||||
Version: 1.6.0
|
Version: 1.7.0
|
||||||
Release: 0
|
Release: 0
|
||||||
Provides: tightvnc = 1.3.9
|
Provides: tightvnc = 1.3.9
|
||||||
Obsoletes: tightvnc < 1.3.9
|
Obsoletes: tightvnc < 1.3.9
|
||||||
@ -113,15 +113,11 @@ Patch1: tigervnc-newfbsize.patch
|
|||||||
Patch2: tigervnc-clean-pressed-key-on-exit.patch
|
Patch2: tigervnc-clean-pressed-key-on-exit.patch
|
||||||
Patch3: u_tigervnc-ignore-epipe-on-write.patch
|
Patch3: u_tigervnc-ignore-epipe-on-write.patch
|
||||||
Patch4: n_tigervnc-date-time.patch
|
Patch4: n_tigervnc-date-time.patch
|
||||||
Patch5: U_include-vencrypt-only-if-any-subtype-present.patch
|
Patch5: u_tigervnc-cve-2014-8240.patch
|
||||||
Patch6: u_tigervnc-cve-2014-8240.patch
|
Patch6: u_tigervnc-add-autoaccept-parameter.patch
|
||||||
Patch7: u_tigervnc-add-autoaccept-parameter.patch
|
Patch7: u_tigervnc_update_default_vncxstartup.patch
|
||||||
Patch8: u_xserver118.patch
|
Patch8: u_build_libXvnc_as_separate_library.patch
|
||||||
Patch9: u_tigervnc_update_default_vncxstartup.patch
|
Patch9: u_tigervnc-show-unencrypted-warning.patch
|
||||||
Patch10: U_add_allowoverride_parameter.patch
|
|
||||||
Patch11: u_build_libXvnc_as_separate_library.patch
|
|
||||||
Patch12: u_tigervnc-show-unencrypted-warning.patch
|
|
||||||
Patch13: U_tigervnc_clear_up_zlibinstream_reset_behaviour.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),
|
||||||
@ -175,15 +171,11 @@ cp -r /usr/src/xserver/* unix/xserver/
|
|||||||
%patch2 -p1
|
%patch2 -p1
|
||||||
%patch3 -p0
|
%patch3 -p0
|
||||||
%patch4 -p1
|
%patch4 -p1
|
||||||
%patch5 -p0
|
%patch5 -p1
|
||||||
%patch6 -p1
|
%patch6 -p1
|
||||||
%patch7 -p1
|
%patch7 -p1
|
||||||
%patch8 -p1
|
%patch8 -p1
|
||||||
%patch9 -p1
|
%patch9 -p1
|
||||||
%patch10 -p1
|
|
||||||
%patch11 -p1
|
|
||||||
%patch12 -p1
|
|
||||||
%patch13 -p1
|
|
||||||
|
|
||||||
pushd unix/xserver
|
pushd unix/xserver
|
||||||
patch -p1 < ../xserver117.patch
|
patch -p1 < ../xserver117.patch
|
||||||
@ -222,7 +214,7 @@ popd
|
|||||||
|
|
||||||
# Build java client
|
# Build java client
|
||||||
pushd java
|
pushd java
|
||||||
cmake -DCMAKE_INSTALL_PREFIX:PATH=%{_prefix}
|
cmake -DCMAKE_INSTALL_PREFIX:PATH=%{_prefix} -DJAVACFLAGS="-encoding utf8"
|
||||||
make %{?_smp_mflags}
|
make %{?_smp_mflags}
|
||||||
popd
|
popd
|
||||||
|
|
||||||
@ -301,6 +293,24 @@ fi
|
|||||||
%ghost %_sysconfdir/alternatives/vncviewer.1.gz
|
%ghost %_sysconfdir/alternatives/vncviewer.1.gz
|
||||||
%endif
|
%endif
|
||||||
|
|
||||||
|
%dir %_datadir/icons/hicolor/16x16
|
||||||
|
%dir %_datadir/icons/hicolor/16x16/apps
|
||||||
|
%dir %_datadir/icons/hicolor/22x22
|
||||||
|
%dir %_datadir/icons/hicolor/22x22/apps
|
||||||
|
%dir %_datadir/icons/hicolor/24x24
|
||||||
|
%dir %_datadir/icons/hicolor/24x24/apps
|
||||||
|
%dir %_datadir/icons/hicolor/32x32
|
||||||
|
%dir %_datadir/icons/hicolor/32x32/apps
|
||||||
|
%dir %_datadir/icons/hicolor/48x48
|
||||||
|
%dir %_datadir/icons/hicolor/48x48/apps
|
||||||
|
%dir %_datadir/icons/hicolor/scalable
|
||||||
|
%dir %_datadir/icons/hicolor/scalable/apps
|
||||||
|
|
||||||
|
%_datadir/icons/hicolor/*/apps/tigervnc.png
|
||||||
|
%_datadir/icons/hicolor/scalable/apps/tigervnc.svg
|
||||||
|
|
||||||
|
%_datadir/applications/vncviewer.desktop
|
||||||
|
|
||||||
%files -n xorg-x11-Xvnc
|
%files -n xorg-x11-Xvnc
|
||||||
%doc LICENCE.TXT README.txt
|
%doc LICENCE.TXT README.txt
|
||||||
%defattr(-,root,root)
|
%defattr(-,root,root)
|
||||||
|
@ -7,13 +7,14 @@ If the VNC server closes connection after our last read and before this write, w
|
|||||||
This situation is no error, however, we should quit normally same as when we find out that connection was closed during read.
|
This situation is no error, however, we should quit normally same as when we find out that connection was closed during read.
|
||||||
Index: common/rdr/FdOutStream.cxx
|
Index: common/rdr/FdOutStream.cxx
|
||||||
===================================================================
|
===================================================================
|
||||||
--- common/rdr/FdOutStream.cxx (revision 5178)
|
--- common/rdr/FdOutStream.cxx.orig
|
||||||
+++ common/rdr/FdOutStream.cxx (working copy)
|
+++ common/rdr/FdOutStream.cxx
|
||||||
@@ -225,7 +225,12 @@
|
@@ -191,8 +191,12 @@ int FdOutStream::writeWithTimeout(const
|
||||||
// network connections. Should in fact never ever happen...
|
n = ::write(fd, data, length);
|
||||||
} while (n < 0 && (errno == EWOULDBLOCK));
|
} while (n < 0 && (errno == EINTR));
|
||||||
|
|
||||||
- if (n < 0) throw SystemException("write",errno);
|
- if (n < 0)
|
||||||
|
- throw SystemException("write", errno);
|
||||||
+ if (n < 0) {
|
+ if (n < 0) {
|
||||||
+ if(errno == EPIPE)
|
+ if(errno == EPIPE)
|
||||||
+ n = length; // Ignore EPIPE and fake successfull write, it doesn't matter that we are writing to closed socket, we will find out once we try to read from it.
|
+ n = length; // Ignore EPIPE and fake successfull write, it doesn't matter that we are writing to closed socket, we will find out once we try to read from it.
|
||||||
|
@ -1,35 +0,0 @@
|
|||||||
Subject: Support X server 1.18.0
|
|
||||||
Author: Michal Srb <msrb@suse.com>
|
|
||||||
Patch-Mainline: To be upstreamed
|
|
||||||
|
|
||||||
diff --git a/unix/xserver/hw/vnc/xorg-version.h b/unix/xserver/hw/vnc/xorg-version.h
|
|
||||||
index 8cc1c86..60610cb 100644
|
|
||||||
--- a/unix/xserver/hw/vnc/xorg-version.h
|
|
||||||
+++ b/unix/xserver/hw/vnc/xorg-version.h
|
|
||||||
@@ -48,8 +48,10 @@
|
|
||||||
#define XORG 116
|
|
||||||
#elif XORG_VERSION_CURRENT < ((1 * 10000000) + (17 * 100000) + (99 * 1000))
|
|
||||||
#define XORG 117
|
|
||||||
+#elif XORG_VERSION_CURRENT < ((1 * 10000000) + (18 * 100000) + (99 * 1000))
|
|
||||||
+#define XORG 118
|
|
||||||
#else
|
|
||||||
-#error "X.Org newer than 1.17 is not supported"
|
|
||||||
+#error "X.Org newer than 1.18 is not supported"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif
|
|
||||||
index 4c90a95..55befa7 100644
|
|
||||||
--- a/unix/xserver/hw/vnc/Input.c
|
|
||||||
+++ b/unix/xserver/hw/vnc/Input.c
|
|
||||||
@@ -300,8 +300,10 @@ static inline void pressKey(DeviceIntPtr dev, int kc, Bool down, const char *msg
|
|
||||||
#if XORG < 111
|
|
||||||
n = GetKeyboardEvents(eventq, dev, action, kc);
|
|
||||||
enqueueEvents(dev, n);
|
|
||||||
-#else
|
|
||||||
+#elif XORG < 118
|
|
||||||
QueueKeyboardEvents(dev, action, kc, NULL);
|
|
||||||
+#else
|
|
||||||
+ QueueKeyboardEvents(dev, action, kc);
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
3
v1.7.0.tar.gz
Normal file
3
v1.7.0.tar.gz
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
version https://git-lfs.github.com/spec/v1
|
||||||
|
oid sha256:4aa704747b4f8f1d59768b663c488fa937e6783db2a46ae407cd2a599cfbf8b1
|
||||||
|
size 1405952
|
Loading…
Reference in New Issue
Block a user