From 61d047d630bf1dceb61e25f63360969a5416e596 Mon Sep 17 00:00:00 2001 From: Nito Martinez Date: Thu, 2 Oct 2014 10:40:55 +0200 Subject: Add 400_nxcomp-version.full+lite.patch. Allow 4-digit version comparison during NX session handshake. (Fixes: #610). --- debian/patches/400_nxcomp-version.full+lite.patch | 240 ++++++++++++++++++++++ debian/patches/series | 1 + 2 files changed, 241 insertions(+) create mode 100644 debian/patches/400_nxcomp-version.full+lite.patch (limited to 'debian/patches') diff --git a/debian/patches/400_nxcomp-version.full+lite.patch b/debian/patches/400_nxcomp-version.full+lite.patch new file mode 100644 index 000000000..703cec823 --- /dev/null +++ b/debian/patches/400_nxcomp-version.full+lite.patch @@ -0,0 +1,240 @@ +Description: Allow version 4-digit version comparison/handshake +Author: Nito Martinez +--- a/nxcomp/Control.cpp ++++ b/nxcomp/Control.cpp +@@ -15,6 +15,7 @@ + /* */ + /**************************************************************************/ + ++#include "NX.h" + #include "NXpack.h" + + #include "Control.h" +@@ -594,44 +595,17 @@ + RemoteVersionMajor = -1; + RemoteVersionMinor = -1; + RemoteVersionPatch = -1; ++ RemoteVersionMaintenancePatch = -1; + + CompatVersionMajor = -1; + CompatVersionMinor = -1; + CompatVersionPatch = -1; ++ CompatVersionMaintenancePatch = -1; + +- char version[32]; +- +- strcpy(version, VERSION); +- +- char *value; +- +- value = strtok(version, "."); +- +- for (int i = 0; value != NULL && i < 3; i++) +- { +- switch (i) +- { +- case 0: +- +- LocalVersionMajor = atoi(value); +- +- break; +- +- case 1: +- +- LocalVersionMinor = atoi(value); +- +- break; +- +- case 2: +- +- LocalVersionPatch = atoi(value); +- +- break; +- } +- +- value = strtok(NULL, "."); +- } ++ LocalVersionMajor = NXMajorVersion(); ++ LocalVersionMinor = NXMinorVersion(); ++ LocalVersionPatch = NXPatchVersion(); ++ LocalVersionMaintenancePatch = NXMaintenancePatchVersion(); + + #ifdef TEST + *logofs << "Control: Major version is " << LocalVersionMajor +--- a/nxcomp/Control.h ++++ b/nxcomp/Control.h +@@ -299,17 +299,26 @@ + // Version number of local and remote proxy. + // + ++ /* ++ * LocalVersionMaintenancePatch, RemoteVersionMaintenancePatch ++ * CompatVersionMaintenancePatch ++ * ++ * currently not used, for future compatibility checks ++ */ + int LocalVersionMajor; + int LocalVersionMinor; + int LocalVersionPatch; ++ int LocalVersionMaintenancePatch; + + int RemoteVersionMajor; + int RemoteVersionMinor; + int RemoteVersionPatch; ++ int RemoteVersionMaintenancePatch; + + int CompatVersionMajor; + int CompatVersionMinor; + int CompatVersionPatch; ++ int CompatVersionMaintenancePatch; + + // + // Which unpack methods are implemented in proxy? +--- a/nxcomp/Loop.cpp ++++ b/nxcomp/Loop.cpp +@@ -14250,7 +14250,8 @@ + cerr << "NXPROXY - " << "Version " + << control -> LocalVersionMajor << "." + << control -> LocalVersionMinor << "." +- << control -> LocalVersionPatch; ++ << control -> LocalVersionPatch << "." ++ << control -> LocalVersionMaintenancePatch; + + cerr << endl; + } +--- a/nxcomp/Makefile.in ++++ b/nxcomp/Makefile.in +@@ -105,7 +105,8 @@ + + CSRC = MD5.c \ + Pack.c \ +- Vars.c ++ Vars.c \ ++ Version.c + + CXXSRC = Loop.cpp \ + Children.cpp \ +--- a/nxcomp/NX.h ++++ b/nxcomp/NX.h +@@ -442,6 +442,12 @@ + + extern void NXTransCleanup(void) __attribute__((noreturn)); + ++extern const char* NXVersion(); ++extern int NXMajorVersion(); ++extern int NXMinorVersion(); ++extern int NXPatchVersion(); ++extern int NXMaintenancePatchVersion(); ++ + #ifdef __cplusplus + } + #endif +--- /dev/null ++++ b/nxcomp/Version.c +@@ -0,0 +1,106 @@ ++/**************************************************************************/ ++/* */ ++/* Copyright (C) 2014 Qindel http://qindel.com and QVD http://theqvd.com */ ++/* */ ++/* This program is free software; you can redistribute it and/or modify */ ++/* it under the terms of the GNU General Public License as published by */ ++/* the Free Software Foundation; either version 3 of the License, or (at */ ++/* your option) any later version. */ ++/* */ ++/* This program is distributed in the hope that it will be useful, but */ ++/* WITHOUT ANY WARRANTY; without even the implied warranty of */ ++/* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. */ ++/* See the GNU General Public License for more details. */ ++/* */ ++/* You should have received a copy of the GNU General Public License */ ++/* along with this program; if not, see . */ ++/* */ ++/* Additional permission under GNU GPL version 3 section 7 */ ++/* */ ++/* If you modify this Program, or any covered work, by linking or */ ++/* combining it with [name of library] (or a modified version of that */ ++/* library), containing parts covered by the terms of [name of library's */ ++/* license], the licensors of this Program grant you additional */ ++/* permission to convey the resulting work. {Corresponding Source for a */ ++/* non-source form of such a combination shall include the source code */ ++/* for the parts of [name of library] used as well as that of the covered */ ++/* work.} */ ++/* */ ++/* */ ++/**************************************************************************/ ++ ++#include ++#include ++#include ++#include "NX.h" ++ ++ ++static int _NXVersionMajor = -1; ++static int _NXVersionMinor = -1; ++static int _NXVersionPatch = -1; ++static int _NXVersionMaintenancePatch = -1; ++ ++ ++const char* NXVersion() { ++ const char *version = VERSION; ++ return version; ++} ++ ++void _parseNXVersion() { ++ char version[32]; ++ int i; ++ strcpy(version, VERSION); ++ ++ char *value; ++ /* Reset values to 0 if undefined */ ++ _NXVersionMajor = _NXVersionMinor = _NXVersionPatch = _NXVersionMaintenancePatch = 0; ++ ++ ++#define NXVERSIONSEPARATOR "." ++ value = strtok(version, NXVERSIONSEPARATOR); ++ ++ for (i = 0; value != NULL && i < 4; i++) ++ { ++ switch (i) ++ { ++ case 0: ++ _NXVersionMajor = atoi(value); ++ break; ++ ++ case 1: ++ _NXVersionMinor = atoi(value); ++ break; ++ ++ case 2: ++ _NXVersionPatch = atoi(value); ++ break; ++ ++ case 3: ++ _NXVersionMaintenancePatch = atoi(value); ++ break; ++ } ++ ++ value = strtok(NULL, NXVERSIONSEPARATOR); ++ } ++} ++ ++int NXMajorVersion() { ++ if (_NXVersionMajor == -1) ++ _parseNXVersion(); ++ return _NXVersionMajor; ++} ++int NXMinorVersion() { ++ if (_NXVersionMinor == -1) ++ _parseNXVersion(); ++ return _NXVersionMinor; ++} ++int NXPatchVersion() { ++ if (_NXVersionPatch == -1) ++ _parseNXVersion(); ++ return _NXVersionPatch; ++} ++int NXMaintenancePatchVersion() { ++ if (_NXVersionMaintenancePatch == -1) ++ _parseNXVersion(); ++ return _NXVersionMaintenancePatch; ++} diff --git a/debian/patches/series b/debian/patches/series index e23de8ded..7b068d1ce 100644 --- a/debian/patches/series +++ b/debian/patches/series @@ -60,6 +60,7 @@ 301_nx-X11_use-shared-libs.full.patch 302_nx-X11_xkbbasedir-detection.full.patch 320_nxagent_configurable-keystrokes.full.patch +400_nxcomp-version.full+lite.patch 600_nx-X11+nxcompext+nxcompshad_unique-libnames.full.patch 601_nx-X11_build-option-changes-to-not-use-bundled-libraries.full.patch 602_nx-X11_initgroups.full.patch -- cgit v1.2.3