Package: release.debian.org Severity: normal User: release.debian....@packages.debian.org Usertags: unblock X-Debbugs-Cc: pkg-tigervnc-de...@lists.alioth.debian.org
Please unblock package tigervnc [ Reason ] Fix for bug #985614. [ Impact ] Sharing a VNC session is not possible. [ Tests ] I applied the bug fix from upstream and tested that this fixes the reported bug #985614. [ Risks ] TigerVNC is a leaf package, the changes are not complex, and the applied patch has already been tested by upstream. [ Checklist ] [x] all changes are documented in the d/changelog [x] I reviewed all changes and I approve them [x] attach debdiff against the package in testing unblock tigervnc/1.11.0+dfsg-2
diff -Nru tigervnc-1.11.0+dfsg/debian/changelog tigervnc-1.11.0+dfsg/debian/changelog --- tigervnc-1.11.0+dfsg/debian/changelog 2021-02-22 18:19:01.000000000 +0100 +++ tigervnc-1.11.0+dfsg/debian/changelog 2021-03-22 22:21:28.000000000 +0100 @@ -1,3 +1,11 @@ +tigervnc (1.11.0+dfsg-2) unstable; urgency=medium + + [ Joachim Falk ] + * Properly handle boolean configuration values in tigervnc-standalone-server + (Closes: #985614). + + -- Joachim Falk <joachim.f...@gmx.de> Mon, 22 Mar 2021 22:21:54 +0100 + tigervnc (1.11.0+dfsg-1) unstable; urgency=medium [ Joachim Falk ] diff -Nru tigervnc-1.11.0+dfsg/debian/helpers/usr/share/perl5/TigerVNC/Config.pm tigervnc-1.11.0+dfsg/debian/helpers/usr/share/perl5/TigerVNC/Config.pm --- tigervnc-1.11.0+dfsg/debian/helpers/usr/share/perl5/TigerVNC/Config.pm 2021-02-21 15:24:17.000000000 +0100 +++ tigervnc-1.11.0+dfsg/debian/helpers/usr/share/perl5/TigerVNC/Config.pm 2021-03-22 13:46:46.000000000 +0100 @@ -402,7 +402,7 @@ &{$override}('shared', undef); } } elsif (defined $options->{'shared'}) { - return $options->{'shared'} eq 'never'; + return $options->{'shared'} eq 'never' ? 1 : 0; } else { return undef; } @@ -415,7 +415,7 @@ &{$override}('shared', undef); } } elsif (defined $options->{'shared'}) { - return $options->{'shared'} eq 'always'; + return $options->{'shared'} eq 'always' ? 1 : 0; } else { return undef; } diff -Nru tigervnc-1.11.0+dfsg/debian/patches/0300-fix-Xtigervnc-boolparam-parsing.patch tigervnc-1.11.0+dfsg/debian/patches/0300-fix-Xtigervnc-boolparam-parsing.patch --- tigervnc-1.11.0+dfsg/debian/patches/0300-fix-Xtigervnc-boolparam-parsing.patch 1970-01-01 01:00:00.000000000 +0100 +++ tigervnc-1.11.0+dfsg/debian/patches/0300-fix-Xtigervnc-boolparam-parsing.patch 2021-03-22 13:58:35.000000000 +0100 @@ -0,0 +1,142 @@ +Description: Tolerate specifying -BoolParam 0 and similar + . + This is needed by vncserver which doesn't know which parameters are boolean, + and it cannot use the -Param=Value form as that isn't tolerated by the Xorg + code. + . + This patch is upstream commit 38c6848b30cb1908171f2b4628e345fbf6727b39 +Author: Pierre Ossman <oss...@cendio.se> + +diff --git a/unix/vncserver/vncserver.in b/unix/vncserver/vncserver.in +index 25fbbd31..261b258f 100755 +--- a/unix/vncserver/vncserver.in ++++ b/unix/vncserver/vncserver.in +@@ -107,7 +107,7 @@ $default_opts{rfbwait} = 30000; + $default_opts{rfbauth} = "$vncUserDir/passwd"; + $default_opts{rfbport} = $vncPort; + $default_opts{fp} = $fontPath if ($fontPath); +-$default_opts{pn} = ""; ++$default_opts{pn} = undef; + + # Load user-overrideable system defaults + LoadConfig($vncSystemConfigDefaultsFile); +@@ -242,13 +242,13 @@ push(@cmd, "@CMAKE_INSTALL_FULL_BINDIR@/Xvnc", ":$displayNumber"); + + foreach my $k (sort keys %config) { + push(@cmd, "-$k"); +- push(@cmd, $config{$k}) if $config{$k}; ++ push(@cmd, $config{$k}) if defined($config{$k}); + delete $default_opts{$k}; # file options take precedence + } + + foreach my $k (sort keys %default_opts) { + push(@cmd, "-$k"); +- push(@cmd, $default_opts{$k}) if $default_opts{$k}; ++ push(@cmd, $default_opts{$k}) if defined($default_opts{$k}); + } + + warn "\nNew '$desktopName' desktop is $host:$displayNumber\n\n"; +@@ -291,7 +291,7 @@ sub LoadConfig { + # current config file being loaded defined the logical opposite setting + # (NeverShared vs. AlwaysShared, etc etc). + $toggle = lc($1); # must normalize key case +- $config{$toggle} = $k; ++ $config{$toggle} = undef; + } + } + close(IN); +diff --git a/unix/xserver/hw/vnc/RFBGlue.cc b/unix/xserver/hw/vnc/RFBGlue.cc +index f108fae4..7c32bea8 100644 +--- a/unix/xserver/hw/vnc/RFBGlue.cc ++++ b/unix/xserver/hw/vnc/RFBGlue.cc +@@ -143,6 +143,22 @@ const char* vncGetParamDesc(const char *name) + return param->getDescription(); + } + ++int vncIsParamBool(const char *name) ++{ ++ VoidParameter *param; ++ BoolParameter *bparam; ++ ++ param = rfb::Configuration::getParam(name); ++ if (param == NULL) ++ return false; ++ ++ bparam = dynamic_cast<BoolParameter*>(param); ++ if (bparam == NULL) ++ return false; ++ ++ return true; ++} ++ + int vncGetParamCount(void) + { + int count; +diff --git a/unix/xserver/hw/vnc/RFBGlue.h b/unix/xserver/hw/vnc/RFBGlue.h +index 112405b8..695cea10 100644 +--- a/unix/xserver/hw/vnc/RFBGlue.h ++++ b/unix/xserver/hw/vnc/RFBGlue.h +@@ -41,6 +41,7 @@ int vncSetParam(const char *name, const char *value); + int vncSetParamSimple(const char *nameAndValue); + char* vncGetParam(const char *name); + const char* vncGetParamDesc(const char *name); ++int vncIsParamBool(const char *name); + + int vncGetParamCount(void); + char *vncGetParamList(void); +diff --git a/unix/xserver/hw/vnc/xvnc.c b/unix/xserver/hw/vnc/xvnc.c +index 4eb0b0b1..5744acac 100644 +--- a/unix/xserver/hw/vnc/xvnc.c ++++ b/unix/xserver/hw/vnc/xvnc.c +@@ -618,6 +618,20 @@ ddxProcessArgument(int argc, char *argv[], int i) + exit(0); + } + ++ /* We need to resolve an ambiguity for booleans */ ++ if (argv[i][0] == '-' && i+1 < argc && ++ vncIsParamBool(&argv[i][1])) { ++ if ((strcasecmp(argv[i+1], "0") == 0) || ++ (strcasecmp(argv[i+1], "1") == 0) || ++ (strcasecmp(argv[i+1], "true") == 0) || ++ (strcasecmp(argv[i+1], "false") == 0) || ++ (strcasecmp(argv[i+1], "yes") == 0) || ++ (strcasecmp(argv[i+1], "no") == 0)) { ++ vncSetParam(&argv[i][1], argv[i+1]); ++ return 2; ++ } ++ } ++ + if (vncSetParamSimple(argv[i])) + return 1; + +diff --git a/vncviewer/vncviewer.cxx b/vncviewer/vncviewer.cxx +index d4dd3063..77ba3d3f 100644 +--- a/vncviewer/vncviewer.cxx ++++ b/vncviewer/vncviewer.cxx +@@ -556,6 +556,26 @@ int main(int argc, char** argv) + } + + for (int i = 1; i < argc;) { ++ /* We need to resolve an ambiguity for booleans */ ++ if (argv[i][0] == '-' && i+1 < argc) { ++ VoidParameter *param; ++ ++ param = Configuration::getParam(&argv[i][1]); ++ if ((param != NULL) && ++ (dynamic_cast<BoolParameter*>(param) != NULL)) { ++ if ((strcasecmp(argv[i+1], "0") == 0) || ++ (strcasecmp(argv[i+1], "1") == 0) || ++ (strcasecmp(argv[i+1], "true") == 0) || ++ (strcasecmp(argv[i+1], "false") == 0) || ++ (strcasecmp(argv[i+1], "yes") == 0) || ++ (strcasecmp(argv[i+1], "no") == 0)) { ++ param->setParam(argv[i+1]); ++ i += 2; ++ continue; ++ } ++ } ++ } ++ + if (Configuration::setParam(argv[i])) { + i++; + continue; diff -Nru tigervnc-1.11.0+dfsg/debian/patches/series tigervnc-1.11.0+dfsg/debian/patches/series --- tigervnc-1.11.0+dfsg/debian/patches/series 2021-02-21 15:24:54.000000000 +0100 +++ tigervnc-1.11.0+dfsg/debian/patches/series 2021-03-22 13:59:06.000000000 +0100 @@ -10,6 +10,7 @@ 0205-defined-CMAKE_INSTALL_FULL_BINDIR.patch 0210-use-tigervncsession-name.patch 0220-remove-systemd-service-obsolete-syslog-target.patch +0300-fix-Xtigervnc-boolparam-parsing.patch # These patches are lifted from RedHat rh/0904-Added-RH-patch-tigervnc11-rh588342.patch-which-fixes.patch