diff options
author | Mihai Moldovan <ionic@ionic.de> | 2017-12-15 12:55:17 +0100 |
---|---|---|
committer | Mihai Moldovan <ionic@ionic.de> | 2017-12-15 12:55:17 +0100 |
commit | 1dad092caf01d733990648e6df64cbf964df5143 (patch) | |
tree | 39de0e643e76754a3e23ca9dd0350b8ba4f76250 /debian/patches | |
parent | 6d70b9e3c47f27a166f4aacb522c5c1e49092dd9 (diff) | |
parent | 2b9025f797ee322e21077e100c2ee27c2e7fa0e0 (diff) | |
download | nx-libs-1dad092caf01d733990648e6df64cbf964df5143.tar.gz nx-libs-1dad092caf01d733990648e6df64cbf964df5143.tar.bz2 nx-libs-1dad092caf01d733990648e6df64cbf964df5143.zip |
Merge branch '3.6.x'
Diffstat (limited to 'debian/patches')
162 files changed, 40 insertions, 23158 deletions
diff --git a/debian/patches/0000_add-NX-redistribution-README.full+lite.patch b/debian/patches/0000_add-NX-redistribution-README.full+lite.patch deleted file mode 100644 index 3e1f2e878..000000000 --- a/debian/patches/0000_add-NX-redistribution-README.full+lite.patch +++ /dev/null @@ -1,48 +0,0 @@ -Description: Add README.NX-redistributed -Author: Mike Gabriel <mike.gabriel@das-netzwerkteam.de> - ---- /dev/null -+++ b/README.NX-redistributed -@@ -0,0 +1,42 @@ -+NX redistribution by X2Go -+------------------------- -+This source tree is a re-distribution of those NX packages needed to -+setup FreeNX and/or X2Go on a Linux server. -+ -+The NX re-distribution currently is maintained by the X2Go Project: -+http://wiki.x2go.org -+ -+Our goal is: -+ - provide _one_ tarball that builds NX projects via a common Makefile -+ - provide _one_ tarball for distribution packagers -+ -+This re-distribution contains the following tarballs derived from -+NoMachine (http://www.nomachine.com/sources.php): -+ -+ nxcomp -+ nxcompext -+ nxcompshad -+ nxproxy -+ nx-X11 -+ nxagent -+ nxauth -+ -+The patches we apply are shipped with this tarball, for further introspection -+please refer to this folder: -+ -+ doc/applied-patches -+ -+This source tree is maintained on the X2Go Git server: -+Browsing... http://code.x2go.org/gitweb?p=nx-libs.git;a=summary -+Git-Cloning... git clone git://code.x2go.org/nx-libs.git -+ -+If you have any questions about this NX redistribution or want to file -+a bug, then please contact the X2Go developers on -+ -+ x2go-dev@lists.berlios.de -+ -+The X2Go-Dev mailing list requires subscription before you can post to it: -+http://lists.berlios.de/mailman/listinfo/x2go-dev -+ -+thanks+light+love -+Mike Gabriel <mike.gabriel@das-netzwerkteam.de> diff --git a/debian/patches/0002_nxcompshad_build-against-nx-x11-only.full.patch b/debian/patches/0002_nxcompshad_build-against-nx-x11-only.full.patch deleted file mode 100644 index f58aaa488..000000000 --- a/debian/patches/0002_nxcompshad_build-against-nx-x11-only.full.patch +++ /dev/null @@ -1,39 +0,0 @@ -Description: Build nxcompshad against nx-X11. - Make sure nxcompshad get built against nx-X11. - . - Furthermore /usr/X11R6/lib is an outdated path on - current Debian systems. -Forwarded: pending... -Author: Mike Gabriel <mike.gabriel@das-netzwerkteam.de> -Last-Update: 2011-12-31 ---- a/nxcompshad/Makefile.in -+++ b/nxcompshad/Makefile.in -@@ -48,7 +48,7 @@ CCINCLUDES = - CCDEFINES = - - LDFLAGS = @LDFLAGS@ --LIBS = @LIBS@ -L/usr/X11R6/lib -lX11 -+LIBS = @LIBS@ -lX11 - - # - # Only if THREADS is defined. -@@ -162,7 +162,7 @@ $(LIBDLL): $(LIBARCHIVE) - -Wl,--enable-auto-import \ - -Wl,--whole-archive ${LIBARCHIVE} \ - -Wl,--no-whole-archive \ -- ${LIBS} -L/usr/X11R6/lib -+ ${LIBS} - - $(PROGRAM): $(MOBJ) $(COBJ) $(CXXOBJ) $(LIBDLL) - # $(CC) $(CCFLAGS) -o $@ $(MOBJ) $(MLIBS) ---- a/nxcompshad/configure.in -+++ b/nxcompshad/configure.in -@@ -19,7 +19,7 @@ dnl Prefer headers and libraries from nx - - if test -d "../nx-X11/exports/include" ; then - CXXFLAGS="$CXXFLAGS -I../nx-X11/exports/include" -- LIBS="$LIBS -L../nx-X11/exports/lib" -+ LIBS="-L../nx-X11/exports/lib" - fi - - dnl Check whether --with-ipaq was given. diff --git a/debian/patches/0003_nxcompshad_gcc43.full.patch b/debian/patches/0003_nxcompshad_gcc43.full.patch deleted file mode 100644 index 165c30035..000000000 --- a/debian/patches/0003_nxcompshad_gcc43.full.patch +++ /dev/null @@ -1,33 +0,0 @@ -Description: gcc43 fix - Use builtin includes to build with gcc43. - . - Originally contributed by Marcelo Boveto Shima <marceloshima@gmail.com>. -Forwarded: pending... -Author: Mike Gabriel <mike.gabriel@das-netzwerkteam.de> -Last-Update: 2011-12-31 ---- a/nxcompshad/Logger.h -+++ b/nxcompshad/Logger.h -@@ -18,8 +18,8 @@ - #ifndef Logger_H - #define Logger_H - --#include <errno.h> --#include <stdarg.h> -+#include <cerrno> -+#include <cstdarg> - - // - // Error handling macros. ---- a/nxcompshad/Misc.h -+++ b/nxcompshad/Misc.h -@@ -20,8 +20,8 @@ - - #include <iostream> - --#include <errno.h> --#include <string.h> -+#include <cerrno> -+#include <cstring> - - using namespace std; - diff --git a/debian/patches/0004_nx-X11_fix-nxcompshad-build.full.patch b/debian/patches/0004_nx-X11_fix-nxcompshad-build.full.patch deleted file mode 100644 index ec38a38fa..000000000 --- a/debian/patches/0004_nx-X11_fix-nxcompshad-build.full.patch +++ /dev/null @@ -1,18 +0,0 @@ -Description: Fix build on Debian - By an unknown reason this patch currently is needed to - build nx-X11, nxcomp, nxcompshad and nxcompext with - dpkg-buildpackage and debuild. -Forwarded: not-needed -Author: Mike Gabriel <mike.gabriel@das-netzwerkteam.de> -Last-Update: 2011-12-31 ---- a/nx-X11/programs/Xserver/Imakefile -+++ b/nx-X11/programs/Xserver/Imakefile -@@ -1047,7 +1047,7 @@ $(NX_XSHADOWLIBTARGET): $(NX_XSHADOWCONF - #else - $(NX_XSHADOWLIBTARGET): $(NX_XSHADOWCONFIGTARGET) - cd $(NX_XSHADOWLIBDIR) && \ -- make -+ rm -f *.o && make - #endif - - ServerTarget(nxagent,$(NX_XSHADOWLIBTARGET) $(NXAGENTDIRS),$(NXAGENTOBJS), \ diff --git a/debian/patches/0005_nxcomp_gcc43.full+lite.patch b/debian/patches/0005_nxcomp_gcc43.full+lite.patch deleted file mode 100644 index 81824a4e8..000000000 --- a/debian/patches/0005_nxcomp_gcc43.full+lite.patch +++ /dev/null @@ -1,77 +0,0 @@ -Description: gcc43 fix - Use builtin includes to build with gcc43. - . - Originally contributed by Marcelo Boveto Shima <marceloshima@gmail.com>. -Forwarded: not-yet -Author: Mike Gabriel <mike.gabriel@das-netzwerkteam.de> -Last-Update: 2011-12-31 ---- a/nxcomp/Message.cpp -+++ b/nxcomp/Message.cpp -@@ -15,9 +15,9 @@ - /* */ - /**************************************************************************/ - --#include <stdio.h> -+#include <cstdio> - #include <unistd.h> --#include <string.h> -+#include <cstring> - - #include <algorithm> - ---- a/nxcomp/Misc.cpp -+++ b/nxcomp/Misc.cpp -@@ -15,11 +15,11 @@ - /* */ - /**************************************************************************/ - --#include <stdio.h> --#include <ctype.h> --#include <stdlib.h> -+#include <cstdio> -+#include <cctype> -+#include <cstdlib> - #include <unistd.h> --#include <signal.h> -+#include <csignal> - - #include <errno.h> - #include <string.h> ---- a/nxcomp/Misc.h -+++ b/nxcomp/Misc.h -@@ -21,8 +21,8 @@ - #include <iostream> - #include <fstream> - --#include <errno.h> --#include <string.h> -+#include <cerrno> -+#include <cstring> - - #ifdef __sun - ---- a/nxcomp/Proxy.cpp -+++ b/nxcomp/Proxy.cpp -@@ -15,9 +15,9 @@ - /* */ - /**************************************************************************/ - --#include <stdio.h> -+#include <cstdio> - #include <unistd.h> --#include <stdlib.h> -+#include <cstdlib> - #include <sys/types.h> - #include <sys/stat.h> - ---- a/nxcomp/Split.cpp -+++ b/nxcomp/Split.cpp -@@ -16,7 +16,7 @@ - /**************************************************************************/ - - #include <unistd.h> --#include <string.h> -+#include <cstring> - #include <sys/stat.h> - #include <sys/types.h> - #include <utime.h> diff --git a/debian/patches/0006_nxcomp_libpng15.full+lite.patch b/debian/patches/0006_nxcomp_libpng15.full+lite.patch deleted file mode 100644 index 0b305a7fb..000000000 --- a/debian/patches/0006_nxcomp_libpng15.full+lite.patch +++ /dev/null @@ -1,43 +0,0 @@ -Description: Fix building against libpng 1.5. - From the libpng homepage... - - The libpng 1.5.x series continues the evolution of the libpng API, - finally hiding the contents of the venerable and hoary png_struct and - png_info data structures inside private (i.e., non-installed) header - files. Instead of direct struct-access, applications should be using - the various png_get_xxx() and png_set_xxx() accessor functions, which - have existed for almost as long as libpng itself. (Apps that compiled - against libpng 1.4 without warnings about deprecated features should - happily compile against 1.5, too. -Forwarded: pending... -Author: Fedora packagers of NX -Last-Update: 2012-02-06 ---- a/nxcomp/Pgn.cpp -+++ b/nxcomp/Pgn.cpp -@@ -414,7 +414,7 @@ int DecompressPng16(unsigned char *compr - - png_read_info(pngPtr, infoPtr); - -- if (infoPtr -> color_type == PNG_COLOR_TYPE_PALETTE) -+ if (png_get_color_type(pngPtr, infoPtr) == PNG_COLOR_TYPE_PALETTE) - { - png_set_expand(pngPtr); - } -@@ -565,7 +565,7 @@ int DecompressPng24(unsigned char *compr - - png_read_info( pngPtr, infoPtr ) ; - -- if (infoPtr -> color_type == PNG_COLOR_TYPE_PALETTE) -+ if (png_get_color_type(pngPtr, infoPtr) == PNG_COLOR_TYPE_PALETTE) - { - png_set_expand(pngPtr); - } -@@ -709,7 +709,7 @@ int DecompressPng32(unsigned char *compr - png_read_info(pngPtr, infoPtr) ; - - -- if (infoPtr -> color_type == PNG_COLOR_TYPE_PALETTE) -+ if (png_get_color_type(pngPtr, infoPtr) == PNG_COLOR_TYPE_PALETTE) - { - png_set_expand(pngPtr); - } diff --git a/debian/patches/0007_nxcompshad_clean-gch-files.full.patch b/debian/patches/0007_nxcompshad_clean-gch-files.full.patch deleted file mode 100644 index 5abb5757b..000000000 --- a/debian/patches/0007_nxcompshad_clean-gch-files.full.patch +++ /dev/null @@ -1,17 +0,0 @@ -Description: Remove .gch files during cleanup. - When building nxcompshad .gch files get created. On - cleanup these should be removed. -Forwarded: pending... -Author: Mike Gabriel <mike.gabriel@das-netzwerkteam.de> -Last-Update: 2012-12-31 ---- a/nxcompshad/Makefile.in -+++ b/nxcompshad/Makefile.in -@@ -185,7 +185,7 @@ install.bin: - install.man: - - clean: -- -rm -f *~ *.o *.bak st?????? core core.* *.out.* *.exe.stackdump \ -+ -rm -f *~ *.o *.gch *.bak st?????? core core.* *.out.* *.exe.stackdump \ - $(LIBFULL) $(LIBLOAD) $(LIBSHARED) $(LIBARCHIVE) $(LIBDLL) $(LIBDLLSTATIC) $(PROGRAM) $(PROGRAM).exe - - distclean: clean diff --git a/debian/patches/0008_nxcomp_sa-restorer.full+lite.patch b/debian/patches/0008_nxcomp_sa-restorer.full+lite.patch deleted file mode 100644 index 78fedc720..000000000 --- a/debian/patches/0008_nxcomp_sa-restorer.full+lite.patch +++ /dev/null @@ -1,46 +0,0 @@ -Description: sa_restorer vs. memset - Use memset instead of setting sa_restorer to NULL. -Forwarded: pending -Author: Alexander Morozov -Last-Update: 2012-02-07 ---- a/nxcomp/Loop.cpp -+++ b/nxcomp/Loop.cpp -@@ -5884,20 +5884,9 @@ void InstallSignal(int signal, int actio - - struct sigaction newAction; - -- newAction.sa_handler = HandleSignal; -- -- // -- // This field doesn't exist on most OSes except -- // Linux. We keep setting the field to NULL to -- // avoid side-effects in the case the field is -- // a value return. -- // -+ memset(&newAction, 0, sizeof(newAction)); - -- #if defined(__linux__) -- -- newAction.sa_restorer = NULL; -- -- #endif -+ newAction.sa_handler = HandleSignal; - - sigemptyset(&(newAction.sa_mask)); - -@@ -6509,13 +6498,9 @@ void SetTimer(int value) - - struct sigaction action; - -- action.sa_handler = HandleTimer; -- -- #if defined(__linux__) -+ memset(&action, 0, sizeof(action)); - -- action.sa_restorer = NULL; -- -- #endif -+ action.sa_handler = HandleTimer; - - sigemptyset(&action.sa_mask); - diff --git a/debian/patches/0009_nxagent_add-man-page.full.patch b/debian/patches/0009_nxagent_add-man-page.full.patch deleted file mode 100644 index 117a7e42b..000000000 --- a/debian/patches/0009_nxagent_add-man-page.full.patch +++ /dev/null @@ -1,43 +0,0 @@ -Description: man page for nxagent -Author: Mike Gabriel <mike.gabriel@das-netzwerkteam.de> - ---- /dev/null -+++ b/nx-X11/programs/Xserver/hw/nxagent/man/nxagent.1 -@@ -0,0 +1,37 @@ -+.TH NXAGENT 1 -+.SH NAME -+nxagent \- NoMachine's NX Agent. -+.SH SYNOPSIS -+.B nxagent -+.I "[options]" -+ -+.SH DESCRIPTION -+\fBnxagent\fR is an Xnest-like X server for remote application/desktop access. -+.PP -+\fBnxagent\fR implements a very efficient compression of the X11 protocol. -+.PP -+This increases performance when using X applications over high latency and -+low bandwidth networks, while providing a local (LAN-like) usage experience -+even if connecting from off-site locations (via cable modem or GSM). -+.PP -+\fBnxagent\fR is not designed to be used as a standalone application. -+It has to be launched on the server side by remote desktop frameworks like FreeNX. -+.PP -+Available clients are -+NoMachine's \fBnxclient\fR or the community projects \fBqtnx\fR and \fBremmina\fR -+(with NX plugin). -+ -+.SH OPTIONS -+.TP -+.B \-help -+Lists all others options that are not listed here. -+ -+.SH FURTHER READINGS -+Information on NX: http://www.nomachine.com -+.PP -+Information on FreeNX: http://freenx.berlios.de -+ -+.SH AUTHOR -+This manual page was written by Per Hansen <spamhans@yahoo.de>, -+and modified by Marcelo Boveto Shima <marceloshima@gmail.com> and -+Mike Gabriel <mike.gabriel@das-netzwerkteam.de>. diff --git a/debian/patches/0009_nxproxy_add-man-page.full+lite.patch b/debian/patches/0009_nxproxy_add-man-page.full+lite.patch deleted file mode 100644 index 2e8395b5b..000000000 --- a/debian/patches/0009_nxproxy_add-man-page.full+lite.patch +++ /dev/null @@ -1,33 +0,0 @@ -Description: man page for nxproxy -Author: Mike Gabriel <mike.gabriel@das-netzwerkteam.de> - ---- /dev/null -+++ b/nxproxy/man/nxproxy.1 -@@ -0,0 +1,27 @@ -+'\" -*- coding: utf-8 -*- -+.if \n(.g .ds T< \\FC -+.if \n(.g .ds T> \\F[\n[.fam]] -+.de URL -+\\$2 \(la\\$1\(ra\\$3 -+.. -+.if \n(.g .mso www.tmac -+.TH nxproxy 1 "Nov 2011" "Version 3.5.0" "NX Proxy" -+.SH NAME -+nxproxy \- NX Proxy Tool -+.SH SYNOPSIS -+'nh -+.fi -+.ad l -+\fBnxproxy\fR <options> -+ -+.SH DESCRIPTION -+\fBnxproxy\fR is a tool that allows one to tunnel X sessions through -+the NX compression libraries. \fBnxproxy\fR is a backend application -+utilized by the X2GoClient GUI and some other NX/X2Go clients. -+.PP -+.SH OPTIONS -+For an insight in \fBnxproxy\fR options use \fBnxproxy \-help\fR on the command line. -+.PP -+.SH AUTHOR -+This manual has been written by Mike Gabriel <mike.gabriel@das\-netzwerkteam.de> for the X2Go project -+(http://www.x2go.org). diff --git a/debian/patches/0010_nxauth_fix-binary-name-in-man-page.full.patch b/debian/patches/0010_nxauth_fix-binary-name-in-man-page.full.patch deleted file mode 100644 index 0c558b9de..000000000 --- a/debian/patches/0010_nxauth_fix-binary-name-in-man-page.full.patch +++ /dev/null @@ -1,119 +0,0 @@ -Description: Fix binary name in man page for nxauth. - The NX auth man page in upstream still uses xauth as - binary name. -Author: Mike Gabriel <mike.gabriel@das-netzwerkteam.de> -Last-Update: 2012-12-31 ---- a/nx-X11/programs/nxauth/nxauth.man -+++ b/nx-X11/programs/nxauth/nxauth.man -@@ -27,51 +27,51 @@ - .\" - .TH XAUTH 1 __xorgversion__ - .SH NAME --xauth \- X authority file utility -+nxauth \- NoMachine X authority file utility - .SH SYNOPSIS --.B xauth -+.B nxauth - [ \fB\-f\fP \fIauthfile\fP ] [ \fB\-vqib\fP ] [ \fIcommand arg ...\fP ] - .SH DESCRIPTION - .PP --The \fIxauth\fP program is used to edit and display the authorization -+The \fInxauth\fP program is used to edit and display the authorization - information used in connecting to the X server. This program is usually - used to extract authorization records from one machine and merge them in on - another (as is the case when using remote logins or granting access to - other users). Commands (described below) may be entered interactively, --on the \fIxauth\fP command line, or in scripts. Note that this program -+on the \fInxauth\fP command line, or in scripts. Note that this program - does \fBnot\fP contact the X server except when the generate command is used. --Normally \fIxauth\fP is not used to create the authority file entry in -+Normally \fInxauth\fP is not used to create the authority file entry in - the first place; \fIxdm\fP does that. - .SH OPTIONS --The following options may be used with \fIxauth\fP. They may be given -+The following options may be used with \fInxauth\fP. They may be given - individually (e.g., \fI\-q \-i\|\fP) or may combined (e.g., \fI\-qi\|\fP). - .TP 8 - .B "\-f \fIauthfile\fP" - This option specifies the name of the authority file to use. By default, --\fIxauth\fP will use the file specified by the XAUTHORITY environment variable -+\fInxauth\fP will use the file specified by the nxauthORITY environment variable - or \fI\.Xauthority\fP in the user's home directory. - .TP 8 - .B \-q --This option indicates that \fIxauth\fP should operate quietly and not print --unsolicited status messages. This is the default if an \fIxauth\fP command is -+This option indicates that \fInxauth\fP should operate quietly and not print -+unsolicited status messages. This is the default if an \fInxauth\fP command is - is given on the command line or if the standard output is not directed to a - terminal. - .TP 8 - .B \-v --This option indicates that \fIxauth\fP should operate verbosely and print -+This option indicates that \fInxauth\fP should operate verbosely and print - status messages indicating the results of various operations (e.g., how many --records have been read in or written out). This is the default if \fIxauth\fP -+records have been read in or written out). This is the default if \fInxauth\fP - is reading commands from its standard input and its standard output is - directed to a terminal. - .TP 8 - .B \-i --This option indicates that \fIxauth\fP should ignore any authority file --locks. Normally, \fIxauth\fP will refuse to read or edit any authority files -+This option indicates that \fInxauth\fP should ignore any authority file -+locks. Normally, \fInxauth\fP will refuse to read or edit any authority files - that have been locked by other programs (usually \fIxdm\fP or another --\fIxauth\fP). -+\fInxauth\fP). - .TP 8 - .B \-b --This option indicates that \fIxauth\fP should attempt to break any authority -+This option indicates that \fInxauth\fP should attempt to break any authority - file locks before proceeding. Use this option only to clean up stale locks. - .SH COMMANDS - The following commands may be used to manipulate authority files: -@@ -157,14 +157,14 @@ Authorization entries matching the speci - authority file. - .TP 8 - .B "source \fIfilename" --The specified file is treated as a script containing \fIxauth\fP commands -+The specified file is treated as a script containing \fInxauth\fP commands - to execute. Blank lines and lines beginning with a sharp sign (#) are - ignored. A single dash may be used to indicate the standard input, if it - hasn't already been read. - .TP 8 - .B "info" - Information describing the authorization file, whether or not any changes --have been made, and from where \fIxauth\fP commands are being read -+have been made, and from where \fInxauth\fP commands are being read - is printed on the standard output. - .TP 8 - .B "exit" -@@ -194,12 +194,12 @@ referred to as \fIhostname\fP/unix:\fIdi - local entries for different machines may be stored in one authority file. - .SH EXAMPLE - .PP --The most common use for \fIxauth\fP is to extract the entry for the -+The most common use for \fInxauth\fP is to extract the entry for the - current display, copy it to another machine, and merge it into the - user's authority file on the remote machine: - .sp - .nf -- % xauth extract \- $DISPLAY | rsh otherhost xauth merge \- -+ % nxauth extract \- $DISPLAY | rsh otherhost nxauth merge \- - .fi - .PP - .sp -@@ -207,10 +207,10 @@ The following command contacts the serve - authorization using the MIT-MAGIC-COOKIE-1 protocol. Clients that - connect with this authorization will be untrusted. - .nf -- % xauth generate :0 . -+ % nxauth generate :0 . - .fi - .SH ENVIRONMENT --This \fIxauth\fP program uses the following environment variables: -+This \fInxauth\fP program uses the following environment variables: - .TP 8 - .B XAUTHORITY - to get the name of the authority file to use if the \fI\-f\fP option isn't diff --git a/debian/patches/0012_nxcomp_makefile-uninstall+autoconf.full+lite.patch b/debian/patches/0012_nxcomp_makefile-uninstall+autoconf.full+lite.patch deleted file mode 100644 index 0b3592f4e..000000000 --- a/debian/patches/0012_nxcomp_makefile-uninstall+autoconf.full+lite.patch +++ /dev/null @@ -1,74 +0,0 @@ -Description: Add install and uninstall stanzas to nxcomp/Makefile, honor ac dirs - Provide install and uninstall functionality in nxcomp/Makefile. - . - Honor autoconf's libdir (and includedir, while at it). This is a - must-have for multiarch platforms like x86_64 et al where multiple - forms of libraries can be installed at the same time. -Forwarded: pending... -Author: Mike Gabriel <mike.gabriel@das-netzwerkteam.de> -Author: Jan Engelhardt <jengelh@medozas.de> -Last-Update: 2012-02-14 ---- a/nxcomp/Makefile.in -+++ b/nxcomp/Makefile.in -@@ -64,10 +64,15 @@ exec_prefix = @exec_prefix@ - bindir = @bindir@ - man1dir = @mandir@/man1 - VPATH = @srcdir@ -+libdir = @libdir@ -+includedir = @includedir@ - - INSTALL = @INSTALL@ - INSTALL_PROGRAM = @INSTALL_PROGRAM@ - INSTALL_DATA = @INSTALL_DATA@ -+INSTALL_LINK = cp -av -+DESTDIR = -+RM_FILE = rm -f - - # - # This should be autodetected. -@@ -264,12 +269,44 @@ depend.status: - fi - touch depend.status - --install: install.bin install.man -+install: install.bin install.lib install.man - - install.bin: - -+install.lib: all -+ ./mkinstalldirs $(DESTDIR)${libdir} -+ ./mkinstalldirs $(DESTDIR)${includedir}/nx -+ $(INSTALL_DATA) $(LIBFULL) $(DESTDIR)${libdir} -+ $(INSTALL_LINK) libXcomp.so.3 $(DESTDIR)${libdir} -+ $(INSTALL_LINK) libXcomp.so $(DESTDIR)${libdir} -+ $(INSTALL_DATA) libXcomp.a $(DESTDIR)${libdir} -+ $(INSTALL_DATA) NX*.h $(DESTDIR)${includedir}/nx -+ $(INSTALL_DATA) MD5.h $(DESTDIR)${includedir}/nx -+ echo "Running ldconfig tool, this may take a while..." && ldconfig || true -+ - install.man: - -+uninstall: uninstall.bin uninstall.lib uninstall.man -+ -+uninstall.bin: -+ -+uninstall.lib: -+ $(RM_FILE) $(DESTDIR)${libdir}/$(LIBFULL) -+ $(RM_FILE) $(DESTDIR)${libdir}/libXcomp.so.3 -+ $(RM_FILE) $(DESTDIR)${libdir}/libXcomp.so -+ $(RM_FILE) $(DESTDIR)${libdir}/libXcomp.a -+ $(RM_FILE) $(DESTDIR)${includedir}/nx/NXalert.h -+ $(RM_FILE) $(DESTDIR)${includedir}/nx/NX.h -+ $(RM_FILE) $(DESTDIR)${includedir}/nx/NXmitshm.h -+ $(RM_FILE) $(DESTDIR)${includedir}/nx/NXpack.h -+ $(RM_FILE) $(DESTDIR)${includedir}/nx/NXproto.h -+ $(RM_FILE) $(DESTDIR)${includedir}/nx/NXrender.h -+ $(RM_FILE) $(DESTDIR)${includedir}/nx/NXvars.h -+ $(RM_FILE) $(DESTDIR)${includedir}/nx/MD5.h -+ echo "Running ldconfig tool, this may take a while..." && ldconfig || true -+ -+uninstall.man: -+ - clean: - -rm -f *~ *.o *.bak *.orig *.rej st?????? core core.* *.out.* \ - @ALL@ diff --git a/debian/patches/0013_nxcompext_makefile-uninstall+autoconf.full.patch b/debian/patches/0013_nxcompext_makefile-uninstall+autoconf.full.patch deleted file mode 100644 index d971e7be2..000000000 --- a/debian/patches/0013_nxcompext_makefile-uninstall+autoconf.full.patch +++ /dev/null @@ -1,66 +0,0 @@ -Description: Add install and uninstall stanzas to nxcompext/Makefile, honor autoconf dirs. - Provide install and uninstall functionality in nxcompext/Makefile. - . - Honor autoconf's libdir (and includedir, while at it). This is a - must-have for multiarch platforms like x86_64 et al where multiple - forms of libraries can be installed at the same time. -Forwarded: pending... -Author: Mike Gabriel <mike.gabriel@das-netzwerkteam.de> -Author: Jan Engelhardt <jengelh@medozas.de> -Last-Update: 2012-02-14 ---- a/nxcompext/Makefile.in -+++ b/nxcompext/Makefile.in -@@ -56,11 +56,15 @@ exec_prefix = @exec_prefix@ - bindir = @bindir@ - man1dir = @mandir@/man1 - VPATH = @srcdir@ -+libdir = @libdir@ -+includedir = @includedir@ - - INSTALL = @INSTALL@ - INSTALL_PROGRAM = @INSTALL_PROGRAM@ - INSTALL_DATA = @INSTALL_DATA@ -- -+INSTALL_LINK = cp -av -+DESTDIR = -+RM_FILE = rm -f - # - # This should be autodetected. - # -@@ -147,12 +151,35 @@ depend.status: - fi - touch depend.status - --install: install.bin install.man -+install: install.bin install.lib install.man - - install.bin: - -+install.lib: all -+ ./mkinstalldirs $(DESTDIR)${libdir} -+ ./mkinstalldirs $(DESTDIR)${includedir}/nx -+ $(INSTALL_DATA) $(LIBFULL) $(DESTDIR)${libdir} -+ $(INSTALL_LINK) libXcompext.so.3 $(DESTDIR)${libdir} -+ $(INSTALL_LINK) libXcompext.so $(DESTDIR)${libdir} -+ $(INSTALL_DATA) NX*.h $(DESTDIR)${includedir}/nx -+ echo "Running ldconfig tool, this may take a while..." && ldconfig || true -+ - install.man: - -+uninstall: uninstall.bin uninstall.lib uninstall.man -+ -+uninstall.bin: -+ -+uninstall.lib: -+ $(RM_FILE) $(DESTDIR)${libdir}/$(LIBFULL) -+ $(RM_FILE) $(DESTDIR)${libdir}/libXcompext.so.3 -+ $(RM_FILE) $(DESTDIR)${libdir}/libXcompext.so -+ $(RM_FILE) $(DESTDIR)${includedir}/nx/NXlib.h -+ $(RM_FILE) $(DESTDIR)${includedir}/nx/NXlibint.h -+ echo "Running ldconfig tool, this may take a while..." && ldconfig || true -+ -+uninstall.man: -+ - clean: - -rm -f *~ *.o *.bak *.orig *.rej st?????? core core.* *.out.* \ - @ALL@ diff --git a/debian/patches/0014_nxcompshad_makefile-uninstall+autoconf.full.patch b/debian/patches/0014_nxcompshad_makefile-uninstall+autoconf.full.patch deleted file mode 100644 index 24b59002d..000000000 --- a/debian/patches/0014_nxcompshad_makefile-uninstall+autoconf.full.patch +++ /dev/null @@ -1,70 +0,0 @@ -Description: Add install and uninstall stanzas to nxcompshad/Makefile, honor autoconf dirs - Provide install and uninstall functionality in nxcompshad/Makefile. - . - Honor autoconf's libdir (and includedir, while at it). This is a - must-have for multiarch platforms like x86_64 et al where multiple - forms of libraries can be installed at the same time. -Forwarded: pending... -Author: Mike Gabriel <mike.gabriel@das-netzwerkteam.de> -Author: Jan Engelhardt <jengelh@medozas.de> -Last-Update: 2012-02-14 ---- a/nxcompshad/Makefile.in -+++ b/nxcompshad/Makefile.in -@@ -74,10 +74,17 @@ exec_prefix = @exec_prefix@ - bindir = @bindir@ - man1dir = @mandir@/man1 - VPATH = @srcdir@ -+libdir = @libdir@ -+includedir = @includedir@ - - INSTALL = @INSTALL@ -+INSTALL_DIR = $(INSTALL) -d -o root -g root -m 0755 - INSTALL_PROGRAM = @INSTALL_PROGRAM@ - INSTALL_DATA = @INSTALL_DATA@ -+INSTALL_LINK = cp -av -+DESTDIR = -+RM_FILE = rm -f -+RM_DIR = rmdir -p --ignore-fail-on-non-empty - - # - # This should be autodetected. -@@ -178,12 +185,38 @@ depend.status: - fi - touch depend.status - --install: install.bin install.man -+install: install.bin install.lib install.man - - install.bin: - -+install.lib: all -+ $(INSTALL_DIR) $(DESTDIR)${libdir} -+ $(INSTALL_DIR) $(DESTDIR)${includedir}/nx -+ $(INSTALL_DATA) $(LIBFULL) $(DESTDIR)${libdir} -+ $(INSTALL_LINK) libXcompshad.so.3 $(DESTDIR)${libdir} -+ $(INSTALL_LINK) libXcompshad.so $(DESTDIR)${libdir} -+ $(INSTALL_DATA) *.a $(DESTDIR)${libdir} -+ $(INSTALL_DATA) *.h $(DESTDIR)${includedir}/nx -+ echo "Running ldconfig tool, this may take a while..." && ldconfig || true -+ - install.man: - -+uninstall: uninstall.bin uninstall.lib uninstall.man -+ -+uninstall.bin: -+ -+uninstall.lib: -+ $(RM_FILE) $(DESTDIR)${libdir}/$(LIBFULL) -+ $(RM_FILE) $(DESTDIR)${libdir}/libXcompshad.so.3 -+ $(RM_FILE) $(DESTDIR)${libdir}/libXcompshad.so -+ $(RM_FILE) $(DESTDIR)${libdir}/libXcompshad.a -+ for header in *.h; do $(RM_FILE) $(DESTDIR)${includedir}/nx/$$header; done -+ $(RM_DIR) $(DESTDIR)${libdir}/nx/ -+ $(RM_DIR) $(DESTDIR)${includedir}/nx/ -+ echo "Running ldconfig tool, this may take a while..." && ldconfig || true -+ -+uninstall.man: -+ - clean: - -rm -f *~ *.o *.gch *.bak st?????? core core.* *.out.* *.exe.stackdump \ - $(LIBFULL) $(LIBLOAD) $(LIBSHARED) $(LIBARCHIVE) $(LIBDLL) $(LIBDLLSTATIC) $(PROGRAM) $(PROGRAM).exe diff --git a/debian/patches/0015_nxproxy_makefile-uninstall.full+lite.patch b/debian/patches/0015_nxproxy_makefile-uninstall.full+lite.patch deleted file mode 100644 index d1e4ce59c..000000000 --- a/debian/patches/0015_nxproxy_makefile-uninstall.full+lite.patch +++ /dev/null @@ -1,40 +0,0 @@ -Description: Add install and uninstall stanzas to nxcomp/Makefile - Provide install and uninstall functionality in nxcomp/Makefile. -Forwarded: pending... -Author: Mike Gabriel <mike.gabriel@das-netzwerkteam.de> -Last-Update: 2011-12-31 ---- a/nxproxy/Makefile.in -+++ b/nxproxy/Makefile.in -@@ -41,6 +41,8 @@ VPATH = @srcdir@ - INSTALL = @INSTALL@ - INSTALL_PROGRAM = @INSTALL_PROGRAM@ - INSTALL_DATA = @INSTALL_DATA@ -+DESTDIR = -+RM_FILE = rm -f - - # - # This should be autodetected. -@@ -87,11 +89,20 @@ depend.status: - install: install.bin install.man - - install.bin: $(PROGRAM) -- $(srcdir)/mkinstalldirs $(bindir) -- $(INSTALL) $(PROGRAM) $(bindir)/$(PROGRAM) -+ $(srcdir)/mkinstalldirs $(DESTDIR)$(bindir) -+ $(INSTALL_PROGRAM) $(PROGRAM) $(DESTDIR)$(bindir)/$(PROGRAM) - - install.man: -- $(srcdir)/mkinstalldirs $(man1dir) -+ $(srcdir)/mkinstalldirs $(DESTDIR)$(man1dir) -+ $(INSTALL_DATA) man/$(PROGRAM).1 $(DESTDIR)$(man1dir)/$(PROGRAM).1 -+ -+uninstall: uninstall.bin uninstall.man -+ -+uninstall.bin: -+ $(RM_FILE) $(DESTDIR)$(bindir)/$(PROGRAM) -+ -+uninstall.man: -+ $(RM_FILE) $(DESTDIR)$(man1dir)/nxproxy.1 - - clean: - -rm -f *~ *.o *.bak st?????? core core.* *.out.* \ diff --git a/debian/patches/0016_nx-X11_install-location.debian.patch b/debian/patches/0016_nx-X11_install-location.debian.patch deleted file mode 100644 index aa4d359fd..000000000 --- a/debian/patches/0016_nx-X11_install-location.debian.patch +++ /dev/null @@ -1,17 +0,0 @@ -Description: FHS adaptation for Debian packaging - On Debian, NX libraries and binaries are installed to - /usr/lib/nx. -Forwarded: not-needed -Author: Mike Gabriel <mike.gabriel@das-netzwerkteam.de> -Last-Update: 2012-12-31 ---- a/nx-X11/config/cf/Imake.tmpl -+++ b/nx-X11/config/cf/Imake.tmpl -@@ -832,7 +832,7 @@ TCLIBDIR = TclLibDir - #define AlternateUsrLibDir YES - #endif - #else --#define UsrLibDir Concat4(/usr/local,/,LibDirName,/nx) -+#define UsrLibDir Concat4(/usr,/,LibDirName,/nx) - #ifndef AlternateUsrLibDir - #define AlternateUsrLibDir NO - #endif diff --git a/debian/patches/0016_nx-X11_install-location.full.patch b/debian/patches/0016_nx-X11_install-location.full.patch deleted file mode 100644 index 370fd7bdd..000000000 --- a/debian/patches/0016_nx-X11_install-location.full.patch +++ /dev/null @@ -1,154 +0,0 @@ -Description: FHS adaptation for Debian packaging - From tarball, NX libraries and binaries are installed to - /usr/local/lib/nx. -Forwarded: not-needed -Author: Mike Gabriel <mike.gabriel@das-netzwerkteam.de> -Last-Update: 2012-12-31 ---- a/nx-X11/config/cf/Imake.tmpl -+++ b/nx-X11/config/cf/Imake.tmpl -@@ -820,12 +820,12 @@ TCLIBDIR = TclLibDir - - #ifndef UsrLibDir - #ifdef ProjectRoot --#define UsrLibDir Concat3(ProjectRoot,/,LibDirName) -+#define UsrLibDir Concat4(ProjectRoot,/,LibDirName,/nx) - #ifndef AlternateUsrLibDir - #define AlternateUsrLibDir YES - #endif - #else --#define UsrLibDir Concat3(/usr,/,LibDirName) -+#define UsrLibDir Concat4(/usr/local,/,LibDirName,/nx) - #ifndef AlternateUsrLibDir - #define AlternateUsrLibDir NO - #endif -@@ -863,7 +863,7 @@ TCLIBDIR = TclLibDir - #endif - #ifndef IncRoot - #ifdef ProjectRoot --#define IncRoot Concat(ProjectRoot,/include) -+#define IncRoot Concat(ProjectRoot,/include/nx) - #ifndef AlternateIncRoot - #define AlternateIncRoot YES - #endif ---- a/nx-X11/config/cf/X11.rules -+++ b/nx-X11/config/cf/X11.rules -@@ -36,17 +36,17 @@ XCOMM $XFree86: xc/config/cf/X11.rules,v - #endif - - #if defined(X11ProjectRoot) --# define XBinDir $(XPROJECTROOT)/bin -+# define XBinDir $(XPROJECTROOT)/lib/nx/bin - #elif defined(ProjectRoot) --# define XBinDir $(PROJECTROOT)/bin -+# define XBinDir $(PROJECTROOT)/lib/nx/bin - #else - # define XBinDir $(BINDIR) - #endif - - #ifdef X11ProjectRoot --# define XUsrLibDirPath $(USRLIBDIR):$(XPROJECTROOT)/lib -+# define XUsrLibDirPath $(USRLIBDIR)/nx:$(XPROJECTROOT) - #else --# define XUsrLibDirPath $(USRLIBDIR) -+# define XUsrLibDirPath $(USRLIBDIR)/nx - #endif - #ifdef UsrLibDirPath - # undef UsrLibDirPath -@@ -60,7 +60,7 @@ XCOMM $XFree86: xc/config/cf/X11.rules,v - #if ImportX11 - # define XLdPreLibs -L$(LIBSRC) - #elif defined(UseInstalledX11) && defined(X11ProjectRoot) --# define XLdPreLibs -L$(XPROJECTROOT)/lib -+# define XLdPreLibs -L$(XPROJECTROOT) - #else - # define XLdPreLibs /**/ - #endif -@@ -70,7 +70,7 @@ XCOMM $XFree86: xc/config/cf/X11.rules,v - #define LdPreLibs LdPreLib XLdPreLibs - - #ifdef X11ProjectRoot --# define XLdPostLibs -L$(XPROJECTROOT)/lib -+# define XLdPostLibs -L$(XPROJECTROOT) - #else - # define XLdPostLibs /**/ - #endif -@@ -86,7 +86,7 @@ XCOMM $XFree86: xc/config/cf/X11.rules,v - # define TopXInclude -I$(TOP)/exports/include - #else - # ifdef X11ProjectRoot --# define TopXInclude -I$(XPROJECTROOT)/include -+# define TopXInclude -I$(XPROJECTROOT)/../../include/nx - # else - # define TopXInclude /**/ - # endif -@@ -98,7 +98,7 @@ XCOMM $XFree86: xc/config/cf/X11.rules,v - #define TopIncludes TopInclude $(TOP_X_INCLUDES) - - #if UseInstalledX11 && defined(X11ProjectRoot) --# define X11BuildLibPath $(XPROJECTROOT)/lib -+# define X11BuildLibPath $(XPROJECTROOT) - #elif UseInstalledX11 - # define X11BuildLibPath $(USRLIBDIR) - #elif ImportX11 ---- a/nx-X11/config/cf/X11.tmpl -+++ b/nx-X11/config/cf/X11.tmpl -@@ -1401,7 +1401,7 @@ FCHOWN_DEFINES = -DHAS_FCHOWN - - #ifndef BinDir - #ifdef ProjectRoot --#define BinDir Concat(ProjectRoot,/bin) -+#define BinDir Concat(ProjectRoot,/lib/nx/bin) - #else - #define BinDir /usr/bin/X11 - #endif -@@ -1461,7 +1461,7 @@ FCHOWN_DEFINES = -DHAS_FCHOWN - #endif - #ifndef LibDir - # ifdef ProjectRoot --# define LibDir Concat(ProjectRoot,/lib/X11) -+# define LibDir Concat(ProjectRoot,/lib/nx/X11) - # else - # define LibDir /usr/lib/X11 - # endif ---- a/nx-X11/config/cf/linux.cf -+++ b/nx-X11/config/cf/linux.cf -@@ -1054,7 +1054,7 @@ InstallNamedTargetNoClobber(install,file - - #if HaveLib64 - # ifndef LibDirName --# define LibDirName lib64 -+# define LibDirName lib - # endif - # ifndef SystemUsrLibDir - # define SystemUsrLibDir /usr/lib64 ---- a/nx-X11/config/cf/site.def -+++ b/nx-X11/config/cf/site.def -@@ -72,7 +72,7 @@ XCOMM site: $XFree86: xc/config/cf/site - #ifdef AfterVendorCF - - #ifndef ProjectRoot --#define ProjectRoot /usr/local/lib/nx -+#define ProjectRoot /usr/local - #endif - - /* -@@ -87,7 +87,7 @@ XCOMM site: $XFree86: xc/config/cf/site - * ProjectRoot rather than in /etc/X11. See also HasVarDirectory, - * UseEtcX11 and UseSeparateConfDir. - * --#define EtcX11Directory ProjectRoot/etc -+#define EtcX11Directory /etc/nx - */ - - ---- a/nxproxy/Makefile.in -+++ b/nxproxy/Makefile.in -@@ -33,7 +33,7 @@ LIBS = @LIBS@ - - srcdir = @srcdir@ - prefix = @prefix@ --exec_prefix = @exec_prefix@ -+exec_prefix = @exec_prefix@/lib/nx - bindir = @bindir@ - man1dir = @mandir@/man1 - VPATH = @srcdir@ diff --git a/debian/patches/0017_nx-X11_fix-SetPictureFilter.full.patch b/debian/patches/0017_nx-X11_fix-SetPictureFilter.full.patch deleted file mode 100644 index a6f978cad..000000000 --- a/debian/patches/0017_nx-X11_fix-SetPictureFilter.full.patch +++ /dev/null @@ -1,179 +0,0 @@ -Description: Handle source pictures (those without a Drawable surface) gracefully. -Author: Mihai Moldovan <ionic@ionic.de> -Abstract: - This is basically a merge of the most current xorg-server (1.17.1) code into - nx-X11. - . - It makes sure that for source pictures, which do not have a drawable surface, - a filter is selected that is supported on the "main" and all other screens. - Alternatively, if the requested filter is not available on all screens and - the picture is a source picture, this function fails gracefully. - . - Additionally, the ChangePictureFilter hook is now called for non-source - pictures. - . - This also needs an implementation in mipict.{c,h}. The default hook does - nothing and returns a success value. - ---- a/nx-X11/programs/Xserver/render/filter.c -+++ b/nx-X11/programs/Xserver/render/filter.c -@@ -271,33 +271,69 @@ PictureResetFilters (ScreenPtr pScreen) - int - SetPictureFilter (PicturePtr pPicture, char *name, int len, xFixed *params, int nparams) - { -- ScreenPtr pScreen = pPicture->pDrawable->pScreen; -- PictFilterPtr pFilter = PictureFindFilter (pScreen, name, len); -- xFixed *new_params; -- int i; -+ ScreenPtr pScreen; -+ PictFilterPtr pFilter; -+ xFixed *new_params; -+ int i; -+ -+ if (pPicture->pDrawable) { -+ pScreen = pPicture->pDrawable->pScreen; -+ } -+ else { -+ pScreen = screenInfo.screens[0]; -+ } -+ -+ pFilter = PictureFindFilter (pScreen, name, len); - - if (!pFilter) -- return BadName; -- if (pFilter->ValidateParams) -- { -- if (!(*pFilter->ValidateParams) (pPicture, pFilter->id, params, nparams)) -- return BadMatch; -- } -- else if (nparams) -- return BadMatch; -- -- if (nparams != pPicture->filter_nparams) -- { -- new_params = xalloc (nparams * sizeof (xFixed)); -- if (!new_params) -- return BadAlloc; -- xfree (pPicture->filter_params); -- pPicture->filter_params = new_params; -- pPicture->filter_nparams = nparams; -+ return BadName; -+ -+ if (!pPicture->pDrawable) { -+ int s; -+ -+ /* For source pictures, the picture isn't tied to a screen. So, ensure -+ * that all screens can handle a filter we set for the picture. -+ */ -+ for (s = 1; s < screenInfo.numScreens; s++) { -+ PictFilterPtr pScreenFilter; -+ -+ pScreenFilter = PictureFindFilter(screenInfo.screens[s], name, len); -+ if (!pScreenFilter || pScreenFilter->id != pFilter->id) -+ return BadMatch; -+ } -+ } -+ -+ if (pFilter->ValidateParams) { -+ if (!(*pFilter->ValidateParams) (pPicture, pFilter->id, params, nparams)) -+ return BadMatch; -+ } -+ else if (nparams) { -+ return BadMatch; -+ } -+ -+ if (nparams != pPicture->filter_nparams) { -+ new_params = xalloc (nparams * sizeof (xFixed)); -+ -+ if (!new_params && nparams) -+ return BadAlloc; -+ xfree (pPicture->filter_params); -+ pPicture->filter_params = new_params; -+ pPicture->filter_nparams = nparams; - } - for (i = 0; i < nparams; i++) -- pPicture->filter_params[i] = params[i]; -+ pPicture->filter_params[i] = params[i]; - pPicture->filter = pFilter->id; -+ -+ if (pPicture->pDrawable) { -+ PictureScreenPtr ps = GetPictureScreen (pScreen); -+ int result; -+ -+ result = (*ps->ChangePictureFilter) (pPicture, pPicture->filter, -+ params, nparams); -+ -+ return result; -+ } - pPicture->serialNumber |= GC_CHANGE_SERIAL_BIT; -+ - return Success; - } ---- a/nx-X11/programs/Xserver/render/picturestr.h -+++ b/nx-X11/programs/Xserver/render/picturestr.h -@@ -344,7 +344,13 @@ typedef struct _PictureScreen { - int nfilterAliases; - - ChangePictureTransformProcPtr ChangePictureTransform; -+ -+ /** -+ * Called immediately after a picture's transform is changed through the -+ * SetPictureFilter request. Not called for source-only pictures. -+ */ - ChangePictureFilterProcPtr ChangePictureFilter; -+ - DestroyPictureFilterProcPtr DestroyPictureFilter; - - TrapezoidsProcPtr Trapezoids; ---- a/nx-X11/programs/Xserver/render/mipict.c -+++ b/nx-X11/programs/Xserver/render/mipict.c -@@ -250,6 +250,22 @@ miValidatePicture (PicturePtr pPicture, - } - } - -+int -+miChangePictureTransform (PicturePtr pPicture, -+ PictTransform *transform) -+{ -+ return Success; -+} -+ -+int -+miChangePictureFilter (PicturePtr pPicture, -+ int filter, -+ xFixed *params, -+ int nparams) -+{ -+ return Success; -+} -+ - #define BOUND(v) (INT16) ((v) < MINSHORT ? MINSHORT : (v) > MAXSHORT ? MAXSHORT : (v)) - - static __inline Bool -@@ -611,6 +627,8 @@ miPictureInit (ScreenPtr pScreen, PictFo - ps->InitIndexed = miInitIndexed; - ps->CloseIndexed = miCloseIndexed; - ps->UpdateIndexed = miUpdateIndexed; -+ ps->ChangePictureTransform = miChangePictureTransform; -+ ps->ChangePictureFilter = miChangePictureFilter; - - /* MI rendering routines */ - ps->Composite = 0; /* requires DDX support */ ---- a/nx-X11/programs/Xserver/render/mipict.h -+++ b/nx-X11/programs/Xserver/render/mipict.h -@@ -71,6 +71,15 @@ void - miValidatePicture (PicturePtr pPicture, - Mask mask); - -+int -+miChangePictureTransform (PicturePtr pPicture, -+ PictTransform *transform); -+ -+int -+miChangePictureFilter (PicturePtr pPicture, -+ int filter, -+ xFixed *params, -+ int nparams); - - Bool - miClipPicture (RegionPtr pRegion, diff --git a/debian/patches/0024_fix-make-clean.full+lite.patch b/debian/patches/0024_fix-make-clean.full+lite.patch deleted file mode 100644 index b1d6cdd06..000000000 --- a/debian/patches/0024_fix-make-clean.full+lite.patch +++ /dev/null @@ -1,19 +0,0 @@ -Description: fix clean rule in nxcomp's Makefile.in -Author: Mike Gabriel <mike.gabriel@das-netzwerkteam.de> - ---- a/nxcomp/Makefile.in -+++ b/nxcomp/Makefile.in -@@ -313,4 +313,4 @@ clean: - - distclean: clean - -rm -rf autom4te.cache config.status config.log \ -- config.cache depend.status Makefile tags -+ config.cache depend.status Makefile tags configure ---- a/nxproxy/Makefile.in -+++ b/nxproxy/Makefile.in -@@ -109,4 +109,4 @@ clean: - $(PROGRAM) $(PROGRAM).exe $(LIBFULL) $(LIBLOAD) $(LIBSHARED) $(LIBARCHIVE) - - distclean: clean -- -rm -f config.status config.log config.cache depend.status Makefile tags -+ -rm -rf autom4te.cache config.status config.log config.cache depend.status Makefile tags configure diff --git a/debian/patches/0024_fix-make-clean.full.patch b/debian/patches/0024_fix-make-clean.full.patch deleted file mode 100644 index 7464a9418..000000000 --- a/debian/patches/0024_fix-make-clean.full.patch +++ /dev/null @@ -1,51 +0,0 @@ -Description: Provide main Makefile for whole source tree - By design this patch is not needed to be sent upstream. -Forwarded: not-needed -Author: Mike Gabriel <mike.gabriel@das-netzwerkteam.de> -Last-Update: 2012-10-19 ---- a/nx-X11/Makefile -+++ b/nx-X11/Makefile -@@ -138,6 +138,7 @@ Makefile:: - - xmakefile: Imakefile - $(RM) xmakefile -+ @rm -f $(IRULESRC)/date.def; echo "" > $(IRULESRC)/date.def; - $(IMAKE_CMD) -s xmakefile -DTOPDIR=$(TOP) -DCURDIR=$(CURRENT_DIR) - - World.Win32: -@@ -197,11 +198,16 @@ World.OS2: - # a copy of every rule that might be invoked at top level - - clean: -- $(MAKE_CMD) $@ -+ -$(MAKE_CMD) $@ -+ find config -type f | egrep '.*/Makefile$$' | while read makefile; do rm -f $$makefile; done -+ find lib -type f | egrep '.*/Makefile$$' | while read makefile; do rm -f $$makefile; done -+ find programs -type f | egrep '.*/Makefile$$' | while read makefile; do rm -f $$makefile; done -+ find include -type f | egrep '.*/Makefile$$' | while read makefile; do rm -f $$makefile; done -+ rm -f config/cf/{version.def,date.def} - dangerous_strip_clean: - $(MAKE_CMD) $@ - distclean: -- $(MAKE_CMD) $@ -+ -$(MAKE_CMD) $@ - $(RM) xmakefile $(IRULESRC)/version.def $(IRULESRC)/date.def - depend: - $(MAKE_CMD) $@ ---- a/nxcompext/Makefile.in -+++ b/nxcompext/Makefile.in -@@ -185,5 +185,5 @@ clean: - @ALL@ - - distclean: clean -- -rm -rf autom4te.cache config.status config.log \ -+ -rm -rf autom4te.cache config.status config.log configure \ - config.cache depend.status Makefile tags ---- a/nxcompshad/Makefile.in -+++ b/nxcompshad/Makefile.in -@@ -222,4 +222,4 @@ clean: - $(LIBFULL) $(LIBLOAD) $(LIBSHARED) $(LIBARCHIVE) $(LIBDLL) $(LIBDLLSTATIC) $(PROGRAM) $(PROGRAM).exe - - distclean: clean -- -rm -rf config.status config.log config.cache depend.status Makefile tags autom4te.cache -+ -rm -rf config.status config.log config.cache depend.status Makefile tags autom4te.cache configure diff --git a/debian/patches/0025_nxcomp-fix-ftbfs-against-jpeg9a.full+lite.patch b/debian/patches/0025_nxcomp-fix-ftbfs-against-jpeg9a.full+lite.patch deleted file mode 100644 index ca556b193..000000000 --- a/debian/patches/0025_nxcomp-fix-ftbfs-against-jpeg9a.full+lite.patch +++ /dev/null @@ -1,40 +0,0 @@ -Description: Fix FTBFS when built against libjpeg9a -Author: Gabriel Marcano <gabemarcano@yahoo.com> ---- a/nxcomp/Jpeg.cpp -+++ b/nxcomp/Jpeg.cpp -@@ -440,7 +440,7 @@ int DecompressJpeg16(unsigned char *comp - - JpegSetSrcManager(&cinfo, compressedData, compressedLen); - -- jpeg_read_header(&cinfo, 1); -+ jpeg_read_header(&cinfo, TRUE); - - if (jpegError) goto AbortDecompressJpeg16; - -@@ -581,7 +581,7 @@ int DecompressJpeg24(unsigned char *comp - - JpegSetSrcManager(&cinfo, compressedData, compressedLen); - -- jpeg_read_header(&cinfo, 1); -+ jpeg_read_header(&cinfo, TRUE); - - if (jpegError) goto AbortDecompressJpeg24; - -@@ -718,7 +718,7 @@ int DecompressJpeg32(unsigned char *comp - - JpegSetSrcManager(&cinfo, compressedData, compressedLen); - -- jpeg_read_header(&cinfo, 1); -+ jpeg_read_header(&cinfo, TRUE); - - if (jpegError) goto AbortDecompressJpeg32; - -@@ -833,7 +833,7 @@ static boolean JpegFillInputBuffer(j_dec - jpegSrcManager.bytes_in_buffer = jpegBufferLen; - jpegSrcManager.next_input_byte = (JOCTET *)jpegBufferPtr; - -- return 1; -+ return TRUE; - } - - static void JpegSkipInputData(j_decompress_ptr cinfo, long num_bytes) diff --git a/debian/patches/0026_nxcomp_honour-optflags.full+lite.patch b/debian/patches/0026_nxcomp_honour-optflags.full+lite.patch deleted file mode 100644 index 06b7b7e73..000000000 --- a/debian/patches/0026_nxcomp_honour-optflags.full+lite.patch +++ /dev/null @@ -1,29 +0,0 @@ -Description: Honour compiler/linker option flags -Forwarded: pending -Author: Orion Poplawski <orion@cora.nwra.com> ---- a/nxcomp/configure.in -+++ b/nxcomp/configure.in -@@ -7,8 +7,8 @@ AC_PREREQ(2.13) - - dnl Set our default compilation flags. - --CXXFLAGS="-O3 -fno-rtti -fno-exceptions" --CFLAGS="-O3" -+CXXFLAGS="$CXXFLAGS -O3 -fno-rtti -fno-exceptions" -+CFLAGS="$CFLAGS -O3" - - dnl Reset default linking directives. - ---- a/nxproxy/configure.in -+++ b/nxproxy/configure.in -@@ -7,8 +7,8 @@ AC_PREREQ(2.13) - - dnl Reset default compilation flags. - --CXXFLAGS="-O3" --CPPFLAGS="-O3" -+CXXFLAGS="$CXXFLAGS -O3" -+CPPFLAGS="$CPPFLAGS -O3" - - dnl Prefer headers and libraries from nx-X11 if present. - diff --git a/debian/patches/0026_nxcompext_honour-optflags.full.patch b/debian/patches/0026_nxcompext_honour-optflags.full.patch deleted file mode 100644 index f3c548284..000000000 --- a/debian/patches/0026_nxcompext_honour-optflags.full.patch +++ /dev/null @@ -1,16 +0,0 @@ -Description: Honour compiler/linker option flags -Forwarded: pending -Author: Orion Poplawski <orion@cora.nwra.com> ---- a/nxcompext/configure.in -+++ b/nxcompext/configure.in -@@ -7,8 +7,8 @@ AC_PREREQ(2.13) - - dnl Reset default compilation flags. - --CXXFLAGS="-O3" --CFLAGS="-O3" -+CXXFLAGS="$CXXFLAGS -O3" -+CFLAGS="$CFLAGS -O3" - - dnl Reset default linking directives. - diff --git a/debian/patches/0026_nxcompshad_honour-optflags.full.patch b/debian/patches/0026_nxcompshad_honour-optflags.full.patch deleted file mode 100644 index 00a4be312..000000000 --- a/debian/patches/0026_nxcompshad_honour-optflags.full.patch +++ /dev/null @@ -1,16 +0,0 @@ -Description: Honour compiler/linker option flags -Forwarded: pending -Author: Orion Poplawski <orion@cora.nwra.com> ---- a/nxcompshad/configure.in -+++ b/nxcompshad/configure.in -@@ -7,8 +7,8 @@ AC_PREREQ(2.13) - - dnl Reset default compilation flags. - --CXXFLAGS="-O3" --CPPFLAGS="-O3" -+CXXFLAGS="$CXXFLAGS -O3" -+CPPFLAGS="$CPPFLAGS -O3" - - dnl Reset default linking directives. - diff --git a/debian/patches/0027_nxcomp_abstract-X11-socket.full+lite.patch b/debian/patches/0027_nxcomp_abstract-X11-socket.full+lite.patch deleted file mode 100644 index 5da813577..000000000 --- a/debian/patches/0027_nxcomp_abstract-X11-socket.full+lite.patch +++ /dev/null @@ -1,57 +0,0 @@ -Description: Add X11 abstract socket support to nxcomp/nxproxy -Author: Mike Gabriel <mike.gabriel@das-netzwerkteam.de> - ---- a/nxcomp/Loop.cpp -+++ b/nxcomp/Loop.cpp -@@ -4250,6 +4250,39 @@ int SetupDisplaySocket(int &xServerAddrF - // where the socket will be created. - // - -+ // Try abstract X11 socket first (via a test connect), if that fails -+ // fall back to Unix domain socket file. -+ -+ #ifdef __linux__ -+ int testSocketFD; -+ testSocketFD = socket(xServerAddrFamily, SOCK_STREAM, PF_UNSPEC); -+ -+ int len = sprintf(unixSocketName + 1, "/tmp/.X11-unix/X%d", xPort); -+ unixSocketName[0] = '\0'; -+ -+ sockaddr_un *xServerAddrABSTRACT = new sockaddr_un; -+ memset(xServerAddrABSTRACT, 0, xServerAddrLength); -+ xServerAddrABSTRACT -> sun_family = AF_UNIX; -+ memcpy(xServerAddrABSTRACT -> sun_path, unixSocketName, len+1); -+ xServerAddrLength = len +3; -+ -+ int ret = connect(testSocketFD, (struct sockaddr *) xServerAddrABSTRACT, xServerAddrLength); -+ if (ret == 0) { -+ -+ cerr << "Info" << ": Using abstract X11 socket in kernel namespace " -+ << "for accessing DISPLAY=:" << xPort << ".\n"; -+ -+ close(testSocketFD); -+ xServerAddr = (sockaddr *) xServerAddrABSTRACT; -+ return 1; -+ -+ } else { -+ -+ cerr << "Info" << ": Falling back to file system X11 socket " -+ << "for accessing DISPLAY=:" << xPort << ".\n"; -+ -+ #endif -+ - struct stat statInfo; - - char unixSocketDir[DEFAULT_STRING_LENGTH]; -@@ -4322,6 +4355,11 @@ int SetupDisplaySocket(int &xServerAddrF - - xServerAddr = (sockaddr *) xServerAddrUNIX; - xServerAddrLength = sizeof(sockaddr_un); -+ -+ #ifdef __linux__ -+ -+ } -+ #endif - } - else - { diff --git a/debian/patches/0028_nx-X11_abstract-kernel-sockets.full.patch b/debian/patches/0028_nx-X11_abstract-kernel-sockets.full.patch deleted file mode 100644 index 14a8ab15a..000000000 --- a/debian/patches/0028_nx-X11_abstract-kernel-sockets.full.patch +++ /dev/null @@ -1,321 +0,0 @@ -Author: Mike Gabriel <mike.gabriel@das-netzwerkteam.de> -Description: Support abstract local sockets for Linux systems -Abstract: - Relevant code taken from xtrans 1.2.7 on 2014-06-11. - ---- a/nx-X11/lib/xtrans/Xtranssock.c -+++ b/nx-X11/lib/xtrans/Xtranssock.c -@@ -172,6 +172,8 @@ static int IBMsockInit = 0; - sock_init();\ - IBMsockInit = 1;\ - } -+ -+ - #undef EINTR - #define EINTR SOCEINTR - #undef EINVAL -@@ -192,6 +194,10 @@ static int IBMsockInit = 0; - #define SocketInitOnce() /**/ - #endif - -+#if defined(linux) -+#define HAVE_ABSTRACT_SOCKETS -+#endif -+ - #define MIN_BACKLOG 128 - #ifdef SOMAXCONN - #if SOMAXCONN > MIN_BACKLOG -@@ -532,7 +538,7 @@ static char *_NXGetOldUnixPath(char *pat - - void TRANS(SocketRejectConnection) (XtransConnInfo ciptr) - { -- size_t sa_l = sizeof(struct sockaddr); -+ socklen_t sa_l = sizeof(struct sockaddr); - struct sockaddr sa; - fd_set fs; - struct timeval t; -@@ -914,9 +920,11 @@ TRANS(SocketINETGetAddr) (XtransConnInfo - struct sockaddr_in socknamev4; - void *socknamePtr; - #if defined(SVR4) || defined(__SCO__) -+# define SOCKLEN_T_PTR void* - size_t namelen; - #else -- int namelen; -+# define SOCKLEN_T_PTR socklen_t* -+ socklen_t namelen; - #endif - - PRMSG (3,"SocketINETGetAddr(%p)\n", ciptr, 0, 0); -@@ -935,7 +943,7 @@ TRANS(SocketINETGetAddr) (XtransConnInfo - } - - if (getsockname (ciptr->fd,(struct sockaddr *) socknamePtr, -- (void *)&namelen) < 0) -+ (SOCKLEN_T_PTR)&namelen) < 0) - { - #ifdef WIN32 - errno = WSAGetLastError(); -@@ -1477,23 +1485,28 @@ TRANS(SocketSetOption) (XtransConnInfo c - - #ifdef UNIXCONN - static int --set_sun_path(const char *port, const char *upath, char *path) -+set_sun_path(const char *port, const char *upath, char *path, int abstract) - { - struct sockaddr_un s; - int maxlen = sizeof(s.sun_path) - 1; -+ const char *at = ""; - - if (!port || !*port || !path) - return -1; - -- if (*port == '/') { /* a full pathname */ -- if (strlen(port) > maxlen) -- return -1; -- sprintf(path, "%s", port); -- } else { -- if (strlen(port) + strlen(upath) > maxlen) -- return -1; -- sprintf(path, "%s%s", upath, port); -- } -+#ifdef HAVE_ABSTRACT_SOCKETS -+ if (port[0] == '@') -+ upath = ""; -+ else if (abstract) -+ at = "@"; -+#endif -+ -+ if (*port == '/') /* a full pathname */ -+ upath = ""; -+ -+ if (strlen(port) + strlen(upath) > maxlen) -+ return -1; -+ snprintf(path, sizeof(s.sun_path), "%s%s%s", at, upath, port); - return 0; - } - #endif -@@ -1726,6 +1739,12 @@ TRANS(SocketUNIXCreateListener) (XtransC - int oldUmask; - int status; - unsigned int mode; -+ char tmpport[108]; -+ -+ int abstract = 0; -+#ifdef HAVE_ABSTRACT_SOCKETS -+ abstract = ciptr->transptr->flags & TRANS_ABSTRACT; -+#endif - - PRMSG (2, "SocketUNIXCreateListener(%s)\n", - port ? port : "NULL", 0, 0); -@@ -1741,11 +1760,11 @@ TRANS(SocketUNIXCreateListener) (XtransC - mode = 0777; - #endif - #ifdef NX_TRANS_SOCKET -- if (trans_mkdir(_NXGetUnixDir(UNIX_DIR), mode) == -1) { -+ if (!abstract && trans_mkdir(_NXGetUnixDir(UNIX_DIR), mode) == -1) { - PRMSG (1, "SocketUNIXCreateListener: mkdir(%s) failed, errno = %d\n", - _NXGetUnixDir(UNIX_DIR), errno, 0); - #else -- if (trans_mkdir(UNIX_DIR, mode) == -1) { -+ if (!abstract && trans_mkdir(UNIX_DIR, mode) == -1) { - PRMSG (1, "SocketUNIXCreateListener: mkdir(%s) failed, errno = %d\n", - UNIX_DIR, errno, 0); - #endif -@@ -1754,13 +1773,18 @@ TRANS(SocketUNIXCreateListener) (XtransC - } - #endif - -+ memset(&sockname, 0, sizeof(sockname)); - sockname.sun_family = AF_UNIX; - -+ if (!(port && *port)) { -+ snprintf (tmpport, sizeof(tmpport), "%s%ld", UNIX_PATH, (long)getpid()); -+ port = tmpport; -+ } - if (port && *port) { - #ifdef NX_TRANS_SOCKET -- if (set_sun_path(port, _NXGetUnixPath(UNIX_PATH), sockname.sun_path) != 0) { -+ if (set_sun_path(port, _NXGetUnixPath(UNIX_PATH), sockname.sun_path, abstract) != 0) { - #else -- if (set_sun_path(port, UNIX_PATH, sockname.sun_path) != 0) { -+ if (set_sun_path(port, UNIX_PATH, sockname.sun_path, abstract) != 0) { - #endif - PRMSG (1, "SocketUNIXCreateListener: path too long\n", 0, 0, 0); - return TRANS_CREATE_LISTENER_FAILED; -@@ -1784,7 +1808,12 @@ TRANS(SocketUNIXCreateListener) (XtransC - fprintf(stderr, "SocketUNIXCreateListener: Unlinking path [%s] for ciptr at [%p].\n", - sockname.sun_path, (void *) ciptr); - #endif -- unlink (sockname.sun_path); -+ if (abstract) { -+ sockname.sun_path[0] = '\0'; -+ namelen = offsetof(struct sockaddr_un, sun_path) + 1 + strlen(&sockname.sun_path[1]); -+ } -+ else -+ unlink (sockname.sun_path); - - if ((status = TRANS(SocketCreateListener) (ciptr, - (struct sockaddr *) &sockname, namelen, flags)) < 0) -@@ -1814,6 +1843,9 @@ TRANS(SocketUNIXCreateListener) (XtransC - return TRANS_CREATE_LISTENER_FAILED; - } - -+ if (abstract) -+ sockname.sun_path[0] = '@'; -+ - ciptr->family = sockname.sun_family; - ciptr->addrlen = namelen; - memcpy (ciptr->addr, &sockname, ciptr->addrlen); -@@ -1823,7 +1855,6 @@ TRANS(SocketUNIXCreateListener) (XtransC - return 0; - } - -- - static int - TRANS(SocketUNIXResetListener) (XtransConnInfo ciptr) - -@@ -1836,15 +1867,20 @@ TRANS(SocketUNIXResetListener) (XtransCo - struct stat statb; - int status = TRANS_RESET_NOOP; - unsigned int mode; -+ int abstract = 0; -+#ifdef HAVE_ABSTRACT_SOCKETS -+ abstract = ciptr->transptr->flags & TRANS_ABSTRACT; -+#endif - - PRMSG (3, "SocketUNIXResetListener(%p,%d)\n", ciptr, ciptr->fd, 0); - -- if (stat (unsock->sun_path, &statb) == -1 || -+ if (!abstract && ( -+ stat (unsock->sun_path, &statb) == -1 || - ((statb.st_mode & S_IFMT) != - #if (defined (sun) && defined(SVR4)) || defined(NCR) || defined(SCO325) || !defined(S_IFSOCK) - S_IFIFO)) - #else -- S_IFSOCK)) -+ S_IFSOCK))) - #endif - { - int oldUmask = umask (0); -@@ -2034,6 +2070,11 @@ TRANS(SocketUNIXAccept) (XtransConnInfo - } - - -+ /* -+ * if the socket is abstract, we already modified the address to have a -+ * @ instead of the initial NUL, so no need to do that again here. -+ */ -+ - newciptr->addrlen = ciptr->addrlen; - memcpy (newciptr->addr, ciptr->addr, newciptr->addrlen); - -@@ -2626,6 +2667,12 @@ TRANS(SocketUNIXConnect) (XtransConnInfo - struct sockaddr_un sockname; - int namelen; - -+ -+ int abstract = 0; -+#ifdef HAVE_ABSTRACT_SOCKETS -+ abstract = ciptr->transptr->flags & TRANS_ABSTRACT; -+#endif -+ - #if defined(hpux) && defined(X11_t) - struct sockaddr_un old_sockname; - int old_namelen; -@@ -2674,9 +2721,9 @@ TRANS(SocketUNIXConnect) (XtransConnInfo - sockname.sun_family = AF_UNIX; - - #ifdef NX_TRANS_SOCKET -- if (set_sun_path(port, _NXGetUnixPath(UNIX_PATH), sockname.sun_path) != 0) { -+ if (set_sun_path(port, _NXGetUnixPath(UNIX_PATH), sockname.sun_path, abstract) != 0) { - #else -- if (set_sun_path(port, UNIX_PATH, sockname.sun_path) != 0) { -+ if (set_sun_path(port, UNIX_PATH, sockname.sun_path, abstract) != 0) { - #endif - PRMSG (1, "SocketUNIXConnect: path too long\n", 0, 0, 0); - return TRANS_CONNECT_FAILED; -@@ -2722,6 +2769,14 @@ TRANS(SocketUNIXConnect) (XtransConnInfo - #endif - - /* -+ * Adjust the socket path if using abstract sockets. -+ * Done here because otherwise all the strlen() calls above would fail. -+ */ -+ -+ if (abstract) -+ sockname.sun_path[0] = '\0'; -+ -+ /* - * Do the connect() - */ - -@@ -2757,12 +2812,18 @@ TRANS(SocketUNIXConnect) (XtransConnInfo - * should try again. - */ - -- if (olderrno == ENOENT || olderrno == EINTR) -- return TRANS_TRY_CONNECT_AGAIN; -- else if (olderrno == EWOULDBLOCK || olderrno == EINPROGRESS) -+ if (olderrno == EWOULDBLOCK || olderrno == EINPROGRESS) - return TRANS_IN_PROGRESS; -- else -- { -+ else if (olderrno == EINTR) -+ return TRANS_TRY_CONNECT_AGAIN; -+ else if (olderrno == ENOENT || olderrno == ECONNREFUSED) -+ /* If opening as abstract failed, try again normally */ -+ if (abstract) { -+ ciptr->transptr->flags &= ~(TRANS_ABSTRACT); -+ return TRANS_TRY_CONNECT_AGAIN; -+ } else { -+ return TRANS_CONNECT_FAILED; -+ } else { - PRMSG (2,"SocketUNIXConnect: Can't connect: errno = %d\n", - EGET(),0, 0); - -@@ -2791,6 +2852,9 @@ SocketUNIXConnectPost: - return TRANS_CONNECT_FAILED; - } - -+ if (abstract) -+ sockname.sun_path[0] = '@'; -+ - ciptr->family = AF_UNIX; - ciptr->addrlen = namelen; - ciptr->peeraddrlen = namelen; -@@ -3323,7 +3387,11 @@ Xtransport TRANS(SocketINET6Funcs) = - Xtransport TRANS(SocketLocalFuncs) = { - /* Socket Interface */ - "local", -+#ifdef HAVE_ABSTRACT_SOCKETS -+ TRANS_ABSTRACT, -+#else - 0, -+#endif - #ifdef TRANS_CLIENT - TRANS(SocketOpenCOTSClient), - #endif /* TRANS_CLIENT */ -@@ -3369,7 +3437,7 @@ static char* unix_nolisten[] = { "local" - Xtransport TRANS(SocketUNIXFuncs) = { - /* Socket Interface */ - "unix", --#if !defined(LOCALCONN) -+#if !defined(LOCALCONN) && !defined(HAVE_ABSTRACT_SOCKETS) - TRANS_ALIAS, - #else - 0, ---- a/nx-X11/lib/xtrans/Xtransint.h -+++ b/nx-X11/lib/xtrans/Xtransint.h -@@ -374,9 +374,10 @@ typedef struct _Xtransport_table { - #define TRANS_DISABLED (1<<2) /* Don't open this one */ - #define TRANS_NOLISTEN (1<<3) /* Don't listen on this one */ - #define TRANS_NOUNLINK (1<<4) /* Dont unlink transport endpoints */ -+#define TRANS_ABSTRACT (1<<5) /* Use abstract sockets if available */ - - /* Flags to preserve when setting others */ --#define TRANS_KEEPFLAGS (TRANS_NOUNLINK) -+#define TRANS_KEEPFLAGS (TRANS_NOUNLINK|TRANS_ABSTRACT) - - /* - * readv() and writev() don't exist or don't work correctly on some diff --git a/debian/patches/0029_nxcomp_ppc64.full+lite.patch b/debian/patches/0029_nxcomp_ppc64.full+lite.patch deleted file mode 100644 index 6df6655f4..000000000 --- a/debian/patches/0029_nxcomp_ppc64.full+lite.patch +++ /dev/null @@ -1,17 +0,0 @@ -Description: Fix BIGENDIAN issue in nxcomp (relevant on PPC64 arch) -Author: Mihai Moldovan <ionic@ionic.de> - ---- a/nxcomp/Loop.cpp -+++ b/nxcomp/Loop.cpp -@@ -6832,9 +6832,9 @@ int WaitForRemote(int portNum) - { - sockaddr_in newAddr; - -- size_t addrLen = sizeof(sockaddr_in); -+ socklen_t addrLen = sizeof(sockaddr_in); - -- newFD = accept(proxyFD, (sockaddr *) &newAddr, (socklen_t *) &addrLen); -+ newFD = accept(proxyFD, (sockaddr *) &newAddr, &addrLen); - - if (newFD == -1) - { diff --git a/debian/patches/0030_nx-X11_configure-args.full.patch b/debian/patches/0030_nx-X11_configure-args.full.patch deleted file mode 100644 index 674f6cc75..000000000 --- a/debian/patches/0030_nx-X11_configure-args.full.patch +++ /dev/null @@ -1,47 +0,0 @@ -Description: Allow to pass in configure args. - Allow to pass in configure args. -Forward: pending -Author: Jan Engelhardt <jengelh@medozas.de> -Last-Update: 2012-02-14 ---- - nx-X11/lib/X11/Imakefile | 6 ++++-- - nx-X11/programs/Xserver/Imakefile | 4 +++- - 2 files changed, 7 insertions(+), 2 deletions(-) - ---- a/nx-X11/lib/X11/Imakefile -+++ b/nx-X11/lib/X11/Imakefile -@@ -1147,15 +1147,17 @@ ks_tables.h: $(XINCLUDESRC)/keysymdef.h - - includes:: ks_tables.h - -+CONFIGURE ?= ./configure -+ - #if NXLibraries - - $(NX_XCOMPCONFIGTARGET): - cd ../../../nxcomp && \ -- ./configure -+ ${CONFIGURE} - - $(NX_XCOMPEXTCONFIGTARGET): - cd ../../../nxcompext && \ -- ./configure -+ ${CONFIGURE} - - #ifdef SunArchitecture - $(NX_XCOMPLIBTARGET): $(NX_XCOMPCONFIGTARGET) ---- a/nx-X11/programs/Xserver/Imakefile -+++ b/nx-X11/programs/Xserver/Imakefile -@@ -1036,9 +1036,11 @@ NX_XSHADOWLIBDIR = $(XTOP)/../nxcomps - NX_XSHADOWLIBTARGET = $(NX_XSHADOWLIBDIR)/$(NX_XSHADOWLIBNAME) - NX_XSHADOWCONFIGTARGET = $(NX_XSHADOWLIBDIR)/config.status - -+CONFIGURE ?= ./configure -+ - $(NX_XSHADOWCONFIGTARGET): - cd $(NX_XSHADOWLIBDIR) && \ -- ./configure -+ ${CONFIGURE} - - #ifdef SunArchitecture - $(NX_XSHADOWLIBTARGET): $(NX_XSHADOWCONFIGTARGET) diff --git a/debian/patches/0031_nx-X11_parallel-make.full.patch b/debian/patches/0031_nx-X11_parallel-make.full.patch deleted file mode 100644 index 411d64e3e..000000000 --- a/debian/patches/0031_nx-X11_parallel-make.full.patch +++ /dev/null @@ -1,199 +0,0 @@ -Description: Enable parallel make - Restore ability to build things in parallel. - (${MAKE} must always appear in the rule directly, and not be - hidden through expansions of other variables to get this to work.) -Forward: pending -Author: Jan Engelhardt <jengelh@medozas.de> -Last-Update: 2012-01-26 22:29:13.993994227 +0100 - ---- - nx-X11/Makefile | 64 +++++++++++++++++----------------- - nx-X11/config/imake/Makefile.ini | 1 - nx-X11/lib/X11/Imakefile | 12 ++---- - nx-X11/programs/Xserver/Imakefile | 4 +- - 10 files changed, 60 insertions(+), 69 deletions(-) - ---- a/nx-X11/Makefile -+++ b/nx-X11/Makefile -@@ -32,8 +32,8 @@ VERSSRC = $(CONFIGSRC)/util/printver.c - VERSPROG = $(CONFIGSRC)/util/printver.exe - - all: -- @$(MAKE_CMD) xmakefile-exists || $(MAKE) all-initial -- @$(MAKE_CMD) $@ -+ @${MAKE} ${MAKE_OPTS} xmakefile-exists || $(MAKE) all-initial -+ @${MAKE} ${MAKE_OPTS} $@ - - all-initial: - @echo Please use make World, or on NT use nmake World.Win32. -@@ -57,8 +57,8 @@ World: - @date - @echo "" - @if [ -f xmakefile ]; then \ -- $(MAKE_CMD) -k distclean || \ -- $(MAKE_CMD) -k clean || \ -+ ${MAKE} ${MAKE_OPTS} -k distclean || \ -+ ${MAKE} ${MAKE_OPTS} -k clean || \ - $(RM) xmakefile; \ - fi - @if [ ! -f $(IRULESRC)/host.def ]; then \ -@@ -84,14 +84,14 @@ World: - # fi - cd $(IMAKESRC) && $(MAKE) $(FLAGS) clean - $(MAKE) $(MFLAGS) Makefile.boot -- $(MAKE_CMD) $(MFLAGS) version.def -+ ${MAKE} ${MAKE_OPTS} $(MFLAGS) version.def - $(MAKE) $(MFLAGS) Makefile.boot -- $(MAKE_CMD) $(MFLAGS) VerifyOS -- $(MAKE_CMD) $(MFLAGS) Makefiles -- $(MAKE_CMD) $(MFLAGS) BOOTSTRAPSUBDIRS= clean -- $(MAKE_CMD) $(MFLAGS) includes -- $(MAKE_CMD) $(MFLAGS) depend -- $(MAKE_CMD) $(MFLAGS) $(WORLDOPTS) World -+ ${MAKE} ${MAKE_OPTS} $(MFLAGS) VerifyOS -+ ${MAKE} ${MAKE_OPTS} $(MFLAGS) Makefiles -+ ${MAKE} ${MAKE_OPTS} $(MFLAGS) BOOTSTRAPSUBDIRS= clean -+ ${MAKE} ${MAKE_OPTS} $(MFLAGS) includes -+ ${MAKE} ${MAKE_OPTS} $(MFLAGS) depend -+ ${MAKE} ${MAKE_OPTS} $(MFLAGS) $(WORLDOPTS) World - @echo "" - @date - @echo "" -@@ -154,15 +154,15 @@ World.Win32: - -if exist xmakefile.bak del xmakefile.bak - -if exist xmakefile ren xmakefile xmakefile.bak - $(IMAKE:/=\) -s xmakefile -I$(IRULESRC) $(IMAKE_DEFINES) -DTOPDIR=$(TOP) -DCURDIR=$(CURRENT_DIR) -- $(MAKE_CMD) $(MFLAGS) VerifyOS -- $(MAKE_CMD) $(MFLAGS) Makefiles -- $(MAKE_CMD) $(MFLAGS) clean -+ ${MAKE} ${MAKE_OPTS} $(MFLAGS) VerifyOS -+ ${MAKE} ${MAKE_OPTS} $(MFLAGS) Makefiles -+ ${MAKE} ${MAKE_OPTS} $(MFLAGS) clean - cd $(CONFIGSRC)\util - $(MAKE) mkdirhier.exe - cd ..\.. -- $(MAKE_CMD) $(MFLAGS) includes -- $(MAKE_CMD) $(MFLAGS) depend -- $(MAKE_CMD) $(MFLAGS) $(WIN32WORLDOPTS) -+ ${MAKE} ${MAKE_OPTS} $(MFLAGS) includes -+ ${MAKE} ${MAKE_OPTS} $(MFLAGS) depend -+ ${MAKE} ${MAKE_OPTS} $(MFLAGS) $(WIN32WORLDOPTS) - @echo : - @echo : - @echo Full build of $(RELEASE) complete. -@@ -198,38 +198,38 @@ World.OS2: - # a copy of every rule that might be invoked at top level - - clean: -- -$(MAKE_CMD) $@ -+ -${MAKE_CMD} ${MAKE_OPTS} $@ - find config -type f | egrep '.*/Makefile$$' | while read makefile; do rm -f $$makefile; done - find lib -type f | egrep '.*/Makefile$$' | while read makefile; do rm -f $$makefile; done - find programs -type f | egrep '.*/Makefile$$' | while read makefile; do rm -f $$makefile; done - find include -type f | egrep '.*/Makefile$$' | while read makefile; do rm -f $$makefile; done - rm -f config/cf/{version.def,date.def} - dangerous_strip_clean: -- $(MAKE_CMD) $@ -+ ${MAKE} ${MAKE_OPTS} $@ - distclean: -- -$(MAKE_CMD) $@ -+ -${MAKE} ${MAKE_OPTS} $@ - $(RM) xmakefile $(IRULESRC)/version.def $(IRULESRC)/date.def - depend: -- $(MAKE_CMD) $@ -+ ${MAKE} ${MAKE_OPTS} $@ - Everything: -- $(MAKE_CMD) $@ -+ ${MAKE} ${MAKE_OPTS} $@ - external.ln: -- $(MAKE_CMD) $@ -+ ${MAKE} ${MAKE_OPTS} $@ - includes: -- $(MAKE_CMD) $@ -+ ${MAKE} ${MAKE_OPTS} $@ - install.sdk: -- $(MAKE_CMD) $@ -+ ${MAKE} ${MAKE_OPTS} $@ - install.ln: -- $(MAKE_CMD) $@ -+ ${MAKE} ${MAKE_OPTS} $@ - install.man: -- $(MAKE_CMD) $@ -+ ${MAKE} ${MAKE_OPTS} $@ - install: -- $(MAKE_CMD) $@ -+ ${MAKE} ${MAKE_OPTS} $@ - Makefiles: -- $(MAKE_CMD) $@ -+ ${MAKE} ${MAKE_OPTS} $@ - man_keywords: -- $(MAKE_CMD) $@ -+ ${MAKE} ${MAKE_OPTS} $@ - tags: -- $(MAKE_CMD) $@ -+ ${MAKE} ${MAKE_OPTS} $@ - VerifyOS: -- $(MAKE_CMD) $@ -+ ${MAKE} ${MAKE_OPTS} $@ ---- a/nx-X11/config/imake/Makefile.ini -+++ b/nx-X11/config/imake/Makefile.ini -@@ -21,7 +21,6 @@ IMAKEMDEP_CROSSCOMPILE = -DCROSSCOMPILE_ - SHELL = /bin/sh - RM = rm -f - MV = mv --MAKE = make - RM_CMD = $(RM) *.CKP *.ln *.BAK *.bak *.o core errs ,* *~ *.a \ - tags TAGS make.log - NPROC = 1 ---- a/nx-X11/lib/X11/Imakefile -+++ b/nx-X11/lib/X11/Imakefile -@@ -1161,25 +1161,23 @@ $(NX_XCOMPEXTCONFIGTARGET): - - #ifdef SunArchitecture - $(NX_XCOMPLIBTARGET): $(NX_XCOMPCONFIGTARGET) -- cd $(NX_XCOMPLIBDIR) && \ -- gmake -+ ${MAKE} -C $(NX_XCOMPLIBDIR) - - $(NX_XCOMPEXTLIBTARGET): $(NX_XCOMPEXTCONFIGTARGET) -- cd ../../../nxcompext && \ -- gmake -+ ${MAKE} -C ../../../nxcompext - - #else - $(NX_XCOMPLIBTARGET): $(NX_XCOMPCONFIGTARGET) -- cd $(NX_XCOMPLIBDIR) && \ -- make -+ ${MAKE} -C $(NX_XCOMPLIBDIR) - --$(NX_XCOMPEXTLIBTARGET): $(NX_XCOMPEXTCONFIGTARGET) -- cd ../../../nxcompext && \ -- make -+$(NX_XCOMPEXTLIBTARGET): $(NX_XCOMPEXTCONFIGTARGET) $(NX_XCOMPLIBTARGET) lib$(LIBNAME).so.$(SOXLIBREV) -+ ${MAKE} -C ../../../nxcompext - - #endif - --depend:: $(NX_XCOMPLIBTARGET) -+depend:: -+ -+lib$(LIBNAME).so.$(SOXLIBREV): $(NX_XCOMPLIBTARGET) - - all:: $(NX_XCOMPLIBTARGET) - ---- a/nx-X11/programs/Xserver/Imakefile -+++ b/nx-X11/programs/Xserver/Imakefile -@@ -1045,11 +1045,11 @@ $(NX_XSHADOWCONFIGTARGET): - #ifdef SunArchitecture - $(NX_XSHADOWLIBTARGET): $(NX_XSHADOWCONFIGTARGET) - cd $(NX_XSHADOWLIBDIR) && \ -- gmake -+ ${MAKE} - #else - $(NX_XSHADOWLIBTARGET): $(NX_XSHADOWCONFIGTARGET) - cd $(NX_XSHADOWLIBDIR) && \ -- rm -f *.o && make -+ rm -f *.o && ${MAKE} - #endif - - ServerTarget(nxagent,$(NX_XSHADOWLIBTARGET) $(NXAGENTDIRS),$(NXAGENTOBJS), \ diff --git a/debian/patches/0040_nx-X11_Fix-alpha-premultiplication-in-XRenderPa.full.patch b/debian/patches/0040_nx-X11_Fix-alpha-premultiplication-in-XRenderPa.full.patch deleted file mode 100644 index f33a3c5bf..000000000 --- a/debian/patches/0040_nx-X11_Fix-alpha-premultiplication-in-XRenderPa.full.patch +++ /dev/null @@ -1,31 +0,0 @@ -commit ffc87da60b2262432d56f15332b3edd15b7e00b2 -Author: Emanuele Giaquinta <emanuele.giaquinta@gmail.com> -Date: Tue Jun 23 16:09:50 2015 +0200 - - Fix alpha premultiplication in XRenderParseColor. - - Due to C arithmetic conversion rules we must use an unsigned constant (or a - cast) to perform the multiplication using unsigned arithmetic. - - Fixes ArcticaProject/nx-libs#55. - - Author: Emanuele Giaquinta <emanuele.giaquinta@gmail.com> - Reviewed-by: Jeremy Huddleston <jeremyhu@apple.com> - Rebased against NX: Mike Gabriel <mike.gabriel@das-netzwerkteam.de> - - v3: backport to nx-libs 3.5.0.x (Mihai Moldovan) - ---- a/nx-X11/lib/Xrender/Color.c -+++ b/nx-X11/lib/Xrender/Color.c -@@ -85,8 +85,8 @@ XRenderParseColor(Display *dpy, char *sp - def->blue = coreColor.blue; - def->alpha = 0xffff; - } -- def->red = (def->red * def->alpha) / 65535; -- def->green = (def->green * def->alpha) / 65535; -- def->blue = (def->blue * def->alpha) / 65535; -+ def->red = (def->red * def->alpha) / 0xffffU; -+ def->green = (def->green * def->alpha) / 0xffffU; -+ def->blue = (def->blue * def->alpha) / 0xffffU; - return 1; - } diff --git a/debian/patches/0051_nxcomp_macos105-fdisset.full+lite.patch b/debian/patches/0051_nxcomp_macos105-fdisset.full+lite.patch deleted file mode 100644 index fc79eb265..000000000 --- a/debian/patches/0051_nxcomp_macos105-fdisset.full+lite.patch +++ /dev/null @@ -1,82 +0,0 @@ -Description: workaround for Mac OS X 10.5 - The Mac OS X 10.5 SDK requires the second argument of FD_ISSET to be - writeable, although it does only access the data. Given that we have a - const pointer for a const struct, copy and pass that. - . - Note that this is merely a workaround for OS X 10.5, as 10.6 and later - define the second argument of FD_ISSET as const struct const *foo, too. - . - It is safe, as data is accessed read-only by FD_ISSET, even on 10.5. -Forward: pending -Author: Mihai Moldovan <ionic@ionic.de> ---- - nxcomp/Agent.h | 28 ++++++++++++++++++++-------- - 1 files changed, 20 insertions(+), 8 deletions(-) - ---- a/nxcomp/Agent.h -+++ b/nxcomp/Agent.h -@@ -149,30 +149,38 @@ class Agent - - int remoteCanRead(const fd_set * const readSet) - { -+ // OS X 10.5 requires the second argument to be non-const, so copy readSet. -+ // It's safe though, as FD_ISSET does not operate on it. -+ fd_set readWorkSet = *readSet; -+ - #if defined(TEST) || defined(INFO) - *logofs << "Agent: remoteCanRead() is " << -- (FD_ISSET(remoteFd_, readSet) && transport_ -> dequeuable() != 0) -- << " with FD_ISSET() " << (int) FD_ISSET(remoteFd_, readSet) -+ (FD_ISSET(remoteFd_, &readWorkSet) && transport_ -> dequeuable() != 0) -+ << " with FD_ISSET() " << (int) FD_ISSET(remoteFd_, &readWorkSet) - << " and dequeuable " << transport_ -> dequeuable() - << ".\n" << logofs_flush; - #endif - -- return (FD_ISSET(remoteFd_, readSet) && -+ return (FD_ISSET(remoteFd_, &readWorkSet) && - transport_ -> dequeuable() != 0); - } - - int remoteCanWrite(const fd_set * const writeSet) - { -+ // OS X 10.5 requires the second argument to be non-const, so copy writeSet. -+ // It's safe though, as FD_ISSET does not operate on it. -+ fd_set writeWorkSet = *writeSet; -+ - #if defined(TEST) || defined(INFO) - *logofs << "Agent: remoteCanWrite() is " << -- (FD_ISSET(remoteFd_, writeSet) && transport_ -> -+ (FD_ISSET(remoteFd_, &writeWorkSet) && transport_ -> - queuable() != 0 && canRead_ == 1) << " with FD_ISSET() " -- << (int) FD_ISSET(remoteFd_, writeSet) << " queueable " -+ << (int) FD_ISSET(remoteFd_, &writeWorkSet) << " queueable " - << transport_ -> queuable() << " channel can read " - << canRead_ << ".\n" << logofs_flush; - #endif - -- return (FD_ISSET(remoteFd_, writeSet) && -+ return (FD_ISSET(remoteFd_, &writeWorkSet) && - transport_ -> queuable() != 0 && - canRead_ == 1); - } -@@ -203,13 +211,17 @@ class Agent - - int proxyCanRead(const fd_set * const readSet) - { -+ // OS X 10.5 requires the second argument to be non-const, so copy readSet. -+ // It's safe though, as FD_ISSET does not operate on it. -+ fd_set readWorkSet = *readSet; -+ - #if defined(TEST) || defined(INFO) - *logofs << "Agent: proxyCanRead() is " -- << ((int) FD_ISSET(proxy -> getFd(), readSet) -+ << ((int) FD_ISSET(proxy -> getFd(), &readWorkSet) - << ".\n" << logofs_flush; - #endif - -- return (FD_ISSET(proxy -> getFd(), readSet)); -+ return (FD_ISSET(proxy -> getFd(), &readWorkSet)); - } - - int enqueueData(const char *data, const int size) const diff --git a/debian/patches/0052_nxcomp_macos10-nxauth-location.full+lite.patch b/debian/patches/0052_nxcomp_macos10-nxauth-location.full+lite.patch deleted file mode 100644 index e8c2073cf..000000000 --- a/debian/patches/0052_nxcomp_macos10-nxauth-location.full+lite.patch +++ /dev/null @@ -1,41 +0,0 @@ -Description: Fix nxauth location on Mac OS X 10 -Author: Mihai Moldovan <ionic@ionic.de> - ---- a/nxcomp/Auth.cpp -+++ b/nxcomp/Auth.cpp -@@ -217,22 +217,31 @@ int Auth::getCookie() - - // - // Use the nxauth command on Windows and the Mac, xauth -- // on all the other platforms. On Windows and on the Mac -- // we assume that the nxauth command is located under -- // bin in the client installation directory. On all the -+ // on all the other platforms. On Windows we assume that -+ // the nxauth command is located under bin in the client -+ // installation directory. On Mac OS X we assume that the -+ // command is located directly in the client installation -+ // directory, to make bundle shipping easier. On all the - // other platforms we use the default xauth command that - // is in our path. - // - - char command[DEFAULT_STRING_LIMIT]; - -- #if defined(__CYGWIN32__) || defined(__APPLE__) -+ #if defined(__CYGWIN32__) - - snprintf(command, DEFAULT_STRING_LIMIT - 1, - "%s/bin/nxauth", control -> SystemPath); - - *(command + DEFAULT_STRING_LIMIT - 1) = '\0'; - -+ #elif defined(__APPLE__) -+ -+ snprintf(command, DEFAULT_STRING_LIMIT - 1, -+ "%s/nxauth", control -> SystemPath); -+ -+ *(command + DEFAULT_STRING_LIMIT - 1) = '\0'; -+ - #else - - strcpy(command, "xauth"); diff --git a/debian/patches/0053_nx-X11_no-xcomp1-install-target.full.patch b/debian/patches/0053_nx-X11_no-xcomp1-install-target.full.patch deleted file mode 100644 index 5455cd558..000000000 --- a/debian/patches/0053_nx-X11_no-xcomp1-install-target.full.patch +++ /dev/null @@ -1,32 +0,0 @@ -Description: Avoid building libXcomp.so.1 (which is identical to libXcomp.so.3) -Author: Orion Poplawski <orion@cora.nwra.com> - ---- a/nx-X11/lib/X11/Imakefile -+++ b/nx-X11/lib/X11/Imakefile -@@ -63,7 +63,6 @@ NX_XCOMPLIBDIR = $(XTOP)/../nxcomp - NX_XCOMPLIBLINK = Xcomp - NX_XCOMPLIBTARGET = $(NX_XCOMPLIBDIR)/$(NX_XCOMPLIBNAME) - NX_REQUIREDLIBS = -L$(NX_XCOMPLIBDIR) -l$(NX_XCOMPLIBLINK) --NX_XCOMPDEPTARGET = $(BUILDLIBDIR)/$(NX_XCOMPLIBNAME) - NX_XCOMPCONFIGTARGET = $(NX_XCOMPLIBDIR)/config.status - - NX_XCOMPEXTLIBDIR = $(XTOP)/../nxcompext -@@ -1181,17 +1180,9 @@ lib$(LIBNAME).so.$(SOXLIBREV): $(NX_XCOM - - all:: $(NX_XCOMPLIBTARGET) - --$(NX_XCOMPDEPTARGET): -- ln -s $(NX_XCOMPLIBDIR)/$(NX_XCOMPLIBNAME) $(BUILDLIBDIR)/$(NX_XCOMPLIBNAME) -- ln -s $(NX_XCOMPLIBDIR)/$(NX_XCOMPLIBNAME).1 $(BUILDLIBDIR)/$(NX_XCOMPLIBNAME).1 -- - depend:: $(NX_XCOMPLIBTARGET) - --all:: $(NX_XCOMPDEPTARGET) $(NX_XCOMPEXTLIBTARGET) -- --clean:: -- rm -f $(BUILDLIBDIR)/$(NX_XCOMPLIBNAME) -- rm -f $(BUILDLIBDIR)/$(NX_XCOMPLIBNAME).1 -+all:: $(NX_XCOMPEXTLIBTARGET) - - #endif - diff --git a/debian/patches/0054_nx-X11_ppc64-ftbfs.full.patch b/debian/patches/0054_nx-X11_ppc64-ftbfs.full.patch deleted file mode 100644 index 6dca367ba..000000000 --- a/debian/patches/0054_nx-X11_ppc64-ftbfs.full.patch +++ /dev/null @@ -1,13 +0,0 @@ -Description: Fix FTBFS on ppc64 architecture -Author: Orion Poplawski <orion@cora.nwra.com> ---- a/nx-X11/lib/GL/mesa/main/Imakefile.inc -+++ b/nx-X11/lib/GL/mesa/main/Imakefile.inc -@@ -1,5 +1,8 @@ - XCOMM $XFree86: xc/lib/GL/mesa/src/Imakefile.inc,v 1.7tsi Exp $ - -+/* gcc on ppc64 defines this, causes macro recursion with pixel below */ -+#undef pixel -+ - #ifndef MesaBuildDir - #define MesaBuildDir $(GLXLIBSRC)/mesa/main/ - #endif diff --git a/debian/patches/0055_nx-X11_imake-Werror-format-security.full.patch b/debian/patches/0055_nx-X11_imake-Werror-format-security.full.patch deleted file mode 100644 index afbc2bb69..000000000 --- a/debian/patches/0055_nx-X11_imake-Werror-format-security.full.patch +++ /dev/null @@ -1,1089 +0,0 @@ -Description: Fix FTBFS when compiled with -Werror=format-security -Author: Orion Poplawski <orion@cora.nwra.com> ---- a/nx-X11/config/imake/imake.c -+++ b/nx-X11/config/imake/imake.c -@@ -7,8 +7,6 @@ - * be passed to the template file. * - * * - ***************************************************************************/ --/* $XFree86: xc/config/imake/imake.c,v 3.63tsi Exp $ */ -- - /* - * - Copyright (c) 1985, 1986, 1987, 1998 The Open Group -@@ -153,23 +151,14 @@ in this Software without prior written a - #endif - #include <stdlib.h> - #include <stdio.h> --#ifdef MONOLITH --# include "Xosdefs.h" --#else --# include <X11/Xosdefs.h> --#endif -+#include <stdarg.h> -+#include <X11/Xfuncproto.h> -+#include <X11/Xosdefs.h> - #include <string.h> - #include <ctype.h> - #ifdef WIN32 - # include "Xw32defs.h" - #endif --#if 0 --#ifndef X_NOT_POSIX --# ifndef _POSIX_SOURCE --# define _POSIX_SOURCE --# endif --#endif --#endif - #include <sys/types.h> - #include <fcntl.h> - #ifdef X_NOT_POSIX -@@ -231,22 +220,16 @@ typedef union wait waitType; - # define WIFEXITED(w) waitCode(w) - # endif - #endif /* X_NOT_POSIX */ --# include <stdlib.h> --#if defined(macII) && !defined(__STDC__) /* stdlib.h fails to define these */ --char *malloc(), *realloc(); --#endif /* macII */ -+#include <stdlib.h> - #include <errno.h> - #ifdef __minix_vmd --#define USE_FREOPEN 1 -+# define USE_FREOPEN 1 - #endif - --#if !((defined(sun) && !defined(SVR4)) || defined(macII)) --#define USE_STRERROR 1 --#endif - #ifndef WIN32 --#include <sys/utsname.h> -+# include <sys/utsname.h> - #else --#include <windows.h> -+# include <windows.h> - #endif - #ifndef SYS_NMLN - # ifdef _SYS_NMLN -@@ -256,39 +239,22 @@ char *malloc(), *realloc(); - # endif - #endif - #if defined(linux) || defined(__GNU__) || defined(__GLIBC__) --#include <limits.h> --#include <stdio.h> -+# include <limits.h> -+# include <stdio.h> - #endif - #ifdef __QNX__ --#include <unix.h> --#endif -- --/* -- * This define of strerror is copied from (and should be identical to) -- * Xos.h, which we don't want to include here for bootstrapping reasons. -- */ --#ifndef USE_STRERROR --# ifndef strerror --extern char *sys_errlist[]; --extern int sys_nerr; --# define strerror(n) \ -- (((n) >= 0 && (n) < sys_nerr) ? sys_errlist[n] : "unknown error") --# endif -+# include <unix.h> - #endif - - #if defined(__NetBSD__) /* see code clock in init() below */ --#include <sys/utsname.h> --#endif -- --#if !(defined(Lynx) || defined(__Lynx__) || (defined(SVR4) && !defined(sun))) && !defined (__CYGWIN__) --#define HAS_MKSTEMP -+# include <sys/utsname.h> - #endif - - typedef unsigned char boolean; - #define TRUE 1 - #define FALSE 0 - --# include "imakemdep.h" -+#include "imakemdep.h" - #ifdef CROSSCOMPILE - # include "imakemdep_cpp.h" - #endif -@@ -305,7 +271,7 @@ int xvariables[10]; - #endif - - #ifndef PATH_MAX --#define PATH_MAX 1024 -+# define PATH_MAX 1024 - #endif - - /* -@@ -331,11 +297,13 @@ void KludgeOutputLine(char **), KludgeRe - # endif - #endif - --char *cpp = NULL; -+const char *cpp = NULL; - --char *tmpMakefile = "/tmp/Imf.XXXXXX"; --char *tmpImakefile = "/tmp/IIf.XXXXXX"; --char *make_argv[ ARGUMENTS ] = { -+const char *tmpMakefile; -+const char *tmpMakefileTemplate = "/tmp/Imf.XXXXXX"; -+const char *tmpImakefile; -+const char *tmpImakefileTemplate = "/tmp/IIf.XXXXXX"; -+const char *make_argv[ ARGUMENTS ] = { - #ifdef WIN32 - "nmake" - #else -@@ -345,53 +313,53 @@ char *make_argv[ ARGUMENTS ] = { - - int make_argindex; - int cpp_argindex; --char *Imakefile = NULL; --char *Makefile = "Makefile"; --char *Template = "Imake.tmpl"; --char *ImakefileC = "Imakefile.c"; -+const char *Imakefile = NULL; -+const char *Makefile = "Makefile"; -+const char *Template = "Imake.tmpl"; -+const char *ImakefileC = "Imakefile.c"; - boolean haveImakefileC = FALSE; --char *cleanedImakefile = NULL; --char *program; --char *FindImakefile(char *Imakefile); --char *ReadLine(FILE *tmpfd, char *tmpfname); --char *CleanCppInput(char *imakefile); --char *Strdup(char *cp); -+const char *cleanedImakefile = NULL; -+const char *program; -+const char *FindImakefile(const char *Imakefile); -+char *ReadLine(FILE *tmpfd, const char *tmpfname); -+const char *CleanCppInput(const char *imakefile); -+char *Strdup(const char *cp); - char *Emalloc(int size); --void LogFatalI(char *s, int i), LogFatal(char *x0, char *x1), -- LogMsg(char *x0, char *x1); -+void LogFatal(const char *x0, ...) _X_ATTRIBUTE_PRINTF(1, 2); -+void LogMsg(const char *x0, ...) _X_ATTRIBUTE_PRINTF(1, 2); - - void showit(FILE *fd); - void wrapup(void); - void init(void); --void AddMakeArg(char *arg); --void AddCppArg(char *arg); -+void AddMakeArg(const char *arg); -+void AddCppArg(const char *arg); - #ifdef CROSSCOMPILE - char *CrossCompileCPP(void); - #endif - void SetOpts(int argc, char **argv); --void CheckImakefileC(char *masterc); --void cppit(char *imakefile, char *template, char *masterc, -- FILE *outfd, char *outfname); -+void CheckImakefileC(const char *masterc); -+void cppit(const char *imakefile, const char *template, const char *masterc, -+ FILE *outfd, const char *outfname); - void makeit(void); --void CleanCppOutput(FILE *tmpfd, char *tmpfname); -+void CleanCppOutput(FILE *tmpfd, const char *tmpfname); - boolean isempty(char *line); --void writetmpfile(FILE *fd, char *buf, int cnt, char *fname); -+void writetmpfile(FILE *fd, const char *buf, int cnt, const char *fname); - #ifdef SIGNALRETURNSINT - int catch(int sig); - #else - void catch(int sig); - #endif --void showargs(char **argv); --boolean optional_include(FILE *inFile, char *defsym, char *fname); --void doit(FILE *outfd, char *cmd, char **argv); -+void showargs(const char **argv); -+boolean optional_include(FILE *inFile, const char *defsym, const char *fname); -+void doit(FILE *outfd, const char *cmd, const char **argv); - boolean define_os_defaults(FILE *inFile); - #ifdef CROSSCOMPILE - static void get_cross_compile_dir(FILE *inFile); - #endif - #ifdef CROSSCOMPILEDIR --char *CrossCompileDir = CROSSCOMPILEDIR; -+const char *CrossCompileDir = CROSSCOMPILEDIR; - #else --char *CrossCompileDir = ""; -+const char *CrossCompileDir = ""; - #endif - boolean CrossCompiling = FALSE; - -@@ -428,24 +396,25 @@ main(int argc, char *argv[]) - if ((tmpfd = fopen(tmpMakefile, "w+")) == NULL) - LogFatal("Cannot create temporary file %s.", tmpMakefile); - } else { --#ifdef HAS_MKSTEMP -+#ifdef HAVE_MKSTEMP - int fd; - #endif -- tmpMakefile = Strdup(tmpMakefile); --#ifndef HAS_MKSTEMP -- if (mktemp(tmpMakefile) == NULL || -- (tmpfd = fopen(tmpMakefile, "w+")) == NULL) { -- LogFatal("Cannot create temporary file %s.", tmpMakefile); -+ char *tmpMakefileName = Strdup(tmpMakefileTemplate); -+#ifndef HAVE_MKSTEMP -+ if (mktemp(tmpMakefileName) == NULL || -+ (tmpfd = fopen(tmpMakefileName, "w+")) == NULL) { -+ LogFatal("Cannot create temporary file %s.", tmpMakefileName); - } - #else -- fd = mkstemp(tmpMakefile); -+ fd = mkstemp(tmpMakefileName); - if (fd == -1 || (tmpfd = fdopen(fd, "w+")) == NULL) { - if (fd != -1) { -- unlink(tmpMakefile); close(fd); -+ unlink(tmpMakefileName); close(fd); - } -- LogFatal("Cannot create temporary file %s.", tmpMakefile); -+ LogFatal("Cannot create temporary file %s.", tmpMakefileName); - } - #endif -+ tmpMakefile = tmpMakefileName; - } - AddMakeArg("-f"); - AddMakeArg( tmpMakefile ); -@@ -498,7 +467,7 @@ void - catch(int sig) - { - errno = 0; -- LogFatalI("Signal %d.", sig); -+ LogFatal("Signal %d.", sig); - } - - /* -@@ -572,21 +541,21 @@ init(void) - } - - void --AddMakeArg(char *arg) -+AddMakeArg(const char *arg) - { - errno = 0; - if (make_argindex >= ARGUMENTS-1) -- LogFatal("Out of internal storage.", ""); -+ LogFatal("Out of internal storage."); - make_argv[ make_argindex++ ] = arg; - make_argv[ make_argindex ] = NULL; - } - - void --AddCppArg(char *arg) -+AddCppArg(const char *arg) - { - errno = 0; - if (cpp_argindex >= ARGUMENTS-1) -- LogFatal("Out of internal storage.", ""); -+ LogFatal("Out of internal storage."); - cpp_argv[ cpp_argindex++ ] = arg; - cpp_argv[ cpp_argindex ] = NULL; - } -@@ -618,7 +587,7 @@ SetOpts(int argc, char **argv) - else { - argc--, argv++; - if (! argc) -- LogFatal("No description arg after -f flag", ""); -+ LogFatal("No description arg after -f flag"); - Imakefile = argv[0]; - } - } else if (argv[0][1] == 's') { -@@ -628,7 +597,7 @@ SetOpts(int argc, char **argv) - else { - argc--, argv++; - if (!argc) -- LogFatal("No description arg after -s flag", ""); -+ LogFatal("No description arg after -s flag"); - Makefile = ((argv[0][0] == '-') && !argv[0][1]) ? - NULL : argv[0]; - } -@@ -642,7 +611,7 @@ SetOpts(int argc, char **argv) - else { - argc--, argv++; - if (! argc) -- LogFatal("No description arg after -T flag", ""); -+ LogFatal("No description arg after -T flag"); - Template = argv[0]; - } - } else if (argv[0][1] == 'C') { -@@ -651,7 +620,7 @@ SetOpts(int argc, char **argv) - else { - argc--, argv++; - if (! argc) -- LogFatal("No imakeCfile arg after -C flag", ""); -+ LogFatal("No imakeCfile arg after -C flag"); - ImakefileC = argv[0]; - } - } else if (argv[0][1] == 'v') { -@@ -667,10 +636,10 @@ SetOpts(int argc, char **argv) - if (!cpp) - { - AddCppArg("-E"); --#ifdef __GNUC__ -+# ifdef __GNUC__ - if (verbose) - AddCppArg("-v"); --#endif -+# endif - cpp = DEFAULT_CC; - } - # else -@@ -686,8 +655,8 @@ SetOpts(int argc, char **argv) - AddCppArg(ImakefileC); - } - --char * --FindImakefile(char *Imakefile) -+const char * -+FindImakefile(const char *Imakefile) - { - if (Imakefile) { - if (access(Imakefile, R_OK) < 0) -@@ -695,7 +664,7 @@ FindImakefile(char *Imakefile) - } else { - if (access("Imakefile", R_OK) < 0) { - if (access("imakefile", R_OK) < 0) -- LogFatal("No description file.", ""); -+ LogFatal("No description file."); - else - Imakefile = "imakefile"; - } else -@@ -704,44 +673,50 @@ FindImakefile(char *Imakefile) - return(Imakefile); - } - --void --LogFatalI(char *s, int i) -+static void _X_ATTRIBUTE_PRINTF(1, 0) -+vLogMsg(const char *fmt, va_list args) - { -- /*NOSTRICT*/ -- LogFatal(s, (char *)(long)i); -+ int error_number = errno; -+ -+ if (error_number) { -+ fprintf(stderr, "%s: ", program); -+ fprintf(stderr, "%s\n", strerror(error_number)); -+ } -+ fprintf(stderr, "%s: ", program); -+ vfprintf(stderr, fmt, args); -+ fprintf(stderr, "\n"); - } - - void --LogFatal(char *x0, char *x1) -+LogFatal(const char *fmt, ...) - { - static boolean entered = FALSE; -+ va_list args; - - if (entered) - return; - entered = TRUE; - -- LogMsg(x0, x1); -+ va_start(args, fmt); -+ vLogMsg(fmt, args); -+ va_end(args); - fprintf(stderr, " Stop.\n"); - wrapup(); - exit(1); - } - - void --LogMsg(char *x0, char *x1) -+LogMsg(const char *fmt, ...) - { -- int error_number = errno; -+ va_list args; - -- if (error_number) { -- fprintf(stderr, "%s: ", program); -- fprintf(stderr, "%s\n", strerror(error_number)); -- } -- fprintf(stderr, "%s: ", program); -- fprintf(stderr, x0, x1); -- fprintf(stderr, "\n"); -+ va_start(args, fmt); -+ vLogMsg(fmt, args); -+ va_end(args); - } - - void --showargs(char **argv) -+showargs(const char **argv) - { - for (; *argv; argv++) - fprintf(stderr, "%s ", *argv); -@@ -751,7 +726,7 @@ showargs(char **argv) - #define ImakefileCHeader "/* imake - temporary file */" - - void --CheckImakefileC(char *masterc) -+CheckImakefileC(const char *masterc) - { - char mkcbuf[1024]; - FILE *inFile; -@@ -767,7 +742,8 @@ CheckImakefileC(char *masterc) - fclose(inFile); - LogFatal("Refuse to overwrite: %s", masterc); - } -- fclose(inFile); -+ else -+ fclose(inFile); - } - } - -@@ -778,7 +754,7 @@ CheckImakefileC(char *masterc) - #define OverrideWarning "Warning: local file \"%s\" overrides global macros." - - boolean --optional_include(FILE *inFile, char *defsym, char *fname) -+optional_include(FILE *inFile, const char *defsym, const char *fname) - { - errno = 0; - if (access(fname, R_OK) == 0) { -@@ -790,7 +766,7 @@ optional_include(FILE *inFile, char *def - } - - void --doit(FILE *outfd, char *cmd, char **argv) -+doit(FILE *outfd, const char *cmd, const char **argv) - { - int pid; - waitType status; -@@ -805,18 +781,18 @@ doit(FILE *outfd, char *cmd, char **argv - if (status < 0) - LogFatal("Cannot spawn %s.", cmd); - if (status > 0) -- LogFatalI("Exit code %d.", status); -+ LogFatal("Exit code %d.", status); - #else - pid = fork(); - if (pid < 0) -- LogFatal("Cannot fork.", ""); -+ LogFatal("Cannot fork."); - if (pid) { /* parent... simply wait */ - while (wait(&status) > 0) { - errno = 0; - if (WIFSIGNALED(status)) -- LogFatalI("Signal %d.", waitSig(status)); -+ LogFatal("Signal %d.", waitSig(status)); - if (WIFEXITED(status) && waitCode(status)) -- LogFatalI("Exit code %d.", waitCode(status)); -+ LogFatal("Exit code %d.", waitCode(status)); - } - } - else { /* child... dup and exec cmd */ -@@ -832,7 +808,7 @@ doit(FILE *outfd, char *cmd, char **argv - - #if !defined WIN32 - static void --parse_utsname(struct utsname *name, char *fmt, char *result, char *msg) -+parse_utsname(struct utsname *name, const char *fmt, char *result, const char *msg) - { - char buf[SYS_NMLN * 5 + 1]; - char *ptr = buf; -@@ -892,7 +868,7 @@ parse_utsname(struct utsname *name, char - - /* Just in case... */ - if (strlen(buf) >= sizeof(buf)) -- LogFatal("Buffer overflow parsing uname.", ""); -+ LogFatal("Buffer overflow parsing uname."); - - /* Parse the buffer. The sscanf() return value is rarely correct. */ - *result = '\0'; -@@ -978,13 +954,23 @@ const char *libc_c= - static void - get_libc_version(FILE *inFile) - { -- char aout[] = "/tmp/imakeXXXXXX"; -+ char aout[4096], *tmpdir; - FILE *fp; - const char *format = "%s -o %s -x c -"; - char *cc; - int len; - char *command; - -+ /* If $TMPDIR is defined and has an acceptable length, -+ * use that as tmp dir, else use /tmp. That fixes -+ * problems with /tmp mounted "noexec". -+ */ -+ if((tmpdir = getenv("TMPDIR")) != NULL && strlen(tmpdir) < (4096-13)) -+ strcpy(aout, tmpdir); -+ else -+ strcpy(aout, "/tmp"); -+ strcat(aout, "/imakeXXXXXX"); -+ - /* Pre-create temp file safely */ - { - /* Linux + ELF has mkstemp() */ -@@ -1000,7 +986,8 @@ get_libc_version(FILE *inFile) - cc = "gcc"; - len = strlen (aout) + strlen (format) + strlen (cc); - if (len < 128) len = 128; -- command = alloca (len); -+ if((command = alloca (len)) == NULL) -+ abort(); - - if (snprintf (command , len, format, cc, aout) == len) - abort (); -@@ -1015,12 +1002,16 @@ get_libc_version(FILE *inFile) - abort (); - - while (fgets (command, len, fp)) -- fprintf (inFile, command); -+ fputs (command, inFile); - - len = pclose (fp); - remove (aout); -- if (len) -- abort (); -+ if (len) { -+ /* handwave furiously */ -+ printf("#define DefaultLinuxCLibMajorVersion 6\n"); -+ printf("#define DefaultLinuxCLibMinorVersion 12\n"); -+ printf("#define DefaultLinuxCLibTeenyVersion 0\n"); -+ } - } - #endif - -@@ -1031,14 +1022,14 @@ get_stackprotector(FILE *inFile) - FILE *fp; - char *cc; - char command[1024], buf[1024]; -- -+ - cc = getenv("CC"); - if (cc == NULL) { - cc = "cc"; - } - snprintf(command, sizeof(command), "%s -v 2>&1", cc); - fp = popen(command, "r"); -- if (fp == NULL) -+ if (fp == NULL) - abort(); - while (fgets(buf, sizeof(buf), fp)) { - if (strstr(buf, "propolice") != NULL) { -@@ -1046,11 +1037,10 @@ get_stackprotector(FILE *inFile) - break; - } - } -- if (pclose(fp)) -- abort(); -+ pclose(fp); - } - #endif -- -+ - - #if defined CROSSCOMPILE || defined linux || defined(__GLIBC__) - static void -@@ -1058,9 +1048,9 @@ get_distrib(FILE *inFile) - { - struct stat sb; - -- static char* suse = "/etc/SuSE-release"; -- static char* redhat = "/etc/redhat-release"; -- static char* debian = "/etc/debian_version"; -+ static const char* suse = "/etc/SuSE-release"; -+ static const char* redhat = "/etc/redhat-release"; -+ static const char* debian = "/etc/debian_version"; - - fprintf (inFile, "%s\n", "#define LinuxUnknown 0"); - fprintf (inFile, "%s\n", "#define LinuxSuSE 1"); -@@ -1076,14 +1066,14 @@ get_distrib(FILE *inFile) - fprintf (inFile, "%s\n", "#define LinuxWare 11"); - fprintf (inFile, "%s\n", "#define LinuxYggdrasil 12"); - --#ifdef CROSSCOMPILE -+# ifdef CROSSCOMPILE - if (CrossCompiling) { - fprintf (inFile, "%s\n", - "#define DefaultLinuxDistribution LinuxUnknown"); - fprintf (inFile, "%s\n", "#define DefaultLinuxDistName Unknown"); - return; - } --#endif -+# endif - if (lstat (suse, &sb) == 0) { - fprintf (inFile, "%s\n", "#define DefaultLinuxDistribution LinuxSuSE"); - fprintf (inFile, "%s\n", "#define DefaultLinuxDistName SuSE"); -@@ -1116,7 +1106,7 @@ get_ld_version(FILE *inFile) - int ldmajor, ldminor; - const char *ld = "ld -v"; - --#ifdef CROSSCOMPILE -+# ifdef CROSSCOMPILE - if (CrossCompiling) { - char cmd[PATH_MAX]; - strcpy (cmd, CrossCompileDir); -@@ -1124,7 +1114,7 @@ get_ld_version(FILE *inFile) - strcat (cmd,ld); - ldprog = popen (cmd, "r"); - } else --#endif -+# endif - ldprog = popen (ld, "r"); - - if (ldprog) { -@@ -1192,7 +1182,7 @@ get_binary_format(FILE *inFile) - * Returns: 0 if successful, -1 if not. - */ - static int --ask_sun_compiler_for_versions(const char *cmd, const char *path, -+ask_sun_compiler_for_versions(const char *cmd, const char *path, - int *cmajor, int *cminor) - { - char buf[BUFSIZ]; -@@ -1201,7 +1191,7 @@ ask_sun_compiler_for_versions(const char - FILE* ccproc; - const char vflag[] = " -V 2>&1"; - int retval = -1; -- -+ - int len = strlen(cmd) + sizeof(vflag); - - if (path != NULL) { -@@ -1229,7 +1219,7 @@ ask_sun_compiler_for_versions(const char - } - } - if (retval != 0) { -- fprintf(stderr, -+ fprintf(stderr, - "warning: could not parse version number in output of:\n" - " %s\n", cmdtorun); - } -@@ -1247,23 +1237,22 @@ get_sun_compiler_versions (FILE *inFile) - { - const char* sunpro_path = "/opt/SUNWspro/bin"; - int cmajor, cminor, found = 0; -- struct stat sb; - - /* If cross-compiling, only check CrossCompilerDir for compilers. -- * If not cross-compiling, first check cc in users $PATH, -+ * If not cross-compiling, first check cc in users $PATH, - * then try /opt/SUNWspro if not found in the users $PATH - */ - --#if defined CROSSCOMPILE -+# if defined CROSSCOMPILE - if (CrossCompiling) { - if (ask_sun_compiler_for_versions("cc", CrossCompileDir, - &cmajor, &cminor) == 0) { - found = 1; - } -- } -+ } - else --#endif -- { -+# endif -+ { - if (ask_sun_compiler_for_versions("cc", NULL, &cmajor, &cminor) == 0) { - found = 1; - } else if (ask_sun_compiler_for_versions("cc", sunpro_path, -@@ -1282,22 +1271,22 @@ get_sun_compiler_versions (FILE *inFile) - - /* Now do it again for C++ compiler (CC) */ - found = 0; --#if defined CROSSCOMPILE -+# if defined CROSSCOMPILE - if (CrossCompiling) { - if (ask_sun_compiler_for_versions("CC", CrossCompileDir, - &cmajor, &cminor) == 0) { - found = 1; - } -- } -+ } - else --#endif -- { -+# endif -+ { - if (ask_sun_compiler_for_versions("CC", NULL, &cmajor, &cminor) == 0) { - found = 1; - } else if (ask_sun_compiler_for_versions("CC", sunpro_path, - &cmajor, &cminor) == 0) { - found = 1; -- fprintf(inFile, -+ fprintf(inFile, - "#define DefaultSunProCplusplusCompilerDir %s", sunpro_path); - } - } -@@ -1318,7 +1307,7 @@ static void - get_gcc_version(FILE *inFile, char *name) - { - fprintf (inFile, "#define HasGcc 1\n"); --#ifdef CROSSCOMPILE -+# ifdef CROSSCOMPILE - if (CrossCompiling) - { - if (gnu_c > 1) { -@@ -1329,20 +1318,20 @@ get_gcc_version(FILE *inFile, char *name - fprintf (inFile, "#define GccMajorVersion %d\n", gnu_c); - fprintf (inFile, "#define GccMinorVersion %d\n", gnu_c_minor); - } else --#endif -+# endif - { --#if __GNUC__ > 1 -+# if __GNUC__ > 1 - fprintf (inFile, "#define HasGcc2 1\n"); --# if __GNUC__ > 2 -+# if __GNUC__ > 2 - fprintf (inFile, "#define HasGcc3 1\n"); -+# endif - # endif --#endif - fprintf (inFile, "#define GccMajorVersion %d\n", __GNUC__); - fprintf (inFile, "#define GccMinorVersion %d\n", __GNUC_MINOR__); - } --#if defined(HAS_MERGE_CONSTANTS) -+# if defined(HAS_MERGE_CONSTANTS) - fprintf (inFile, "#define HasGccMergeConstants %d\n", HAS_MERGE_CONSTANTS); --#endif -+# endif - } - #endif - -@@ -1350,8 +1339,8 @@ static boolean - get_gcc(char *cmd) - { - struct stat sb; -- static char* gcc_path[] = { --# if defined(linux) || \ -+ static const char* gcc_path[] = { -+#if defined(linux) || \ - defined(__NetBSD__) || \ - defined(__OpenBSD__) || \ - defined(__FreeBSD__) || \ -@@ -1362,14 +1351,14 @@ get_gcc(char *cmd) - defined(__GNU__) || \ - defined(__GLIBC__) - "/usr/bin/cc", /* for Linux PostIncDir */ --# endif -+#endif - "/usr/local/bin/gcc", - "/opt/gnu/bin/gcc", - "/usr/pkg/bin/gcc" - }; - - #ifdef CROSSCOMPILE -- static char* cross_cc_name[] = { -+ static const char* cross_cc_name[] = { - "cc", - "gcc" - }; -@@ -1399,7 +1388,7 @@ get_gcc(char *cmd) - return FALSE; - } - --#if defined CROSSCOMPILE || !defined __UNIXOS2__ -+#ifdef CROSSCOMPILE - static void - get_gcc_incdir(FILE *inFile, char* name) - { -@@ -1428,14 +1417,14 @@ get_gcc_incdir(FILE *inFile, char* name) - boolean - define_os_defaults(FILE *inFile) - { --#if defined CROSSCOMPILE || ( !defined(WIN32) && !defined(__UNIXOS2__) ) --#ifdef CROSSCOMPILE --#ifdef __GNUC__ -+#if defined CROSSCOMPILE || !defined(WIN32) -+# ifdef CROSSCOMPILE -+# ifdef __GNUC__ - if (1) --#else -+# else - if ((sys != win32) && (sys != emx)) --#endif --#endif -+# endif -+# endif - { - # if (defined(DEFAULT_OS_NAME) || defined(DEFAULT_OS_MAJOR_REV) || \ - defined(DEFAULT_OS_MINOR_REV) || defined(DEFAULT_OS_TEENY_REV)) -@@ -1444,16 +1433,16 @@ define_os_defaults(FILE *inFile) - char buf[SYS_NMLN * 5 + 1]; - - /* Obtain the system information. */ --#ifdef CROSSCOMPILE -+# ifdef CROSSCOMPILE - if (!CrossCompiling) --#endif -+# endif - { - if (uname(&uts_name) < 0) -- LogFatal("Cannot invoke uname", ""); -+ LogFatal("Cannot invoke uname"); - else - name = &uts_name; - } --#if defined CROSSCOMPILE && (defined linux || defined(__GLIBC__)) -+# if defined CROSSCOMPILE && (defined linux || defined(__GLIBC__)) - else { - strncpy(uts_name.sysname,cross_uts_sysname,SYS_NMLN); - strncpy(uts_name.release,cross_uts_release,SYS_NMLN); -@@ -1461,14 +1450,14 @@ define_os_defaults(FILE *inFile) - strncpy(uts_name.machine,cross_uts_machine,SYS_NMLN); - name = &uts_name; - } --#endif --# ifdef __FreeBSD__ -+# endif -+# ifdef __FreeBSD__ - /* Override for compiling in chroot of other OS version, such as - * in the bento build cluster. - */ - { - char *e; -- if ((e = getenv("OSREL")) != NULL && -+ if ((e = getenv("OSREL")) != NULL && - strlen(name->sysname) + strlen(e) + 1 < SYS_NMLN) { - strcpy(name->release, e); - strcpy(name->version, name->sysname); -@@ -1476,7 +1465,7 @@ define_os_defaults(FILE *inFile) - strcat(name->version, e); - } - } --# endif -+# endif - - # if defined DEFAULT_OS_NAME - # if defined CROSSCOMPILE -@@ -1648,10 +1637,8 @@ define_os_defaults(FILE *inFile) - char name[PATH_MAX]; - if (get_gcc(name)) { - get_gcc_version (inFile,name); --# if defined CROSSCOMPILE || !defined __UNIXOS2__ --# if defined CROSSCOMPILE -+# if defined CROSSCOMPILE - if (sys != emx) --# endif - get_gcc_incdir(inFile,name); - # endif - } -@@ -1664,7 +1651,7 @@ define_os_defaults(FILE *inFile) - get_binary_format(inFile); - # endif - } --#endif /* !WIN32 && !__UNIXOS2__*/ -+#endif /* !WIN32 */ - #if defined WIN32 - # ifdef CROSSCOMPILE - else if (sys == win32 && !CrossCompiling) -@@ -1688,8 +1675,6 @@ define_os_defaults(FILE *inFile) - #endif /* WIN32 */ - #ifdef CROSSCOMPILE - else if (sys == emx) --#endif --#if defined CROSSCOMPILE || defined __UNIXOS2__ - { - fprintf(inFile, "#define DefaultOSMajorVersion 4\n"); - fprintf(inFile, "#define DefaultOSMinorVersion 0\n"); -@@ -1703,8 +1688,8 @@ define_os_defaults(FILE *inFile) - } - - void --cppit(char *imakefile, char *template, char *masterc, -- FILE *outfd, char *outfname) -+cppit(const char *imakefile, const char *template, const char *masterc, -+ FILE *outfd, const char *outfname) - { - FILE *inFile; - -@@ -1721,8 +1706,11 @@ cppit(char *imakefile, char *template, c - fprintf(inFile, IncludeFmt, ImakeTmplSym) < 0 || - optional_include(inFile, "IMAKE_ADMIN_MACROS", "adminmacros") || - optional_include(inFile, "IMAKE_LOCAL_MACROS", "localmacros") || -- fflush(inFile) || -- fclose(inFile)) -+ fflush(inFile)) { -+ fclose(inFile); -+ LogFatal("Cannot write to %s.", masterc); -+ } -+ else if (fclose(inFile)) - LogFatal("Cannot write to %s.", masterc); - /* - * Fork and exec cpp -@@ -1737,8 +1725,8 @@ makeit(void) - doit(NULL, make_argv[0], make_argv); - } - --char * --CleanCppInput(char *imakefile) -+const char * -+CleanCppInput(const char *imakefile) - { - FILE *outFile = NULL; - FILE *inFile; -@@ -1792,28 +1780,29 @@ CleanCppInput(char *imakefile) - strcmp(ptoken, "pragma") && - strcmp(ptoken, "undef")) { - if (outFile == NULL) { --#ifdef HAS_MKSTEMP -+#ifdef HAVE_MKSTEMP - int fd; - #endif -- tmpImakefile = Strdup(tmpImakefile); --#ifndef HAS_MKSTEMP -- if (mktemp(tmpImakefile) == NULL || -- (outFile = fopen(tmpImakefile, "w+")) == NULL) { -+ char *tmpImakefileName = Strdup(tmpImakefileTemplate); -+#ifndef HAVE_MKSTEMP -+ if (mktemp(tmpImakefileName) == NULL || -+ (outFile = fopen(tmpImakefileName, "w+")) == NULL) { - LogFatal("Cannot open %s for write.", -- tmpImakefile); -+ tmpImakefileName); - } - #else -- fd=mkstemp(tmpImakefile); -+ fd=mkstemp(tmpImakefileName); - if (fd != -1) - outFile = fdopen(fd, "w"); - if (outFile == NULL) { - if (fd != -1) { -- unlink(tmpImakefile); close(fd); -+ unlink(tmpImakefileName); close(fd); - } - LogFatal("Cannot open %s for write.", -- tmpImakefile); -+ tmpImakefileName); - } - #endif -+ tmpImakefile = tmpImakefileName; - } - writetmpfile(outFile, punwritten, pbuf-punwritten, - tmpImakefile); -@@ -1838,7 +1827,7 @@ CleanCppInput(char *imakefile) - } - - void --CleanCppOutput(FILE *tmpfd, char *tmpfname) -+CleanCppOutput(FILE *tmpfd, const char *tmpfname) - { - char *input; - int blankline = 0; -@@ -1960,7 +1949,7 @@ isempty(char *line) - - /*ARGSUSED*/ - char * --ReadLine(FILE *tmpfd, char *tmpfname) -+ReadLine(FILE *tmpfd, const char *tmpfname) - { - static boolean initialized = FALSE; - static char *buf, *pline, *end; -@@ -1988,10 +1977,10 @@ ReadLine(FILE *tmpfd, char *tmpfname) - fseek(tmpfd, 0, 0); - #if defined(SYSV) || defined(WIN32) || defined(USE_FREOPEN) - tmpfd = freopen(tmpfname, "w+", tmpfd); --#ifdef WIN32 -+# ifdef WIN32 - if (! tmpfd) /* if failed try again */ - tmpfd = freopen(tmpfname, "w+", fp); --#endif -+# endif - if (! tmpfd) - LogFatal("cannot reopen %s\n", tmpfname); - #else /* !SYSV */ -@@ -1999,8 +1988,6 @@ ReadLine(FILE *tmpfd, char *tmpfname) - #endif /* !SYSV */ - initialized = TRUE; - fprintf (tmpfd, "# Makefile generated by imake - do not edit!\n"); -- fprintf (tmpfd, "# %s\n", -- "$Xorg: imake.c,v 1.6 2001/02/09 02:03:15 xorgcvs Exp $"); - } - - for (p1 = pline; p1 < end; p1++) { -@@ -2036,7 +2023,7 @@ ReadLine(FILE *tmpfd, char *tmpfname) - } - - void --writetmpfile(FILE *fd, char *buf, int cnt, char *fname) -+writetmpfile(FILE *fd, const char *buf, int cnt, const char *fname) - { - if (fwrite(buf, sizeof(char), cnt, fd) == -1) - LogFatal("Cannot write to %s.", fname); -@@ -2048,7 +2035,7 @@ Emalloc(int size) - char *p; - - if ((p = malloc(size)) == NULL) -- LogFatalI("Cannot allocate %d bytes", size); -+ LogFatal("Cannot allocate %d bytes", size); - return(p); - } - -@@ -2066,10 +2053,10 @@ KludgeOutputLine(char **pline) - break; - case ' ': /*May need a tab*/ - default: --#ifdef CROSSCOMPILE -+# ifdef CROSSCOMPILE - if (inline_syntax) --#endif --#if defined CROSSCOMPILE || defined INLINE_SYNTAX -+# endif -+# if defined CROSSCOMPILE || defined INLINE_SYNTAX - { - if (*p == '<' && p[1] == '<') { /* inline file close */ - InInline--; -@@ -2077,7 +2064,7 @@ KludgeOutputLine(char **pline) - break; - } - } --#endif -+# endif - /* - * The following cases should not be treated as beginning of - * rules: -@@ -2116,26 +2103,26 @@ KludgeOutputLine(char **pline) - quotechar = ']'; - break; - case '=': --#ifdef CROSSCOMPILE -+# ifdef CROSSCOMPILE - if (remove_cpp_leadspace) --#endif --#if defined CROSSCOMPILE || defined REMOVE_CPP_LEADSPACE -+# endif -+# if defined CROSSCOMPILE || defined REMOVE_CPP_LEADSPACE - { - if (!InRule && **pline == ' ') { - while (**pline == ' ') - (*pline)++; - } - } --#endif -+# endif - goto breakfor; --#if defined CROSSCOMPILE || defined INLINE_SYNTAX -+# if defined CROSSCOMPILE || defined INLINE_SYNTAX - case '<': - if (inline_syntax) { - if (p[1] == '<') /* inline file start */ - InInline++; - } - break; --#endif -+# endif - case ':': - if (p[1] == '=') - goto breakfor; -@@ -2159,7 +2146,7 @@ KludgeResetRule(void) - } - #endif - char * --Strdup(char *cp) -+Strdup(const char *cp) - { - char *new = Emalloc(strlen(cp) + 1); - diff --git a/debian/patches/0056_nx-X11_Werror-format-security.full.patch b/debian/patches/0056_nx-X11_Werror-format-security.full.patch deleted file mode 100644 index e29a5eb0f..000000000 --- a/debian/patches/0056_nx-X11_Werror-format-security.full.patch +++ /dev/null @@ -1,107 +0,0 @@ -Description: Fix -Werror=format-security errors -Author: Orion Poplawski <orion@cora.nwra.com> -Abstract: - The below patch fixes more -Werror=format-security errors. - Interestingly, most of the errors only showed up on our arm builds. No - idea why. ---- a/nx-X11/lib/xtrans/Xtransint.h -+++ b/nx-X11/lib/xtrans/Xtransint.h -@@ -444,7 +444,7 @@ static int trans_mkdir ( - int hack= 0, saveerrno=errno; \ - struct timeval tp;\ - gettimeofday(&tp,0); \ -- ErrorF(__xtransname); \ -+ ErrorF("%s",__xtransname); \ - ErrorF(x+hack,a,b,c); \ - ErrorF("timestamp (ms): %d\n",tp.tv_sec*1000+tp.tv_usec/1000); \ - errno=saveerrno; \ -@@ -454,7 +454,7 @@ static int trans_mkdir ( - int hack= 0, saveerrno=errno; \ - struct timeval tp;\ - gettimeofday(&tp,0); \ -- fprintf(stderr, __xtransname); fflush(stderr); \ -+ fprintf(stderr, "%s",__xtransname); fflush(stderr); \ - fprintf(stderr, x+hack,a,b,c); fflush(stderr); \ - fprintf(stderr, "timestamp (ms): %d\n",tp.tv_sec*1000+tp.tv_usec/1000); \ - fflush(stderr); \ -@@ -466,14 +466,14 @@ static int trans_mkdir ( - /* Use ErrorF() for the X server */ - #define PRMSG(lvl,x,a,b,c) if (lvl <= XTRANSDEBUG){ \ - int hack= 0, saveerrno=errno; \ -- ErrorF(__xtransname); \ -+ ErrorF("%s",__xtransname); \ - ErrorF(x+hack,a,b,c); \ - errno=saveerrno; \ - } else ((void)0) - #else - #define PRMSG(lvl,x,a,b,c) if (lvl <= XTRANSDEBUG){ \ - int hack= 0, saveerrno=errno; \ -- fprintf(stderr, __xtransname); fflush(stderr); \ -+ fprintf(stderr, "%s",__xtransname); fflush(stderr); \ - fprintf(stderr, x+hack,a,b,c); fflush(stderr); \ - errno=saveerrno; \ - } else ((void)0) ---- a/nx-X11/programs/nxauth/process.c -+++ b/nx-X11/programs/nxauth/process.c -@@ -974,7 +974,7 @@ fprintfhex(register FILE *fp, int len, c - char *hex; - - hex = bintohex(len, cp); -- fprintf(fp, hex); -+ fprintf(fp, "%s", hex); - free(hex); - } - ---- a/nx-X11/programs/Xserver/GL/glx/glximports.c -+++ b/nx-X11/programs/Xserver/GL/glx/glximports.c -@@ -110,12 +110,12 @@ void *__glXImpRealloc(__GLcontext *gc, v - - void __glXImpWarning(__GLcontext *gc, char *msg) - { -- ErrorF((char *)msg); -+ ErrorF("%s",(char *)msg); - } - - void __glXImpFatal(__GLcontext *gc, char *msg) - { -- ErrorF((char *)msg); -+ ErrorF("%s",(char *)msg); - __glXAbort(); - } - ---- a/nx-X11/programs/Xserver/hw/nxagent/Error.c -+++ b/nx-X11/programs/Xserver/hw/nxagent/Error.c -@@ -232,7 +232,7 @@ static int nxagentPrintError(dpy, event, - - int nxagentExitHandler(const char *message) - { -- FatalError(message); -+ FatalError("%s", message); - - return 0; - } ---- a/nx-X11/programs/Xserver/hw/nxagent/Init.c -+++ b/nx-X11/programs/Xserver/hw/nxagent/Init.c -@@ -481,7 +481,7 @@ void OsVendorVErrorFFunction(const char - - nxagentStartRedirectToClientsLog(); - -- fprintf(stderr, buffer); -+ fprintf(stderr, "%s", buffer); - - nxagentEndRedirectToClientsLog(); - } ---- a/nx-X11/programs/Xserver/os/log.c -+++ b/nx-X11/programs/Xserver/os/log.c -@@ -692,9 +692,9 @@ Error(char *str) - return; - sprintf(err, "%s: ", str); - strcat(err, strerror(saveErrno)); -- LogWrite(-1, err); -+ LogWrite(-1, "%s", err); - } else -- LogWrite(-1, strerror(saveErrno)); -+ LogWrite(-1, "%s", strerror(saveErrno)); - } - - void diff --git a/debian/patches/0057_nx-X11_sanitize-eventmasks.full.patch b/debian/patches/0057_nx-X11_sanitize-eventmasks.full.patch deleted file mode 100644 index cc5c07807..000000000 --- a/debian/patches/0057_nx-X11_sanitize-eventmasks.full.patch +++ /dev/null @@ -1,70 +0,0 @@ -Description: Create Windows and fix drawing issues on Big Endian 64bit systems -Author: Mihai Moldovan <ionic@ionic.de> -Abstract: - Multiple endiannes issues were setting incorrect event masks when creating and - drawing X11 windows. - . - This time, a smaller integer has been casted to a bigger one and passed to some - function actually setting its value. - . - This meant, that garbage from stack was attached to the smaller integer value, - putting unknown memory into the lower bytes of the bigger integer. - . - Fix this by creating a big, initialized temporary variable, let the function do - its magic on that one and pass the value back to the smaller variable--and - cross your fingers the smaller variable can hold it without overrunning. (The - last bit is a design issue we can't really fix and has been around even before - this patch.) - ---- a/nx-X11/programs/Xserver/hw/nxagent/Window.c -+++ b/nx-X11/programs/Xserver/hw/nxagent/Window.c -@@ -327,7 +327,10 @@ FIXME: We need to set save under on the - - if (mask & CWEventMask) - { -- nxagentGetEventMask(pWin, (Mask*)&attributes.event_mask); -+ /* Assume that the mask fits in int... broken on Big Endian 64bit systems. */ -+ Mask tmp_mask = attributes.event_mask; -+ nxagentGetEventMask(pWin, &tmp_mask); -+ attributes.event_mask = (int)tmp_mask; - } - #ifdef WARNING - else -@@ -2891,7 +2894,10 @@ FIXME: Do we need to set save unders att - - if (mask & CWEventMask) - { -- nxagentGetEventMask(pWin, (Mask*)&attributes.event_mask); -+ /* Assume that the mask fits in int... broken on Big Endian 64bit systems. */ -+ Mask tmp_mask = attributes.event_mask; -+ nxagentGetEventMask(pWin, &tmp_mask); -+ attributes.event_mask = (int)tmp_mask; - } - #ifdef WARNING - else -@@ -3352,7 +3358,10 @@ void nxagentSetTopLevelEventMask(pWin) - - if (nxagentOption(Rootless) && nxagentWindowTopLevel(pWin)) - { -- nxagentGetEventMask(pWin, (Mask*)&attributes.event_mask); -+ /* Assume that the mask fits in int... broken on Big Endian 64bit systems. */ -+ Mask tmp_mask = attributes.event_mask; -+ nxagentGetEventMask(pWin, &tmp_mask); -+ attributes.event_mask = (int)tmp_mask; - - XChangeWindowAttributes(nxagentDisplay, nxagentWindow(pWin), mask, &attributes); - } ---- a/nx-X11/programs/Xserver/hw/nxagent/Screen.c -+++ b/nx-X11/programs/Xserver/hw/nxagent/Screen.c -@@ -1665,7 +1665,10 @@ N/A - - attributes.background_pixel = nxagentBlackPixel; - -- nxagentGetDefaultEventMask((Mask*)&attributes.event_mask); -+ /* Assume that the mask fits in int... broken on Big Endian 64bit systems. */ -+ Mask tmp_mask = attributes.event_mask; -+ nxagentGetDefaultEventMask(&tmp_mask); -+ attributes.event_mask = (int)tmp_mask; - - attributes.colormap = nxagentDefaultVisualColormap(nxagentDefaultVisual(pScreen)); - diff --git a/debian/patches/0101_nxagent_set-rgb-path.full.patch b/debian/patches/0101_nxagent_set-rgb-path.full.patch deleted file mode 100644 index 6533b4b12..000000000 --- a/debian/patches/0101_nxagent_set-rgb-path.full.patch +++ /dev/null @@ -1,19 +0,0 @@ -Description: FHS path fix for rgb file - This patch is needed on Debian only, not reporting this path - addition to upstream. - . - Originally contributed by Marcelo Boveto Shima <marceloshima@gmail.com>. -Forwarded: not-needed -Author: Mike Gabriel <mike.gabriel@das-netzwerkteam.de> -Last-Update: 2012-01-12 ---- a/nx-X11/programs/Xserver/os/oscolor.c -+++ b/nx-X11/programs/Xserver/os/oscolor.c -@@ -53,7 +53,7 @@ SOFTWARE. - #include <sys/stat.h> - #include <unistd.h> - --static char* nxAltRgbPaths[] = {"/usr/NX/share/rgb", "/usr/share/X11/rgb", "/etc/X11/rgb"}; -+static char* nxAltRgbPaths[] = {"/etc/nxagent/rgb", "/usr/share/nx/rgb", "/usr/local/share/nx/rgb", "/usr/NX/share/rgb", "/usr/share/X11/rgb", "/etc/X11/rgb"}; - static char _NXRgbPath[1024]; - - #endif diff --git a/debian/patches/0102_xserver-xext_set-securitypolicy-path.full.patch b/debian/patches/0102_xserver-xext_set-securitypolicy-path.full.patch deleted file mode 100644 index fb353c644..000000000 --- a/debian/patches/0102_xserver-xext_set-securitypolicy-path.full.patch +++ /dev/null @@ -1,19 +0,0 @@ -Description: FHS path fix for SecurityPolicy file - This patch is needed for Tarball installation mode of NX (redistributed) - only, not reporting this path change to upstream. - . - Originally contributed by Marcelo Boveto Shima <marceloshima@gmail.com>. -Forwarded: not-needed -Author: Mike Gabriel <mike.gabriel@das-netzwerkteam.de> -Last-Update: 2012-01-12 ---- a/nx-X11/programs/Xserver/Xext/security.c -+++ b/nx-X11/programs/Xserver/Xext/security.c -@@ -86,7 +86,7 @@ extern unsigned char LbxReqCode; - - #ifdef NXAGENT_SERVER - --#define NX_ALTERNATIVEPOLICYFILE "/usr/lib/xserver/SecurityPolicy" -+#define NX_ALTERNATIVEPOLICYFILE "/usr/local/share/nx/SecurityPolicy" - - #endif - diff --git a/debian/patches/0103_nxagent_set-X0-config-path.full.patch b/debian/patches/0103_nxagent_set-X0-config-path.full.patch deleted file mode 100644 index 7d537f3de..000000000 --- a/debian/patches/0103_nxagent_set-X0-config-path.full.patch +++ /dev/null @@ -1,40 +0,0 @@ -Description: FHS path fix for keyboard config file - This patch is needed for Tarball installation and on Distros like - Debian, not reporting this path addition to upstream. - . - Originally contributed by FreeNX Team. -Forwarded: not-needed -Author: Mike Gabriel <mike.gabriel@das-netzwerkteam.de> -Last-Update: 2011-12-31 ---- a/nx-X11/programs/Xserver/hw/nxagent/Keyboard.c -+++ b/nx-X11/programs/Xserver/hw/nxagent/Keyboard.c -@@ -136,7 +136,7 @@ extern Status XkbGetContro - #define XKB_ALTERNATE_BASE_DIRECTORY "/usr/X11R6/lib/X11/xkb" - #endif - #ifndef XKB_CONFIG_FILE --#define XKB_CONFIG_FILE "X0-config.keyboard" -+#define XKB_CONFIG_FILE "/etc/nxagent/nxagent.keyboard" - #endif - #ifndef XKB_DFLT_RULES_FILE - #define XKB_DFLT_RULES_FILE "xfree86" -@@ -985,8 +985,7 @@ XkbError: - - XkbGetControls(nxagentDisplay, XkbAllControlsMask, xkb); - -- nxagentXkbConfigFilePathSize = strlen(XkbBaseDirectory) + -- strlen(XKB_CONFIG_FILE) + 1; -+ nxagentXkbConfigFilePathSize = strlen(XKB_CONFIG_FILE); - - nxagentXkbConfigFilePath = malloc((nxagentXkbConfigFilePathSize + 1) * sizeof(char)); - -@@ -995,9 +994,7 @@ XkbError: - FatalError("nxagentKeyboardProc: malloc failed."); - } - -- strcpy(nxagentXkbConfigFilePath, XkbBaseDirectory); -- strcat(nxagentXkbConfigFilePath, "/"); -- strcat(nxagentXkbConfigFilePath, XKB_CONFIG_FILE); -+ strcpy(nxagentXkbConfigFilePath, XKB_CONFIG_FILE); - - #ifdef TEST - fprintf(stderr, "nxagentKeyboardProc: nxagentXkbConfigFilePath [%s].\n", diff --git a/debian/patches/0105_nxagent_export-remote-keyboard-config.full.patch b/debian/patches/0105_nxagent_export-remote-keyboard-config.full.patch deleted file mode 100644 index 0a57a335e..000000000 --- a/debian/patches/0105_nxagent_export-remote-keyboard-config.full.patch +++ /dev/null @@ -1,96 +0,0 @@ -Description: Export remote keyboard configuration to session directory - Let nxagent write the keyboard configuration to <session_directory>/keyboard - and make it available within the NX session. - . - Originally contributed by Marcelo Boveto Shima <marceloshima@gmail.com>. -Forwarded: pending... -Author: Mike Gabriel <mike.gabriel@das-netzwerkteam.de> -Last-Update: 2011-12-31 ---- a/nx-X11/programs/Xserver/hw/nxagent/Error.c -+++ b/nx-X11/programs/Xserver/hw/nxagent/Error.c -@@ -497,7 +497,7 @@ char *nxagentGetRootPath(void) - return rootPath; - } - --char *nxagentGetSessionPath() -+char *nxagentGetSessionPath(void) - { - - char *rootPath; ---- a/nx-X11/programs/Xserver/hw/nxagent/Error.h -+++ b/nx-X11/programs/Xserver/hw/nxagent/Error.h -@@ -34,4 +34,6 @@ void nxagentStartRedirectToClientsLog(vo - - void nxagentEndRedirectToClientsLog(void); - -+char *nxagentGetSessionPath(void); -+ - #endif /* __Error_H__ */ ---- a/nx-X11/programs/Xserver/hw/nxagent/Keyboard.c -+++ b/nx-X11/programs/Xserver/hw/nxagent/Keyboard.c -@@ -52,6 +52,7 @@ is" without express or implied warranty. - #include "Keyboard.h" - #include "Events.h" - #include "Options.h" -+#include "Error.h" - - #include "NXlib.h" - -@@ -72,6 +73,8 @@ is" without express or implied warranty. - - #include "Xatom.h" - -+#include <errno.h> -+ - static int nxagentXkbGetNames(char **rules, char **model, char **layout, - char **variant, char **options); - -@@ -1790,6 +1793,48 @@ void nxagentKeycodeConversionSetup(void) - } - #endif - -+ if (drulesLen != 0) -+ { -+ char *sessionpath = nxagentGetSessionPath(); -+ if (sessionpath != NULL){ -+ int keyboard_file_path_size = strlen(sessionpath) + strlen("/keyboard"); -+ char *keyboard_file_path = malloc((keyboard_file_path_size + 1) * sizeof(char)); -+ FILE *keyboard_file; -+ if ( keyboard_file_path == NULL) -+ { -+ FatalError("nxagentKeyboardProc: malloc failed."); -+ } -+ strcpy(keyboard_file_path, sessionpath); -+ strcat(keyboard_file_path, "/keyboard"); -+ if ((keyboard_file = fopen(keyboard_file_path, "w")) != NULL) { -+ if ( drules != NULL ) -+ fprintf(keyboard_file, "rules=%s\n", drules); -+ if ( dmodel != NULL ) -+ fprintf(keyboard_file, "model=%s\n", dmodel); -+ if ( dlayout != NULL ) -+ fprintf(keyboard_file, "layout=%s\n", dlayout); -+ if ( dvariant != NULL ) -+ fprintf(keyboard_file, "variant=%s\n", dvariant); -+ if ( doptions != NULL ) -+ fprintf(keyboard_file, "options=%s\n", doptions); -+ fclose(keyboard_file); -+ fprintf(stderr, "keyboard file created\n"); -+ } -+ else { -+ int save_err = errno; -+ fprintf(stderr, "keyboard file not created: %s\n", strerror(save_err)); -+ } -+ free(keyboard_file_path); -+ } -+ else { -+ fprintf(stderr, "SessionPath not defined\n"); -+ } -+ } -+ else -+ { -+ fprintf(stderr, "Failed to create the keyboard file\n"); -+ } -+ - if (nxagentOption(ClientOs) == ClientOsLinux && - drules != NULL && dmodel != NULL && - (strcmp(drules, "evdev") == 0 || diff --git a/debian/patches/0106_nxagent_utf8-copy-clipboard.full.patch b/debian/patches/0106_nxagent_utf8-copy-clipboard.full.patch deleted file mode 100644 index 804815047..000000000 --- a/debian/patches/0106_nxagent_utf8-copy-clipboard.full.patch +++ /dev/null @@ -1,52 +0,0 @@ -Description: UTF-8 Clipboard copying - Enable UTF-8 clipboard copies. - . - Originally contributed by FreeNX Team (dimbor). -Forwarded: not-yet -Author: Mike Gabriel <mike.gabriel@das-netzwerkteam.de> -Last-Update: 2011-12-31 ---- a/nx-X11/programs/Xserver/hw/nxagent/Clipboard.c -+++ b/nx-X11/programs/Xserver/hw/nxagent/Clipboard.c -@@ -166,7 +166,9 @@ Bool nxagentValidServerTargets(Atom targ - - if (target == XA_STRING) return True; - if (target == serverTEXT) return True; -- -+ /* by dimbor */ -+ if (target == serverUTF8_STRING) return True; -+ - return False; - } - -@@ -402,7 +404,12 @@ FIXME: Do we need this? - lastServerProperty = X->xselectionrequest.property; - lastServerRequestor = X->xselectionrequest.requestor; - lastServerTarget = X->xselectionrequest.target; -- lastServerTime = X->xselectionrequest.time; -+ -+ /* by dimbor */ -+ if (lastServerTarget != XA_STRING) -+ lastServerTarget = serverUTF8_STRING; -+ -+ lastServerTime = X->xselectionrequest.time; - - x.u.u.type = SelectionRequest; - x.u.selectionRequest.time = GetTimeInMillis(); -@@ -424,11 +431,12 @@ FIXME: Do we need this? - - x.u.selectionRequest.selection = CurrentSelections[i].selection; - -- /* -- * x.u.selectionRequest.target = X->xselectionrequest.target; -- */ -- -- x.u.selectionRequest.target = XA_STRING; -+ /* by dimbor (idea from zahvatov) */ -+ if (X->xselectionrequest.target != XA_STRING) -+ x.u.selectionRequest.target = clientUTF8_STRING; -+ else -+ x.u.selectionRequest.target = XA_STRING; -+ - x.u.selectionRequest.property = clientCutProperty; - - (void) TryClientEvents(lastSelectionOwner[i].client, &x, 1, diff --git a/debian/patches/0107_nxagent_clipboard-compound-text+small-bed-sheets.full.patch b/debian/patches/0107_nxagent_clipboard-compound-text+small-bed-sheets.full.patch deleted file mode 100644 index 0cd836c5a..000000000 --- a/debian/patches/0107_nxagent_clipboard-compound-text+small-bed-sheets.full.patch +++ /dev/null @@ -1,47 +0,0 @@ -Description: Prevent sending COMPOUND_TEXT - Do not send COMPOUND_TEXT to client. - . - Originally contributed by FreeNX Team (dimbor). -Forwarded: not-yet -Author: Mike Gabriel <mike.gabriel@das-netzwerkteam.de> -Last-Update: 2011-12-31 ---- a/nx-X11/programs/Xserver/hw/nxagent/Clipboard.c -+++ b/nx-X11/programs/Xserver/hw/nxagent/Clipboard.c -@@ -1226,10 +1226,11 @@ int nxagentConvertSelection(ClientPtr cl - Atom xa_STRING[4]; - xEvent x; - -+ /* --- Order changed by dimbor (prevent sending COMPOUND_TEXT to client --- */ - xa_STRING[0] = XA_STRING; -- xa_STRING[1] = clientTEXT; -- xa_STRING[2] = clientCOMPOUND_TEXT; -- xa_STRING[3] = clientUTF8_STRING; -+ xa_STRING[1] = clientUTF8_STRING; -+ xa_STRING[2] = clientTEXT; -+ xa_STRING[3] = clientCOMPOUND_TEXT; - - ChangeWindowProperty(pWin, - property, ---- a/nx-X11/programs/Xserver/hw/nxagent/Image.c -+++ b/nx-X11/programs/Xserver/hw/nxagent/Image.c -@@ -644,6 +644,10 @@ FIXME: Should use these. - pDrawable -> depth != 1 && - nxagentOption(DeferLevel) >= 1) - { -+ /* -- changed by dimbor (small "bed-sheets" never need be prevented - always put) --*/ -+ if (dstHeight > 16) -+ { -+ /* -------------------------------------------------------------------------------- */ - #ifdef TEST - fprintf(stderr, "nxagentPutImage: WARNING! Prevented operation on region [%d,%d,%d,%d] " - "for drawable at [%p] with drawable pixmap.\n", pRegion -> extents.x1, -@@ -654,6 +658,9 @@ FIXME: Should use these. - nxagentMarkCorruptedRegion(pDrawable, pRegion); - - goto nxagentPutImageEnd; -+ /* --- changed by dimbor ---*/ -+ } -+ /* ------------------------- */ - } - - if (pDrawable -> type == DRAWABLE_WINDOW && diff --git a/debian/patches/0108_nxagent_wine-close-delay.full.patch b/debian/patches/0108_nxagent_wine-close-delay.full.patch deleted file mode 100644 index c58eb1568..000000000 --- a/debian/patches/0108_nxagent_wine-close-delay.full.patch +++ /dev/null @@ -1,60 +0,0 @@ -Description: Wine Close Delay - Wine close delay. - . - Originally contributed by FreeNX Team (dimbor). -Forwarded: not-yet -Author: Mike Gabriel <mike.gabriel@das-netzwerkteam.de> -Last-Update: 2011-12-31 ---- a/nx-X11/programs/Xserver/hw/nxagent/Window.c -+++ b/nx-X11/programs/Xserver/hw/nxagent/Window.c -@@ -176,6 +176,14 @@ static void nxagentReconfigureWindow(poi - - static int nxagentForceExposure(WindowPtr pWin, pointer ptr); - -+/* by dimbor */ -+typedef struct -+{ -+ CARD32 state; -+ Window icon; -+} -+nxagentWMStateRec; -+ - /* - * This is currently unused. - */ -@@ -1861,6 +1869,17 @@ Bool nxagentRealizeWindow(WindowPtr pWin - nxagentAddConfiguredWindow(pWin, CWStackingOrder); - nxagentAddConfiguredWindow(pWin, CW_Shape); - -+ /* add by dimbor */ -+ if (nxagentOption(Rootless) && nxagentWindowTopLevel(pWin)) -+ { -+ Atom prop = MakeAtom("WM_STATE", strlen("WM_STATE"), True); -+ nxagentWMStateRec wmState; -+ wmState.state = 1; /* NormalState */ -+ wmState.icon = None; -+ if (ChangeWindowProperty(pWin, prop, prop, 32, 0, 2, &wmState, 1) != Success) -+ fprintf(stderr, "nxagentRealizeWindow: Additing WM_STATE fail.\n"); -+ } -+ - #ifdef SHAPE - - /* -@@ -1907,6 +1926,17 @@ Bool nxagentUnrealizeWindow(pWin) - return True; - } - -+ /* add by dimbor */ -+ if (nxagentOption(Rootless) && nxagentWindowTopLevel(pWin)) -+ { -+ Atom prop = MakeAtom("WM_STATE", strlen("WM_STATE"), True); -+ nxagentWMStateRec wmState; -+ wmState.state = 3; /* WithdrawnState */ -+ wmState.icon = None; -+ if (ChangeWindowProperty(pWin, prop, prop, 32, 0, 2, &wmState, 1) != Success) -+ fprintf(stderr, "nxagentUnRealizeWindow: Changing WM_STATE failed.\n"); -+ } -+ - XUnmapWindow(nxagentDisplay, nxagentWindow(pWin)); - - return True; diff --git a/debian/patches/0110_nxagent_createpixmap-bounds-check.full.patch b/debian/patches/0110_nxagent_createpixmap-bounds-check.full.patch deleted file mode 100644 index 106231983..000000000 --- a/debian/patches/0110_nxagent_createpixmap-bounds-check.full.patch +++ /dev/null @@ -1,44 +0,0 @@ -Description: Avoid large pixmaps - It is allowed to try and allocate a pixmap which is larger than - 32767 in either dimension. However, all of the framebuffer code - is buggy and does not reliably draw to such big pixmaps, basically - because the Region data structure operates with signed shorts - for the rectangles in it. - . - Furthermore, several places in the X server computes the - size in bytes of the pixmap and tries to store it in an - integer. This integer can overflow and cause the allocated size - to be much smaller. - . - So, such big pixmaps are rejected here with a BadAlloc - . - Originally contributed by FreeNX Team -Forwarded: pending... -Author: Mike Gabriel <mike.gabriel@das-netzwerkteam.de> -Last-Update: 2011-12-31 ---- a/nx-X11/programs/Xserver/hw/nxagent/NXdispatch.c -+++ b/nx-X11/programs/Xserver/hw/nxagent/NXdispatch.c -@@ -1973,6 +1973,23 @@ ProcCreatePixmap(client) - client->errorValue = 0; - return BadValue; - } -+ if (stuff->width > 32767 || stuff->height > 32767) -+ { -+ /* It is allowed to try and allocate a pixmap which is larger than -+ * 32767 in either dimension. However, all of the framebuffer code -+ * is buggy and does not reliably draw to such big pixmaps, basically -+ * because the Region data structure operates with signed shorts -+ * for the rectangles in it. -+ * -+ * Furthermore, several places in the X server computes the -+ * size in bytes of the pixmap and tries to store it in an -+ * integer. This integer can overflow and cause the allocated size -+ * to be much smaller. -+ * -+ * So, such big pixmaps are rejected here with a BadAlloc -+ */ -+ return BadAlloc; -+ } - if (stuff->depth != 1) - { - pDepth = pDraw->pScreen->allowedDepths; diff --git a/debian/patches/0200_nxagent_check-binary-x2go-flavour.full.patch b/debian/patches/0200_nxagent_check-binary-x2go-flavour.full.patch deleted file mode 100644 index fcfa5ddff..000000000 --- a/debian/patches/0200_nxagent_check-binary-x2go-flavour.full.patch +++ /dev/null @@ -1,64 +0,0 @@ -Description: Detect nxagent/x2goagent flavour - Whether the agent runs in X2Go or NX mode is decide by the - name of the binary that executes the code. - . - Binary name equal to nxagent -> (Free)NX flavour - Binary name equal to x2goagent -> X2Go flavour -Forwarded: not-needed -Author: Oleksandr Shneyder <oleksandr.shneyder@obviously-nice.de> -Last-Update: 2012-01-11 ---- a/nx-X11/programs/Xserver/hw/nxagent/Init.c -+++ b/nx-X11/programs/Xserver/hw/nxagent/Init.c -@@ -177,6 +177,29 @@ int nxagentSaveUnder; - - int nxagentDoFullGeneration = 1; - -+ /* -+ * 1 if agent running as X2goAgent -+ * 0 if NX Agent -+ */ -+int nxagentX2go; -+ -+/* -+ * Checking if agent is x2go agent -+ */ -+ -+void checkX2goAgent() -+{ -+ extern const char *__progname; -+ if( strcasecmp(__progname,"x2goagent") == 0) -+ { -+ fprintf(stderr, "\nrunning as X2Go Agent\n"); -+ nxagentX2go=1; -+ } -+ else -+ nxagentX2go=0; -+} -+ -+ - /* - * Called at X server's initialization. - */ -@@ -193,6 +216,11 @@ void InitOutput(ScreenInfo *screenInfo, - #endif - - /* -+ * Check if we running as X2Go Agent -+ */ -+ checkX2goAgent(); -+ -+ /* - * Print our pid and version information. - */ - ---- a/nx-X11/programs/Xserver/hw/nxagent/Init.h -+++ b/nx-X11/programs/Xserver/hw/nxagent/Init.h -@@ -37,6 +37,8 @@ extern int nxagentDoFullGeneration; - extern int nxagentBackingStore; - extern int nxagentSaveUnder; - -+extern int nxagentX2go; -+ - extern ServerGrabInfoRec nxagentGrabServerInfo; - - #endif /* __Init_H__ */ diff --git a/debian/patches/0201_nxagent_set-x2go-icon-if-x2goagent-flavour.full.patch b/debian/patches/0201_nxagent_set-x2go-icon-if-x2goagent-flavour.full.patch deleted file mode 100644 index 90dfe5339..000000000 --- a/debian/patches/0201_nxagent_set-x2go-icon-if-x2goagent-flavour.full.patch +++ /dev/null @@ -1,219 +0,0 @@ -Description: X2Go icon when run with x2goagent flavour - Depending on the binary name of the agent either nxagent.xpm - or x2go.xpm is used as window icon. -Forwarded: not-needed -Author: Oleksandr Shneyder <oleksandr.shneyder@obviously-nice.de> -Last-Update: 2012-01-11 ---- a/nx-X11/programs/Xserver/hw/nxagent/Display.c -+++ b/nx-X11/programs/Xserver/hw/nxagent/Display.c -@@ -77,6 +77,7 @@ is" without express or implied warranty. - #include "NXlib.h" - - #include NXAGENT_ICON_NAME -+#include X2GOAGENT_ICON_NAME - - /* - * Set here the required log level. -@@ -1941,12 +1942,29 @@ Bool nxagentMakeIcon(Display *display, P - Bool success = False; - XlibPixmap IconPixmap; - XlibPixmap IconShape; -+ char* agent_icon_name; -+ char* agentIconData; - -- snprintf(default_path, PATH_MAX-1, "/usr/NX/share/images/%s", NXAGENT_ICON_NAME); -+ /* -+ * selecting x2go icon when running as X2Go agent -+ */ -+ if(nxagentX2go) -+ { -+ agent_icon_name=X2GOAGENT_ICON_NAME; -+ agentIconData=x2goagentIconData; -+ } -+ else -+ { -+ agent_icon_name=NXAGENT_ICON_NAME; -+ agentIconData=nxagentIconData; -+ } -+ -+ -+ snprintf(default_path, PATH_MAX-1, "/usr/NX/share/images/%s", agent_icon_name); - - if ((icon_fp = fopen(default_path, "r")) == NULL) - { -- icon_fp = nxagentLookForIconFile(NXAGENT_ICON_NAME, "r", icon_path); -+ icon_fp = nxagentLookForIconFile(agent_icon_name, "r", icon_path); - - if (icon_fp != NULL) - { -@@ -1985,7 +2003,7 @@ Bool nxagentMakeIcon(Display *display, P - { - status = XpmCreatePixmapFromData(display, - DefaultRootWindow(display), -- nxagentIconData, -+ agentIconData, - &IconPixmap, - &IconShape, - NULL); ---- a/nx-X11/programs/Xserver/hw/nxagent/Icons.h -+++ b/nx-X11/programs/Xserver/hw/nxagent/Icons.h -@@ -24,6 +24,8 @@ - - #define NXAGENT_ICON_NAME "nxagent.xpm" - -+#define X2GOAGENT_ICON_NAME "x2go.xpm" -+ - #define NXAGENT_PLACEHOLDER_NAME "nxmissing.xpm" - - #endif /* __Icons_H__ */ ---- /dev/null -+++ b/nx-X11/programs/Xserver/hw/nxagent/x2go.xpm -@@ -0,0 +1,148 @@ -+/* XPM */ -+static char *x2goagentIconData[]={ -+"128 128 17 1", -+". c None", -+"m c #323232", -+"l c #323232", -+"f c #323232", -+"e c #323232", -+"o c #323232", -+"# c #323232", -+"h c #323232", -+"i c #323232", -+"n c #323232", -+"d c #323232", -+"a c #323232", -+"g c #323232", -+"j c #323232", -+"b c #323232", -+"k c #323232", -+"c c #323232", -+".....#abccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccbde.....", -+"...fbccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccgf...", -+"..#ccccaheeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeijccckf..", -+".ecccgl..................................................................................................................ejcckf.", -+".bccd.....................................................................................................................mdccg.", -+"#cca.......................................................................................................................mjcce", -+"gckm........................................................................................................................eccd", -+"ccn..........................................................................................................................jcb", -+"cce..........................................................................................................................icc", -+"ccm..........................................................................................................................ecc", -+"cc...........................................................................................................................ecc", -+"cc...........................................................................................................................ecc", -+"cc...........................................................................................................................ecc", -+"cc...........................................................................................................................ecc", -+"cc............................................meeee..........................................................................ecc", -+"cc.........eeeeeeeeoiiiiiiiinggggggggjccccccccccccc....#ggggggggggggggggggggggggggggf.............ggggggggggggggggggggggf....ecc", -+"cc....meeeeoiiiiiiiinggggggggjccccccccccccccccccccc....icccccccccccccccccccccccccccce.............cccccccccccccccccccccce....ecc", -+"cc....................................meeeeeeeeoiii....icccccccccccccccccccccccccccce.............cccccccccccccccccccccce....ecc", -+"cc.......................................................menbccccccccccccccccccbhe..................logccccccccccccghe.......ecc", -+"cc...........................................................iccccccccccccccccdm.......................#cccccccccke..........ecc", -+"cc..............................................lee...........#cccccccccccccckm.........................jccccccckm...........ecc", -+"cc........feeeeeeeeoiiiiiiiiiaggggggggjcccccccccccc............icccccccccccccd..........................icccccccf............ecc", -+"cc....meeeeeoiiiiiiiinggggggggjcccccccccccccccccccciiiiii#m.....jcccccccccccci..........................icccccci.............ecc", -+"cc......................................eeeeeeeeeiiiiiiiiigl....eccccccccccccd..........................dcccccj..............ecc", -+"cc...............................................................dcccccccccccj..........................bccccce..............ecc", -+"cc...............................................................lccccccccccccl........................lccccca...............ecc", -+"cc.............................................meeeeeeee#iiiie....dccccccccccch........................icccccl...............ecc", -+"cc.........meeeeeeeeoiiiiiiiinggggggggjccccccccccccccccccccccb....ecccccccccccb........................bccccn................ecc", -+"cc....meeeeiiiiiiiiiaggggggggbcccccccccccccccccccccccccccccccc#....gccccccccccco......................#cccckm................ecc", -+"cc....................................meeeeeeeeeiiiiiiiiiaggggd....#cccccccccccg......................bcccci.................ecc", -+"cc..................................................................bcccccccccccf....................#cccckm.................ecc", -+"cc..................................................................hcccccccccccd...................mkcccci..................ecc", -+"cc............................................meeeeeeeeoiiiiiiiil...mkcccccccccccl..................icccckm..................ecc", -+"cc.........eeeeeeeeoiiiiiiiinggggggggjccccccccccccccccccccccccccn....dccccccccccci.................mkcccci...................ecc", -+"cc....meeeeeiiiiiiiiiaggggggggbccccccccccccccccccccccccccccccccckm...lccccccccccck.................icccckm...................ecc", -+"cc.....................................leeeeeeeeoiiiiiiiiigggggggo....accccccccccc#...............mkcccch....................ecc", -+"cc....................................................................ecccccccccccb...............iccccb.....................ecc", -+"cc.....................................................................jccccccccccce.............mkcccc#.....................ecc", -+"cc.............................................meeeeeeeeehiiiiiiii#....#ccccccccccca.............nccccb......................ecc", -+"cc........feeeeeeee#iiiiiiiiigggggggggkccccccccccccccccccccccccccccl....kcccccccccccl...........lccccc#......................ecc", -+"cc....meeeeeoiiiiiiiiigggggggggkcccccccccccccccccccccccccccccccccccd....icccccccccccd...........dccccb.......................ecc", -+"cc......................................leeeeeeeeoiiiiiiiingggggggga....mccccccccccckm.........lccccc#.......................ecc", -+"cc.......................................................................dccccccccccch.........dccccb........................ecc", -+"cc.......................................................................lcccccccccccb........lccccc#........................ecc", -+"cc.............................................meeeeeeeeoiiiiiiiingggo....gccccccccccc#.......dccccg.........................ecc", -+"cc.........meeeeeeeeoiiiiiiiinggggggggjccccccccccccccccccccccccccccccg....occcccccccccg......lccccce.........................ecc", -+"cc....meeeeiiiiiiiiiaggggggggbcccccccccccccccccccccccccccccccccccccccce....bccccccccccce.....gccccg..........................ecc", -+"cc....................................meeeeeeeeeiiiiiiiiigggggggggkcccd....#cccccccccccd....eccccce..........................ecc", -+"cc.........................................................................mkcccccccccccl...gccccg...........................ecc", -+"cc..........................................................................nccccccccccci..eccccce...........................ecc", -+"cc............................................meeeeeeeeoiiiiiiiingggggggm...lccccccccccckm.gccccg............................ecc", -+"cc.........eeeeeeeeoiiiiiiiinggggggggjcccccccccccccccccccccccccccccccccc#....dccccccccccc#eccccce............................ecc", -+"cc....meeeeeiiiiiiiiiaggggggggkcccccccccccccccccccccccccccccccccccccccccb....ecccccccccccbgccccg.............................ecc", -+"cc.....................................leeeeeeeeoiiiiiiiiigggggggggkccccco....gccccccccccccccccl.............................ecc", -+"cc............................................................................#cccccccccccccccd..............................ecc", -+"cc.............................................................................bccccccccccccccl..............................ecc", -+"cc.............................................leeeeeeeeeiiiiiiiiiagggggggi....icccccccccccccd...............................ecc", -+"cc........feeeeeeee#iiiiiiiingggggggggkccccccccccccccccccccccccccccccccccckm...mkccccccccccccl...............................ecc", -+"cc....meeeeeoiiiiiiiiigggggggggkccccccccccccccccccccccccccccccccccccccccccci....dccccccccccca................................ecc", -+"cc......................................leeeeeeeeoiiiiiiiiigggggggggccccccck....lccccccccccckm...............................ecc", -+"cc...............................................................................accccccccccc#...............................ecc", -+"cc...............................................................................ecccccccccccb...............................ecc", -+"cc............................................leeeeeeeeeiiiiiiiiiaggggggggbcce....bccccccccccce..............................ecc", -+"cc.......feeeeeeee#iiiiiiiiigggggggggkcccccccccccccccccccccccccccccccccccccccd....#cccccccccccg..............................ecc", -+"cc....meeeeeeoiiiiiiiingggggggggccccccccccccccccccccccccccccccccccccccccccccccl....kcccccccccccl.............................ecc", -+"cc.......................................feeeeeeeehiiiiiiiidggggggggbccccccccci....ncccccccccccd.............................ecc", -+"cc...........................................................................mm....bccccccccccccm............................ecc", -+"cc................................................................................#ccccccccccccci............................ecc", -+"cc..........................................leeeeeeee#iiiiiiiidggggggggbcccccl....bccccccccccccck............................ecc", -+"cc......feeeeeeeehiiiiiiiiaggggggggkccccccccccccccccccccccccccccccccccccccccd....#ccccccccccccccc#...........................ecc", -+"cc....meeeeeee#iiiiiiiidggggggggjcccccccccccccccccccccccccccccccccccccccccccl....bcccccccccccccccb...........................ecc", -+"cc.......................................meeeeeeeeeiiiiiiiiigggggggggkcccccd....#cccccbccccccccccce..........................ecc", -+"cc..............................................................................bccccdhcccccccccccg..........................ecc", -+"cc.............................................................................#ccccclmkcccccccccccl.........................ecc", -+"cc..........................................meeeeeeeeeiiiiiiiiiaggggggggbkm....bccccd..ncccccccccccd.........................ecc", -+"cc.....leeeeeeeeoiiiiiiiiigggggggggkccccccccccccccccccccccccccccccccccccci....hcccckl..lccccccccccccm........................ecc", -+"cc....meeeeeeeehiiiiiiiidggggggggbcccccccccccccccccccccccccccccccccccccckm...mkcccci....dccccccccccci........................ecc", -+"cc........................................leeeeeeee#iiiiiiiinggggggggjcci....icccckm....eccccccccccck........................ecc", -+"cc..........................................................................mkcccci......gccccccccccc#.......................ecc", -+"cc..........................................................................icccckm......#cccccccccccb.......................ecc", -+"cc.........................................leeeeeeeeoiiiiiiiiigggggggga....mkcccci........bccccccccccce......................ecc", -+"cc....meeeeeeeeoiiiiiiiiigggggggggkccccccccccccccccccccccccccccccccccci....icccckm........hcccccccccccg......................ecc", -+"cc.....feeeeeeeehiiiiiiiiaggggggggkcccccccccccccccccccccccccccccccccckm...mkcccci.........mkcccccccccccl.....................ecc", -+"cc.........................................feeeeeeeehiiiiiiiiagggggggh....icccckm..........icccccccccccd.....................ecc", -+"cc.......................................................................mkcccci...........lccccccccccccm....................ecc", -+"cc.......................................................................icccckm............dccccccccccci....................ecc", -+"cc...........................................eeeeeeeeehiiiiiiiidggga....mkcccci.............fccccccccccck....................ecc", -+"cc......feeeeeeee#iiiiiiiingggggggggccccccccccccccccccccccccccccccci....iccccb...............gccccccccccc#...................ecc", -+"cc....meeeeeeeoiiiiiiiiigggggggggbcccccccccccccccccccccccccccccccckm...mkcccc#...............occcccccccccb...................ecc", -+"cc........................................meeeeeeeeeiiiiiiiiidgggg#....iccccb.................bccccccccccce..................ecc", -+"cc....................................................................mkcccc#.................#cccccccccccg..................ecc", -+"cc....................................................................iccccb..................mkcccccccccccl.................ecc", -+"cc..........................................eeeeeeeeeiiiiiiiiiaga....mkcccc#...................icccccccccccd.................ecc", -+"cc.....leeeeeeee#iiiiiiiinggggggggjccccccccccccccccccccccccccccci....iccccb....................lccccccccccccm................ecc", -+"cc....meeeeeeee#iiiiiiiiigggggggggkcccccccccccccccccccccccccccckm...mkcccc#.....................dccccccccccci................ecc", -+"cc.........................................leeeeeeeeoiiiiiiiiiah....iccccb......................lccccccccccck................ecc", -+"cc.................................................................mkcccc#.......................gccccccccccc#...............ecc", -+"cc.................................................................dccccj........................ecccccccccccj...............ecc", -+"cc..........................................leeeeeeeeeiiiiiiih....lccccce.........................bccccccccccce..............ecc", -+"cc....meeeeeeeeeiiiiiiiiidgggggggggcccccccccccccccccccccccccci....dccccg..........................#ccccccccccca..............ecc", -+"cc.....feeeeeeeeiiiiiiiinggggggggbcccccccccccccccccccccccccckm...lccccce...........................kcccccccccccl.............ecc", -+"cc........................................leeeeeeeehiiiiiiiih....dccccg............................ncccccccccccd.............ecc", -+"cc..............................................................lccccce............................fccccccccccccf............ecc", -+"cc..............................................................dccccb..............................jcccccccccccg............ecc", -+"cc.........................................meeeeeeeeoiiiiil....lcccccn..............................icccccccccccce...........ecc", -+"cc......feeeeeeeehiiiiiiiigggggggggccccccccccccccccjgggggo.....gccccc#..............................eccccccccccccbm..........ecc", -+"cc....meeeeeeeoiiiiiiiiidgggggggggccccccccccccccccc...........hcccccco...............................cccccccccccccn..........ecc", -+"cc.........................................leeeeeee..........ecccccccn..............................lcccccccccccccc#.........ecc", -+"cc..........................................................#kccccccckf.............................nccccccccccccccc#........ecc", -+"cc........................................................ldcccccccccck#m.........................lncccccccccccccccccdl......ecc", -+"cc.........................................feeeeeee....ogjcccccccccccccccggi..................oggbcccccccccccccccccccccja....ecc", -+"cc.....leeeeeeee#iiiiiiiidggggggggbcccccccccccccccc....icccccccccccccccccccg..................icccccccccccccccccccccccccc....ecc", -+"cc....meeeeeeeehiiiiiiiiaggggggggkccccccccccccccccc....icccccccccccccccccccg..................icccccccccccccccccccccccccc....ecc", -+"cc........................................feeeeeeee..........................................................................ecc", -+"cc...........................................................................................................................ecc", -+"cc...........................................................................................................................ecc", -+"cc...........................................................................................................................ecc", -+"cc...........................................................................................................................ecc", -+"cc...........................................................................................................................ecc", -+"cce..........................................................................................................................hcc", -+"ccn..........................................................................................................................acb", -+"jcb.........................................................................................................................lcca", -+"hcci........................................................................................................................acc#", -+"mkcc#......................................................................................................................dccb.", -+".occci...................................................................................................................macccf.", -+"..#cccbne.............................................................................................................menkccc#..", -+"...okccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccbe...", -+"....mhjccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccg#....."}; diff --git a/debian/patches/0202_nx-X11_enable-xinerama.full.patch b/debian/patches/0202_nx-X11_enable-xinerama.full.patch deleted file mode 100644 index b21029de9..000000000 --- a/debian/patches/0202_nx-X11_enable-xinerama.full.patch +++ /dev/null @@ -1,292 +0,0 @@ -Description: Enable Xinerama support for NX - This patch adds Xinerama awareness to NX agent windows. - . - The advantage of Xinerama awareness is that an NX session window - will only maximize to the dimensions of the active physical - display. -Forwarded: pending -Author: Oleksandr Shneyder <oleksandr.shneyder@obviously-nice.de> -Last-Update: 2012-01-13 ---- a/nx-X11/config/cf/host.def -+++ b/nx-X11/config/cf/host.def -@@ -686,7 +686,7 @@ XCOMM $XFree86: xc/config/cf/xf86site.de - * - #define BuildXinerama NO - */ --#define BuildXinerama NO -+#define BuildXinerama YES - - /* - * If you don't want to build support for the GLX extension, uncomment this. ---- a/nx-X11/config/cf/X11.tmpl -+++ b/nx-X11/config/cf/X11.tmpl -@@ -456,7 +456,7 @@ XORGRELSTRING = XorgManVersionString - #define BuildXinerama NO - #endif - #ifndef BuildXineramaLibrary --#define BuildXineramaLibrary (BuildXinerama && !BuildServersOnly) -+#define BuildXineramaLibrary (BuildXinerama) - #endif - #ifndef BuildDmxDevelTools - #define BuildDmxDevelTools NO ---- a/nx-X11/lib/Xinerama/Xinerama.c -+++ b/nx-X11/lib/Xinerama/Xinerama.c -@@ -34,7 +34,7 @@ Equipment Corporation. - #include <X11/extensions/panoramiXext.h> - #include <X11/extensions/panoramiXproto.h> - #include <X11/extensions/Xinerama.h> -- -+#include <stdio.h> - - static XExtensionInfo _panoramiX_ext_info_data; - static XExtensionInfo *panoramiX_ext_info = &_panoramiX_ext_info_data; -@@ -249,6 +249,16 @@ Bool XineramaIsActive(Display *dpy) - xXineramaIsActiveReq *req; - XExtDisplayInfo *info = find_display (dpy); - -+ -+ FILE* fptr; -+ if((fptr=fopen(getenv("NX_XINERAMA_CONF"),"r"))!=NULL) { -+ fclose (fptr); -+ return True; -+ } -+ else { -+ return False; -+ } -+ - if(!XextHasExtension(info)) - return False; /* server doesn't even have the extension */ - -@@ -266,7 +276,6 @@ Bool XineramaIsActive(Display *dpy) - return rep.state; - } - --#include <stdio.h> - - XineramaScreenInfo * - XineramaQueryScreens( -@@ -279,39 +288,72 @@ XineramaQueryScreens( - xXineramaQueryScreensReq *req; - XineramaScreenInfo *scrnInfo = NULL; - -- PanoramiXCheckExtension (dpy, info, 0); -+ int i; -+ int x,y,w,h; -+ FILE* fptr; -+ if((fptr=fopen(getenv("NX_XINERAMA_CONF"),"r"))==NULL) { -+ PanoramiXCheckExtension (dpy, info, 0); -+ LockDisplay (dpy); -+ GetReq (XineramaQueryScreens, req); -+ req->reqType = info->codes->major_opcode; -+ req->panoramiXReqType = X_XineramaQueryScreens; -+ if (!_XReply (dpy, (xReply *) &rep, 0, xFalse)) { -+ UnlockDisplay (dpy); -+ SyncHandle (); -+ return NULL; -+ } -+ if(rep.number) { -+ if((scrnInfo = Xmalloc(sizeof(XineramaScreenInfo) * rep.number))) { -+ xXineramaScreenInfo scratch; -+ int i; -+ -+ for(i = 0; i < rep.number; i++) { -+ _XRead(dpy, (char*)(&scratch), sz_XineramaScreenInfo); -+ scrnInfo[i].screen_number = i; -+ scrnInfo[i].x_org = scratch.x_org; -+ scrnInfo[i].y_org = scratch.y_org; -+ scrnInfo[i].width = scratch.width; -+ scrnInfo[i].height = scratch.height; -+ } -+ -+ *number = rep.number; -+ } else { -+ _XEatData(dpy, rep.length << 2); -+ } -+ } - -- LockDisplay (dpy); -- GetReq (XineramaQueryScreens, req); -- req->reqType = info->codes->major_opcode; -- req->panoramiXReqType = X_XineramaQueryScreens; -- if (!_XReply (dpy, (xReply *) &rep, 0, xFalse)) { - UnlockDisplay (dpy); - SyncHandle (); -- return NULL; -- } - -- if(rep.number) { -- if((scrnInfo = Xmalloc(sizeof(XineramaScreenInfo) * rep.number))) { -- xXineramaScreenInfo scratch; -- int i; -- -- for(i = 0; i < rep.number; i++) { -- _XRead(dpy, (char*)(&scratch), sz_XineramaScreenInfo); -- scrnInfo[i].screen_number = i; -- scrnInfo[i].x_org = scratch.x_org; -- scrnInfo[i].y_org = scratch.y_org; -- scrnInfo[i].width = scratch.width; -- scrnInfo[i].height = scratch.height; -- } -+ } else { - -- *number = rep.number; -- } else -- _XEatData(dpy, rep.length << 2); -+ i=0; -+ while(!feof(fptr)) { -+ w=h=0; -+ fscanf(fptr,"%d %d %d %d",&x,&y,&w,&h); -+ if(w&&h) -+ i++; -+ } -+ rewind(fptr); -+ *number=i; -+ if((scrnInfo = Xmalloc(sizeof(XineramaScreenInfo) * i))) { -+ i=0; -+ while(!feof(fptr)){ -+ w=h=0; -+ fscanf(fptr,"%d %d %d %d",&x,&y,&w,&h); -+ if(w&&h){ -+ scrnInfo[i].screen_number=i; -+ scrnInfo[i].x_org=x; -+ scrnInfo[i].y_org=y; -+ scrnInfo[i].width=w; -+ scrnInfo[i].height=h; -+ i++; -+ } -+ } -+ } -+ fclose(fptr); - } - -- UnlockDisplay (dpy); -- SyncHandle (); - return scrnInfo; - } - ---- a/nx-X11/programs/Xserver/hw/nxagent/Imakefile -+++ b/nx-X11/programs/Xserver/hw/nxagent/Imakefile -@@ -206,7 +206,7 @@ DEFINES = -g $(OS_DEFINES) $(EXT_DEFINES - -UNX_DEBUG_INPUT \ - -DRANDR_10_INTERFACE \ - -DRANDR_12_INTERFACE \ -- -UPANORAMIX \ -+ -DPANORAMIX \ - -UDEBUG_TREE - - all:: $(OBJS) ---- a/nx-X11/programs/Xserver/hw/nxagent/X/NXxvdisp.c -+++ b/nx-X11/programs/Xserver/hw/nxagent/X/NXxvdisp.c -@@ -275,17 +275,19 @@ ProcXvDispatch(ClientPtr client) - case xv_PutVideo: - #ifdef PANORAMIX - if(!noPanoramiXExtension) -- result = (XineramaXvPutVideo(client)); break; -+ result = (XineramaXvPutVideo(client)); - else - #endif -- result = (ProcXvPutVideo(client)); break; -+ result = (ProcXvPutVideo(client)); -+ break; - case xv_PutStill: - #ifdef PANORAMIX - if(!noPanoramiXExtension) -- result = (XineramaXvPutStill(client)); break -+ result = (XineramaXvPutStill(client)); - else - #endif -- result = (ProcXvPutStill(client)); break; -+ result = (ProcXvPutStill(client)); -+ break; - case xv_GetVideo: result = (ProcXvGetVideo(client)); break; - case xv_GetStill: result = (ProcXvGetStill(client)); break; - case xv_GrabPort: result = (ProcXvGrabPort(client)); break; -@@ -295,35 +297,39 @@ ProcXvDispatch(ClientPtr client) - case xv_StopVideo: - #ifdef PANORAMIX - if(!noPanoramiXExtension) -- result = (XineramaXvStopVideo(client)); break; -+ result = (XineramaXvStopVideo(client)); - else - #endif -- result = (ProcXvStopVideo(client)); break; -+ result = (ProcXvStopVideo(client)); -+ break; - case xv_SetPortAttribute: - #ifdef PANORAMIX - if(!noPanoramiXExtension) -- result = (XineramaXvSetPortAttribute(client)); break; -+ result = (XineramaXvSetPortAttribute(client)); - else - #endif -- result = (ProcXvSetPortAttribute(client)); break; -+ result = (ProcXvSetPortAttribute(client)); -+ break; - case xv_GetPortAttribute: result = (ProcXvGetPortAttribute(client)); break; - case xv_QueryBestSize: result = (ProcXvQueryBestSize(client)); break; - case xv_QueryPortAttributes: result = (ProcXvQueryPortAttributes(client)); break; - case xv_PutImage: - #ifdef PANORAMIX - if(!noPanoramiXExtension) -- result = (XineramaXvPutImage(client)); break; -+ result = (XineramaXvPutImage(client)); - else - #endif -- result = (ProcXvPutImage(client)); break; -+ result = (ProcXvPutImage(client)); -+ break; - #ifdef MITSHM - case xv_ShmPutImage: - #ifdef PANORAMIX - if(!noPanoramiXExtension) -- result = (XineramaXvShmPutImage(client)); break; -+ result = (XineramaXvShmPutImage(client)); - else - #endif -- result = (ProcXvShmPutImage(client)); break; -+ result = (ProcXvShmPutImage(client)); -+ break; - #endif - case xv_QueryImageAttributes: result = (ProcXvQueryImageAttributes(client)); break; - case xv_ListImageFormats: result = (ProcXvListImageFormats(client)); break; ---- a/nx-X11/programs/Xserver/Imakefile -+++ b/nx-X11/programs/Xserver/Imakefile -@@ -1021,7 +1021,7 @@ NXAGENTNXLIBS = -L ../../../nxcomp -L .. - #else - NXAGENTNXLIBS = -L ../../../nxcomp -L ../../../nxcompext -L ../../../nxcompshad \ - -lXcomp -lXcompext -lXcompshad -lXrender -lX11 -lXext -lXfixes \ -- -L../../../nx-X11/exports/lib -lXtst -lXdamage -lXrandr -lXcomposite -+ -L../../../nx-X11/exports/lib -lXtst -lXdamage -lXrandr -lXcomposite -lXinerama - #endif - - #endif ---- a/nx-X11/programs/Xserver/Xext/panoramiX.c -+++ b/nx-X11/programs/Xserver/Xext/panoramiX.c -@@ -1045,16 +1045,7 @@ ProcXineramaIsActive(ClientPtr client) - rep.type = X_Reply; - rep.length = 0; - rep.sequenceNumber = client->sequence; --#if 1 -- { -- /* The following hack fools clients into thinking that Xinerama -- * is disabled even though it is not. */ -- extern Bool PanoramiXExtensionDisabledHack; -- rep.state = !noPanoramiXExtension && !PanoramiXExtensionDisabledHack; -- } --#else - rep.state = !noPanoramiXExtension; --#endif - if (client->swapped) { - register int n; - swaps (&rep.sequenceNumber, n); ---- a/nx-X11/programs/Xserver/Xext/panoramiX.h -+++ b/nx-X11/programs/Xserver/Xext/panoramiX.h -@@ -44,7 +44,7 @@ Equipment Corporation. - #define _PANORAMIX_H_ - - #include <X11/extensions/panoramiXext.h> --#include "gcstruct.h" -+/*#include "gcstruct.h"*/ - - - typedef struct _PanoramiXData { diff --git a/debian/patches/0203_nxagent_disable-rootless-exit.full.patch b/debian/patches/0203_nxagent_disable-rootless-exit.full.patch deleted file mode 100644 index 4c4879e17..000000000 --- a/debian/patches/0203_nxagent_disable-rootless-exit.full.patch +++ /dev/null @@ -1,63 +0,0 @@ -Description: Add -norootlessexit cmdline option to nxagent -Author: Oleksandr Shneyder <o.schneyder@phoca-gmbh.de> - ---- a/nx-X11/programs/Xserver/hw/nxagent/Args.c -+++ b/nx-X11/programs/Xserver/hw/nxagent/Args.c -@@ -672,6 +672,12 @@ int ddxProcessArgument(int argc, char *a - return 1; - } - -+ if (!strcmp(argv[i], "-norootlessexit")) { -+ nxagentChangeOption(NoRootlessExit, True); -+ return 1; -+ } -+ -+ - if (!strcmp(argv[i], "-noonce")) - { - nxagentOnce = False; -@@ -1855,6 +1861,7 @@ void ddxUseMsg() - ErrorF("The NX system adds the following arguments:\n"); - ErrorF("-forcenx force use of NX protocol messages assuming communication through nxproxy\n"); - ErrorF("-timeout int auto-disconnect timeout in seconds (minimum allowed: 60)\n"); -+ ErrorF("-norootlessexit don't exit if there are no clients in rootless mode\n"); - #ifdef RENDER - ErrorF("-norender disable the use of the render extension\n"); - ErrorF("-nocomposite disable the use of the composite extension\n"); ---- a/nx-X11/programs/Xserver/hw/nxagent/Handlers.c -+++ b/nx-X11/programs/Xserver/hw/nxagent/Handlers.c -@@ -219,7 +219,7 @@ void nxagentBlockHandler(pointer data, s - - if (nxagentOption(Rootless) && - nxagentLastWindowDestroyed && nxagentRootlessDialogPid == 0 && -- now > nxagentLastWindowDestroyedTime + 30 * 1000) -+ now > nxagentLastWindowDestroyedTime + 30 * 1000 && !nxagentOption(NoRootlessExit)) - { - #ifdef WARNING - fprintf(stderr, "nxagentBlockHandler: No application running. Closing the session.\n"); ---- a/nx-X11/programs/Xserver/hw/nxagent/Options.c -+++ b/nx-X11/programs/Xserver/hw/nxagent/Options.c -@@ -56,6 +56,7 @@ void nxagentInitOptions() - nxagentOptions.Persistent = 1; - nxagentOptions.Rootless = UNDEFINED; - nxagentOptions.Fullscreen = UNDEFINED; -+ nxagentOptions.NoRootlessExit = False; - - nxagentOptions.X = 0; - nxagentOptions.Y = 0; ---- a/nx-X11/programs/Xserver/hw/nxagent/Options.h -+++ b/nx-X11/programs/Xserver/hw/nxagent/Options.h -@@ -381,6 +381,13 @@ typedef struct _AgentOptions - - int ImageRateLimit; - -+ /* -+ * True if agent should not exit if there are no -+ * clients in rootless mode -+ */ -+ -+ int NoRootlessExit; -+ - } AgentOptionsRec; - - typedef AgentOptionsRec *AgentOptionsPtr; diff --git a/debian/patches/0204_nxagent_repaint-solidpict.full.patch b/debian/patches/0204_nxagent_repaint-solidpict.full.patch deleted file mode 100644 index fd97bda3d..000000000 --- a/debian/patches/0204_nxagent_repaint-solidpict.full.patch +++ /dev/null @@ -1,49 +0,0 @@ -Description: Fix repainting of SolidFill pictures with libcairo > 1.12.x -Author: Oleksandr Shneyder <oleksandr.shneyder@obviously-nice.de> ---- a/nx-X11/programs/Xserver/hw/nxagent/Render.c -+++ b/nx-X11/programs/Xserver/hw/nxagent/Render.c -@@ -2689,11 +2689,17 @@ void nxagentReconnectPicture(pointer p0, - #endif - } - -- if (!pForm) -+ if (!pForm && pPicture->pSourcePict) - { -- *pBool = False; -- -- return; -+ /*possible we need to add support for other picture types, for example gradients...*/ -+ switch(pPicture->pSourcePict->type) -+ { -+ case SourcePictTypeSolidFill: -+ nxagentPicturePriv(pPicture) -> picture = XRenderCreateSolidFill(nxagentDisplay, -+ (const XRenderColor*) &pPicture->pSourcePict->solidFill.fullColor); -+ break; -+ } -+ return; - } - - #ifdef TEST ---- a/nx-X11/programs/Xserver/hw/nxagent/X/NXpicture.c -+++ b/nx-X11/programs/Xserver/hw/nxagent/X/NXpicture.c -@@ -1137,6 +1137,10 @@ CreateSolidPicture (Picture pid, xRender - } - pPicture->pSourcePict->type = SourcePictTypeSolidFill; - pPicture->pSourcePict->solidFill.color = xRenderColorToCard32(*color); -+ pPicture->pSourcePict->solidFill.fullColor.alpha=color->alpha; -+ pPicture->pSourcePict->solidFill.fullColor.red=color->red; -+ pPicture->pSourcePict->solidFill.fullColor.green=color->green; -+ pPicture->pSourcePict->solidFill.fullColor.blue=color->blue; - return pPicture; - } - ---- a/nx-X11/programs/Xserver/hw/nxagent/X/NXpicturestr.h -+++ b/nx-X11/programs/Xserver/hw/nxagent/X/NXpicturestr.h -@@ -95,6 +95,7 @@ typedef struct _PictTransform { - typedef struct _PictSolidFill { - unsigned int type; - CARD32 color; -+ xRenderColor fullColor; - } PictSolidFill, *PictSolidFillPtr; - - typedef struct _PictGradientStop { diff --git a/debian/patches/0205_nxagent_refresh-adsl.full.patch b/debian/patches/0205_nxagent_refresh-adsl.full.patch deleted file mode 100644 index b35927328..000000000 --- a/debian/patches/0205_nxagent_refresh-adsl.full.patch +++ /dev/null @@ -1,13 +0,0 @@ -Description: Fix refresh errors on Win2012 RDP connections with speed=ADSL -Author: Oleksandr Shneyder <o.shneyder@phoca-gmbh.de> ---- a/nx-X11/programs/Xserver/hw/nxagent/GCOps.c -+++ b/nx-X11/programs/Xserver/hw/nxagent/GCOps.c -@@ -339,7 +339,7 @@ FIXME: The popup could be synchronized w - */ - - if ((pDstDrawable -> type == DRAWABLE_PIXMAP && -- nxagentOption(DeferLevel) > 0) || nxagentOption(DeferLevel) >= 2) -+ nxagentOption(DeferLevel) > 0) || nxagentOption(DeferLevel) >= 3) - { - pClipRegion = nxagentCreateRegion(pSrcDrawable, NULL, srcx, srcy, - width, height); diff --git a/debian/patches/0206_nxagent_clipboard-as-nxoption.full.patch b/debian/patches/0206_nxagent_clipboard-as-nxoption.full.patch deleted file mode 100644 index 2ee6ccabe..000000000 --- a/debian/patches/0206_nxagent_clipboard-as-nxoption.full.patch +++ /dev/null @@ -1,53 +0,0 @@ -Descripion: Add -clipboard cmdline option to nxagent -Author: Mike Gabriel <mike.gabriel@das-netzwerkteam.de> - ---- a/nx-X11/programs/Xserver/hw/nxagent/Args.c -+++ b/nx-X11/programs/Xserver/hw/nxagent/Args.c -@@ -984,7 +984,7 @@ int ddxProcessArgument(int argc, char *a - - if (!strcmp(argv[i], "-clipboard")) - { -- if (!strcmp(argv[i+1], "both")) -+ if ((!strcmp(argv[i+1], "both")) || (!strcmp(argv[i+1], "1"))) - { - nxagentChangeOption(Clipboard, ClipboardBoth); - } -@@ -996,7 +996,7 @@ int ddxProcessArgument(int argc, char *a - { - nxagentChangeOption(Clipboard, ClipboardServer); - } -- else if (!strcmp(argv[i+1], "none")) -+ else if ((!strcmp(argv[i+1], "none")) || (!strcmp(argv[i+1], "1"))) - { - nxagentChangeOption(Clipboard, ClipboardNone); - } -@@ -1255,6 +1255,29 @@ static void nxagentParseOptions(char *na - - return; - } -+ else if (strcmp(name, "clipboard") == 0) -+ { -+ if ((strcmp(value, "both") == 0) || (strcmp(value, "1") == 0)) -+ { -+ nxagentChangeOption(Clipboard, ClipboardBoth); -+ } -+ else if (strcmp(value, "client") == 0) -+ { -+ nxagentChangeOption(Clipboard, ClipboardClient); -+ } -+ else if (strcmp(value, "server") == 0) -+ { -+ nxagentChangeOption(Clipboard, ClipboardServer); -+ } -+ else if ((strcmp(value, "none") == 0) || (strcmp(value, "0") == 0)) -+ { -+ nxagentChangeOption(Clipboard, ClipboardNone); -+ } -+ else -+ { -+ nxagentChangeOption(Clipboard, ClipboardBoth); -+ } -+ } - else - { - #ifdef DEBUG diff --git a/debian/patches/0207_nxagent_fix-xfixes-selection.full.patch b/debian/patches/0207_nxagent_fix-xfixes-selection.full.patch deleted file mode 100644 index 491fe4129..000000000 --- a/debian/patches/0207_nxagent_fix-xfixes-selection.full.patch +++ /dev/null @@ -1,31 +0,0 @@ -Description: Fix XFIXES selection handling (copy and paste via middle mouse button). -Abstract: - When nxagent has the XFIXES extension enabled copy and - paste from outside applications to applications within the session - that rely on XFixesSelectSelectionInput (e.g. qt applications like - konsole) did never receive any notifications because the nxagent did - not register itself at the real X server to receive them. Fixes Bug - #585. -Author: Ulrich Sibiller <uli42@gmx.de> - ---- a/nx-X11/programs/Xserver/hw/nxagent/Clipboard.c -+++ b/nx-X11/programs/Xserver/hw/nxagent/Clipboard.c -@@ -1556,10 +1556,14 @@ int nxagentInitClipboard(WindowPtr pWin) - fprintf(stderr, "nxagentInitClipboard: Registering for XFixesSelectionNotify events.\n"); - #endif - -- XFixesSelectSelectionInput(nxagentDisplay, iWindow, nxagentClipboardAtom, -- XFixesSetSelectionOwnerNotifyMask | -- XFixesSelectionWindowDestroyNotifyMask | -- XFixesSelectionClientCloseNotifyMask); -+ for (i = 0; i < nxagentMaxSelections; i++) -+ { -+ XFixesSelectSelectionInput(nxagentDisplay, iWindow, -+ lastSelectionOwner[i].selection, -+ XFixesSetSelectionOwnerNotifyMask | -+ XFixesSelectionWindowDestroyNotifyMask | -+ XFixesSelectionClientCloseNotifyMask); -+ } - - nxagentXFixesInfo.Initialized = 1; - } diff --git a/debian/patches/0209_x2goagent_add-man-page.full.patch b/debian/patches/0209_x2goagent_add-man-page.full.patch deleted file mode 100644 index ad536994f..000000000 --- a/debian/patches/0209_x2goagent_add-man-page.full.patch +++ /dev/null @@ -1,41 +0,0 @@ -Description: Add x2goagent man page -Author: Mike Gabriel <mike.gabriel@das-netzwerkteam.de> - ---- /dev/null -+++ b/nx-X11/programs/Xserver/hw/nxagent/man/x2goagent.1 -@@ -0,0 +1,35 @@ -+.TH x2goagent 1 -+.SH NAME -+x2goagent \- X2Go Agent. -+.SH SYNOPSIS -+.B x2goagent -+.I "[options]" -+ -+.SH DESCRIPTION -+\fBx2goagent\fR is an Xnest-like X server for remote application/desktop access. -+.PP -+\fBx2goagent\fR implements a very efficient compression of the X11 protocol. -+.PP -+This increases performance when using X applications over high latency and -+low bandwidth networks, while providing a local (LAN-like) usage experience -+even if connecting from off-site locations (via cable modem or GSM). -+.PP -+\fBx2goagent\fR is not designed to be used as a standalone application. -+It has to be launched on the server side by the X2Go server software. -+.PP -+Available clients are -+\fBx2goclient\fR, \fBpyhoca-gui\fR and \fBpyhoca-gui\fR (using the -+Python X2Go API). -+ -+.SH OPTIONS -+.TP -+.B \-help -+Lists all others options that are not listed here. -+ -+.SH FURTHER READINGS -+Information on X2Go: http://wiki.x2go.org -+.PP -+Information on NX: http://www.nomachine.com -+ -+.SH AUTHOR -+This manual page was written by Mike Gabriel <mike.gabriel@das-netzwerkteam.de>. diff --git a/debian/patches/0210_nxagent_save_session_state.full.patch b/debian/patches/0210_nxagent_save_session_state.full.patch deleted file mode 100644 index 222746300..000000000 --- a/debian/patches/0210_nxagent_save_session_state.full.patch +++ /dev/null @@ -1,176 +0,0 @@ -Description: Save session state in file -Author: Oleksandr Shneyder <o.shneyder@phoca-gmbh.de> - ---- a/nx-X11/programs/Xserver/hw/nxagent/Args.c -+++ b/nx-X11/programs/Xserver/hw/nxagent/Args.c -@@ -60,6 +60,7 @@ is" without express or implied warranty. - #endif - #include "Handlers.h" - #include "Error.h" -+#include "Reconnect.h" - - /* - * NX includes and definitions. -@@ -1090,6 +1091,11 @@ static void nxagentParseOptions(char *na - - return; - } -+ else if (!strcmp(name, "state")) -+ { -+ setStatePath(value); -+ return; -+ } - else if (!strcmp(name, "fullscreen")) - { - if (nxagentReconnectTrap == True) -@@ -1369,6 +1375,11 @@ void nxagentProcessOptionsFile() - validateString(nxagentOptionFile)); - #endif - -+ /* -+ * Init statePath -+ */ -+ setStatePath(""); -+ - if (nxagentOptionFile == NULL) - { - return; ---- a/nx-X11/programs/Xserver/hw/nxagent/Init.c -+++ b/nx-X11/programs/Xserver/hw/nxagent/Init.c -@@ -63,7 +63,7 @@ is" without express or implied warranty. - - #include "NX.h" - #include "NXlib.h" -- -+#include "Reconnect.h" - /* - * Set here the required log level. - */ -@@ -233,6 +233,7 @@ void InitOutput(ScreenInfo *screenInfo, - fprintf(stderr, "Info: Agent running with pid '%d'.\n", getpid()); - - fprintf(stderr, "Session: Starting session at '%s'.\n", GetTimeAsString()); -+ saveAgentState("STARTING"); - } - - /* ---- a/nx-X11/programs/Xserver/hw/nxagent/Reconnect.c -+++ b/nx-X11/programs/Xserver/hw/nxagent/Reconnect.c -@@ -118,6 +118,33 @@ void *reconnectLossyLevel[STEP_NONE]; - - static enum RECONNECTION_STEP failedStep; - -+#include <limits.h> -+ -+/* -+ * Path of state File -+ */ -+char stateFile[PATH_MAX]; -+ -+ -+void setStatePath(char* path) -+{ -+ strncpy(stateFile, path, PATH_MAX-1); -+} -+ -+void saveAgentState(char* state) -+{ -+ FILE* fptr; -+ if(strlen(stateFile)) -+ { -+ fptr=fopen(stateFile, "w"); -+ if(!fptr) -+ return; -+ fprintf(fptr,"%s", state); -+ fclose(fptr); -+ } -+} -+ -+ - int nxagentHandleConnectionStates(void) - { - #ifdef TEST -@@ -211,6 +238,7 @@ TODO: This should be reset only when - fprintf(stderr, "Session: Display failure detected at '%s'.\n", GetTimeAsString()); - - fprintf(stderr, "Session: Suspending session at '%s'.\n", GetTimeAsString()); -+ saveAgentState("SUSPENDING"); - } - - nxagentDisconnectSession(); -@@ -265,6 +293,7 @@ TODO: This should be reset only when - fprintf(stderr, "Session: Session suspended at '%s'.\n", GetTimeAsString()); - #endif - } -+ saveAgentState("SUSPENDED"); - - nxagentResetDisplayHandlers(); - -@@ -622,6 +651,7 @@ Bool nxagentReconnectSession(void) - #else - fprintf(stderr, "Session: Session resumed at '%s'.\n", GetTimeAsString()); - #endif -+ saveAgentState("RUNNING"); - - nxagentRemoveSplashWindow(NULL); - -@@ -785,12 +815,14 @@ void nxagentHandleConnectionChanges() - if (nxagentSessionState == SESSION_GOING_DOWN) - { - fprintf(stderr, "Session: Suspending session at '%s'.\n", GetTimeAsString()); -+ saveAgentState("SUSPENDING"); - - nxagentDisconnectSession(); - } - else if (nxagentSessionState == SESSION_GOING_UP) - { - fprintf(stderr, "Session: Resuming session at '%s'.\n", GetTimeAsString()); -+ saveAgentState("RESUMING"); - - if (nxagentReconnectSession()) - { -@@ -803,6 +835,7 @@ void nxagentHandleConnectionChanges() - fprintf(stderr, "Session: Display failure detected at '%s'.\n", GetTimeAsString()); - - fprintf(stderr, "Session: Suspending session at '%s'.\n", GetTimeAsString()); -+ saveAgentState("SUSPENDING"); - - nxagentDisconnectSession(); - } ---- a/nx-X11/programs/Xserver/hw/nxagent/Reconnect.h -+++ b/nx-X11/programs/Xserver/hw/nxagent/Reconnect.h -@@ -34,6 +34,8 @@ void nxagentInitReconnector(void); - Bool nxagentReconnectSession(void); - int nxagentHandleConnectionStates(void); - void nxagentHandleConnectionChanges(void); -+void setStatePath(char*); -+void saveAgentState(char*); - - enum SESSION_STATE - { ---- a/nx-X11/programs/Xserver/hw/nxagent/X/NXdispatch.c -+++ b/nx-X11/programs/Xserver/hw/nxagent/X/NXdispatch.c -@@ -609,6 +609,7 @@ Reply Total Cached Bits In Bits Out - #endif - - nxagentSessionState = SESSION_UP; -+ saveAgentState("RUNNING"); - } - - #ifdef BLOCKS -@@ -823,6 +824,7 @@ Reply Total Cached Bits In Bits Out - */ - - fprintf(stderr, "Session: Terminating session at '%s'.\n", GetTimeAsString()); -+ saveAgentState("TERMINATING"); - - nxagentWaitDisplay(); - -@@ -833,6 +835,7 @@ Reply Total Cached Bits In Bits Out - { - NXShadowDestroy(); - } -+ saveAgentState("TERMINATED"); - - KillAllClients(); - DEALLOCATE_LOCAL(clientReady); diff --git a/debian/patches/0210_nxcomp_save_session_state.full+lite.patch b/debian/patches/0210_nxcomp_save_session_state.full+lite.patch deleted file mode 100644 index 40fb5c7ba..000000000 --- a/debian/patches/0210_nxcomp_save_session_state.full+lite.patch +++ /dev/null @@ -1,15 +0,0 @@ -Description: Ignore state=<statefile> option in nxproxy/nxcomp -Author: Oleksandr Shneyder <o.shneyder@phoca-gmbh.de> - ---- a/nxcomp/Loop.cpp -+++ b/nxcomp/Loop.cpp -@@ -8872,7 +8872,8 @@ int ParseEnvironmentOptions(const char * - } - else if (strcasecmp(name, "defer") == 0 || - strcasecmp(name, "tile") == 0 || -- strcasecmp(name, "menu") == 0) -+ strcasecmp(name, "menu") == 0 || -+ strcasecmp(name, "state") == 0 ) - { - #ifdef DEBUG - *logofs << "Loop: Ignoring agent option '" << name diff --git a/debian/patches/0211_nxcomp_set_default_options.full+lite.patch b/debian/patches/0211_nxcomp_set_default_options.full+lite.patch deleted file mode 100644 index 0472db21d..000000000 --- a/debian/patches/0211_nxcomp_set_default_options.full+lite.patch +++ /dev/null @@ -1,27 +0,0 @@ -Description: Set default pack and link options to avoid damage of session. -Author: Oleksandr Shneyder <o.shneyder@phoca-gmbh.de> - ---- a/nxcomp/Loop.cpp -+++ b/nxcomp/Loop.cpp -@@ -8328,8 +8328,8 @@ int ParseEnvironmentOptions(const char * - - cerr << "Error" << ": Can't identify 'link' option in string '" - << value << "'.\n"; -- -- return -1; -+ if (ParseLinkOption("adsl") < 0) -+ return -1; - } - } - else if (strcasecmp(name, "limit") == 0) -@@ -8783,8 +8783,8 @@ int ParseEnvironmentOptions(const char * - - cerr << "Error" << ": Can't identify pack method for string '" - << value << "'.\n"; -- -- return -1; -+ if (ParsePackOption("nopack")<0) -+ return -1; - } - } - else if (strcasecmp(name, "core") == 0) diff --git a/debian/patches/0212_nxcomp_build-on-Android.full+lite.patch b/debian/patches/0212_nxcomp_build-on-Android.full+lite.patch deleted file mode 100644 index 106c84499..000000000 --- a/debian/patches/0212_nxcomp_build-on-Android.full+lite.patch +++ /dev/null @@ -1,253 +0,0 @@ -Author: Nito Martinez <Nito@Qindel.ES> -Description: Fix FTBFS of nxproxy/nxcomp on Android - ---- a/nxcomp/Jpeg.cpp -+++ b/nxcomp/Jpeg.cpp -@@ -17,6 +17,9 @@ - - #include <X11/Xmd.h> - -+#ifdef ANDROID -+#include <strings.h> -+#endif - #include <unistd.h> - #include <setjmp.h> - #include <zlib.h> ---- a/nxcomp/Loop.cpp -+++ b/nxcomp/Loop.cpp -@@ -4187,7 +4187,7 @@ int SetupDisplaySocket(int &xServerAddrF - - #endif - -- char *separator = rindex(display, ':'); -+ char *separator = strrchr(display, ':'); - - if ((separator == NULL) || !isdigit(*(separator + 1))) - { -@@ -8240,7 +8240,7 @@ int ParseEnvironmentOptions(const char * - char *name; - char *value; - -- value = rindex(nextOpts, ':'); -+ value = strrchr(nextOpts, ':'); - - if (value != NULL) - { -@@ -11010,7 +11010,7 @@ int ParsePackOption(const char *opt) - packMethod == PACK_LOSSLESS || - packMethod == PACK_ADAPTIVE) - { -- const char *dash = rindex(opt, '-'); -+ const char *dash = strrchr(opt, '-'); - - if (dash != NULL && strlen(dash) == 2 && - *(dash + 1) >= '0' && *(dash + 1) <= '9') -@@ -12275,6 +12275,10 @@ int SetShmem() - control -> ShmemServer = 0; - } - -+ // For android, no shared memory available -+ control -> ShmemServer = 0; -+ control -> ShmemClientSize = 0; -+ - return 1; - } - -@@ -13525,7 +13529,7 @@ int ParseHostOption(const char *opt, cha - - int newPort = port; - -- const char *separator = rindex(opt, ':'); -+ const char *separator = strrchr(opt, ':'); - - if (separator != NULL) - { ---- a/nxcomp/Pgn.cpp -+++ b/nxcomp/Pgn.cpp -@@ -23,6 +23,9 @@ - - #include <X11/Xmd.h> - -+#ifdef ANDROID -+#include <strings.h> -+#endif - #include <unistd.h> - #include <stdio.h> - #include <png.h> ---- a/nxcomp/Proxy.cpp -+++ b/nxcomp/Proxy.cpp -@@ -20,6 +20,11 @@ - #include <cstdlib> - #include <sys/types.h> - #include <sys/stat.h> -+#ifdef ANDROID -+#include <netinet/in.h> -+#include <netinet/ip.h> -+#include <netinet/tcp.h> -+#endif - - #include "Misc.h" - -@@ -31,9 +36,11 @@ - #include <sys/un.h> - #endif - -+#ifndef ANDROID - #include <netinet/in.h> - #include <netinet/ip.h> - #include <netinet/tcp.h> -+#endif - - #if defined(__EMX__ ) || defined(__CYGWIN32__) - ---- a/nxcomp/ServerChannel.cpp -+++ b/nxcomp/ServerChannel.cpp -@@ -18,7 +18,9 @@ - #include <string.h> - #include <sys/types.h> - #include <sys/ipc.h> -+#ifndef ANDROID - #include <sys/shm.h> -+#endif - - #include <X11/X.h> - #include <X11/Xatom.h> -@@ -1079,7 +1081,6 @@ int ServerChannel::handleRead(EncodeBuff - - priority_++; - } -- - // - // Account this data to the original opcode. - // -@@ -1500,7 +1501,6 @@ int ServerChannel::handleRead(EncodeBuff - continue; - } - } -- - // - // Check if user pressed the CTRL+ALT+SHIFT+ESC key - // sequence because was unable to kill the session -@@ -5475,7 +5475,7 @@ int ServerChannel::handleColormap(unsign - *logofs << "handleColormap: Dumping colormap entries:\n" - << logofs_flush; - -- const unsigned char *p = unpackState_[resource] -> colormap -> data; -+ const unsigned char *p = (const unsigned char *) unpackState_[resource] -> colormap -> data; - - for (unsigned int i = 0; i < unpackState_[resource] -> - colormap -> entries; i++) -@@ -7100,7 +7100,12 @@ int ServerChannel::handleShmemReply(Enco - { - encodeBuffer.encodeValue(stage, 2); - -+#ifndef ANDROID - shmemState_ -> present = *(buffer + 8); -+#else -+ shmemState_ -> present = 0; -+ cerr << "Info: handleShmemReply: In android no shared memory. Setting present to 0 hardcoded\n"; -+#endif - shmemState_ -> opcode = *(buffer + 9); - shmemState_ -> event = *(buffer + 10); - shmemState_ -> error = *(buffer + 11); -@@ -7128,7 +7133,12 @@ int ServerChannel::handleShmemReply(Enco - cerr << "Info" << ": Using shared memory parameters 1/" - << (shmemState_ -> size / 1024) << "K.\n"; - -+#ifndef ANDROID - shmemState_ -> enabled = 1; -+#else -+ cerr << "Info: handleShmemReply: In android no shared memory. Setting enabled to -1. This should not be displayed\n"; -+ shmemState_ -> enabled = -1; -+#endif - - encodeBuffer.encodeBoolValue(1); - } -@@ -7241,7 +7251,7 @@ int ServerChannel::handleShmemRequest(De - // memory support is disabled by the - // user. - // -- -+#ifndef ANDROID - if (control -> ShmemServer == 1 && - control -> ShmemServerSize > 0 && - enableServer == 1) -@@ -7252,8 +7262,12 @@ int ServerChannel::handleShmemRequest(De - { - memcpy(buffer + 8, "NO-MIT-", 7); - } -+#else -+ cerr << "Info: handleShmemRequest: In android no shared memory. Returning NO-MIT- answer\n"; - -- sequenceQueue_.push(clientSequence_, opcode, -+ memcpy(buffer + 8, "NO-MIT-", 7); -+#endif -+ sequenceQueue_.push(clientSequence_, opcode, - opcodeStore_ -> getShmemParameters, stage); - - // -@@ -7289,9 +7303,13 @@ int ServerChannel::handleShmemRequest(De - - shmemState_ -> size = control -> ShmemServerSize; - -+#ifndef ANDROID - shmemState_ -> id = shmget(IPC_PRIVATE, shmemState_ -> size, - IPC_CREAT | permissions); -- -+#else -+ cerr << "Info: handleShmemReqyest: In android no shared memory (shmget). This message should not be displayed present should never be 1 in android\n"; -+ shmemState_ -> id = -1; -+#endif - if (shmemState_ -> id >= 0) - { - #if defined(TEST) || defined(INFO) -@@ -7302,8 +7320,12 @@ int ServerChannel::handleShmemRequest(De - #endif - - -+#ifndef ANDROID - shmemState_ -> address = shmat(shmemState_ -> id, 0, 0); -- -+#else -+ cerr << "Info: handleShmemReqyest: In android no shared memory (shmat). This message should not be displayed. present should never be 1 in android\n"; -+ shmemState_ -> address = NULL; -+#endif - if (shmemState_ -> address != NULL) - { - #ifdef TEST -@@ -7437,6 +7459,10 @@ int ServerChannel::handleShmem(unsigned - - return 0; - } -+#ifdef ANDROID -+ cerr << "Info: handleShmem: In android no shared memory. enabled should never be 1. This should not be displayed\n"; -+ return 0; -+#endif - - // - // Ignore null requests and requests that will not result -@@ -8054,14 +8080,22 @@ void ServerChannel::handleShmemStateRemo - { - if (shmemState_ != NULL) - { -- if (shmemState_ -> address != NULL) -+ if (shmemState_ -> address != NULL) - { -- shmdt((char *) shmemState_ -> address); -+#ifndef ANDROID -+ shmdt((char *) shmemState_ -> address); -+#else -+ cerr << "Info: handleShmemStateRemove: In android no shared memory. This should not be displayed. address should always be NULL\n"; -+#endif - } - - if (shmemState_ -> id > 0) - { -+#ifndef ANDROID - shmctl(shmemState_ -> id, IPC_RMID, 0); -+#else -+ cerr << "Info: handleShmemStateRemove: In android no shared memory. This should not be displayed. id should always be 0\n"; -+#endif - } - - delete shmemState_; diff --git a/debian/patches/0220_nxproxy_bind-loopback-only.full+lite.patch b/debian/patches/0220_nxproxy_bind-loopback-only.full+lite.patch deleted file mode 100644 index 038f7561b..000000000 --- a/debian/patches/0220_nxproxy_bind-loopback-only.full+lite.patch +++ /dev/null @@ -1,130 +0,0 @@ -Description: Force NX proxy to bind to loopback devices only (loopback option) -Author: Mike Gabriel <mike.gabriel@das-netzwerkteam.de> ---- a/nxcomp/Loop.cpp -+++ b/nxcomp/Loop.cpp -@@ -952,6 +952,7 @@ static char listenHost[DEFAULT_STRING_LE - static char displayHost[DEFAULT_STRING_LENGTH] = { 0 }; - static char authCookie[DEFAULT_STRING_LENGTH] = { 0 }; - -+static int loopbackBind = DEFAULT_LOOPBACK_BIND; - static int proxyPort = DEFAULT_NX_PROXY_PORT; - static int xPort = DEFAULT_NX_X_PORT; - -@@ -3959,7 +3960,14 @@ int SetupTcpSocket() - - tcpAddr.sin_family = AF_INET; - tcpAddr.sin_port = htons(proxyPortTCP); -- tcpAddr.sin_addr.s_addr = htonl(INADDR_ANY); -+ if ( loopbackBind ) -+ { -+ tcpAddr.sin_addr.s_addr = htonl(INADDR_LOOPBACK); -+ } -+ else -+ { -+ tcpAddr.sin_addr.s_addr = htonl(INADDR_ANY); -+ } - - if (bind(tcpFD, (sockaddr *) &tcpAddr, sizeof(tcpAddr)) == -1) - { -@@ -4550,7 +4558,14 @@ int ListenConnection(int port, const cha - - tcpAddr.sin_family = AF_INET; - tcpAddr.sin_port = htons(portTCP); -- tcpAddr.sin_addr.s_addr = htonl(INADDR_ANY); -+ if ( loopbackBind ) -+ { -+ tcpAddr.sin_addr.s_addr = htonl(INADDR_LOOPBACK); -+ } -+ else -+ { -+ tcpAddr.sin_addr.s_addr = htonl(INADDR_ANY); -+ } - - if (bind(newFD, (sockaddr *) &tcpAddr, sizeof(tcpAddr)) == -1) - { -@@ -6718,7 +6733,14 @@ int WaitForRemote(int portNum) - - #ifdef __APPLE__ - -- tcpAddr.sin_addr.s_addr = htonl(INADDR_ANY); -+ if ( loopbackBind ) -+ { -+ tcpAddr.sin_addr.s_addr = htonl(INADDR_LOOPBACK); -+ } -+ else -+ { -+ tcpAddr.sin_addr.s_addr = htonl(INADDR_ANY); -+ } - - #else - -@@ -8397,6 +8419,10 @@ int ParseEnvironmentOptions(const char * - - listenPort = ValidateArg("local", name, value); - } -+ else if (strcasecmp(name, "loopback") == 0) -+ { -+ loopbackBind = ValidateArg("local", name, value); -+ } - else if (strcasecmp(name, "accept") == 0) - { - if (*connectHost != '\0') -@@ -13778,7 +13804,14 @@ int ParseListenOption(int &address) - } - else - { -- address = htonl(INADDR_ANY); -+ if ( loopbackBind ) -+ { -+ address = htonl(INADDR_LOOPBACK); -+ } -+ else -+ { -+ address = htonl(INADDR_ANY); -+ } - } - } - else ---- a/nxcomp/Misc.cpp -+++ b/nxcomp/Misc.cpp -@@ -42,6 +42,14 @@ - #undef DEBUG - - // -+// By default nxproxy binds to all network interfaces, setting -+// DEFAULT_LOOPBACK_BIND to 1 enables binding to the loopback -+// device only. -+// -+ -+const int DEFAULT_LOOPBACK_BIND = 0; -+ -+// - // TCP port offset applied to any NX port specification. - // - -@@ -137,6 +145,8 @@ static const char UsageInfo[] = - \n\ - listen=n Local port used for accepting the proxy connection.\n\ - \n\ -+ loopback=b Bind to the loopback device only.\n\ -+\n\ - accept=s Name or IP of host that can connect to the proxy.\n\ - \n\ - connect=s Name or IP of host that the proxy will connect to.\n\ ---- a/nxcomp/Misc.h -+++ b/nxcomp/Misc.h -@@ -90,6 +90,14 @@ extern const int DEFAULT_NX_SLAVE_PORT_C - extern const int DEFAULT_NX_SLAVE_PORT_SERVER_OFFSET; - - // -+// NX proxy binds to all network interfaces by default -+// With the -loopback parameter, you can switch -+// over to binding to the loopback device only. -+// -+ -+extern const int DEFAULT_LOOPBACK_BIND; -+ -+// - // Return strings containing various info. - // - diff --git a/debian/patches/0300_nxagent_set-wm-class.full.patch b/debian/patches/0300_nxagent_set-wm-class.full.patch deleted file mode 100644 index 36b00a02d..000000000 --- a/debian/patches/0300_nxagent_set-wm-class.full.patch +++ /dev/null @@ -1,60 +0,0 @@ -Description: Set WM_CLASS to X2GoAgent/NXAgent - Depending on the binary name of the agent either NXAgent - or X2GoAgent is set as WM_Class. - . - This is needed for some window managers (like the one shipped with - Maemo) - . - The original WM_CLASS patch has been taken from the FreeNX patch - series, author unknown. - . - The nxagent/x2goagent has been done by the X2Go Project, author - see below. -Forwarded: not-needed -Author: Oleksandr Shneyder <oleksandr.shneyder@obviously-nice.de> -Last-Update: 2012-01-11 ---- a/nx-X11/programs/Xserver/hw/nxagent/Screen.c -+++ b/nx-X11/programs/Xserver/hw/nxagent/Screen.c -@@ -1762,6 +1762,42 @@ N/A - nxagentDefaultWindows[pScreen->myNum]); - #endif - -+ /* -+ * Setting WM_CLASS to "X2GoAgent" when running in X2Go Agent mode -+ * we need it to properly display all window parameters by some WMs -+ * (for example on Maemo) -+ */ -+ if(nxagentX2go) -+ { -+ #ifdef TEST -+ fprintf(stderr, "nxagentOpenScreen: Setting WM_CLASS and WM_NAME for window withid [%ld].\n", -+ nxagentDefaultWindows[pScreen->myNum]); -+ #endif -+ XClassHint hint; -+ hint.res_name=malloc(strlen("X2GoAgent")+1); -+ hint.res_class=malloc(strlen("X2GoAgent")+1); -+ strcpy(hint.res_name,"X2GoAgent"); -+ strcpy(hint.res_class,"X2GoAgent"); -+ XSetClassHint(nxagentDisplay,nxagentDefaultWindows[pScreen->myNum],&hint); -+ free(hint.res_name); -+ free(hint.res_class); -+ } else { -+ #ifdef TEST -+ fprintf(stderr, "nxagentOpenScreen: Setting WM_CLASS and WM_NAME for window withid [%ld].\n", -+ nxagentDefaultWindows[pScreen->myNum]); -+ #endif -+ -+ XClassHint hint; -+ hint.res_name=malloc(strlen("NXAgent")+1); -+ hint.res_class=malloc(strlen("NXAgent")+1); -+ strcpy(hint.res_name,"NXAgent"); -+ strcpy(hint.res_class,"NXAgent"); -+ XSetClassHint(nxagentDisplay,nxagentDefaultWindows[pScreen->myNum],&hint); -+ free(hint.res_name); -+ free(hint.res_class); -+ } -+ -+ - if (nxagentOption(Fullscreen)) - { - nxagentFullscreenWindow = nxagentDefaultWindows[pScreen->myNum]; diff --git a/debian/patches/0301_nx-X11_use-shared-libs.full.patch b/debian/patches/0301_nx-X11_use-shared-libs.full.patch deleted file mode 100644 index c464e793b..000000000 --- a/debian/patches/0301_nx-X11_use-shared-libs.full.patch +++ /dev/null @@ -1,100 +0,0 @@ -Description: Use shared libraries - Many distributions have a policy to reduce code duplications. - One means to avoid such duplications is to use shared libraries - instead of using libs that are ofter shipped for convenience. - . - Fedora: - http://fedoraproject.org/wiki/Packaging:Guidelines#Shared_Libraries - . - Debian (Section 10.7.4 of Debian policy): - http://www.debian.org/doc/debian-policy/ch-files.html -Forwarded: pending... -Author: Jan Engelhardt <jengelh@medozas.de> -Last-Update: 2012-02-14 ---- - nx-X11/config/cf/host.def | 11 ++++++----- - nx-X11/programs/Xserver/Imakefile | 6 +++--- - nx-X11/programs/nxauth/Imakefile | 2 +- - 3 files changed, 10 insertions(+), 9 deletions(-) - ---- a/nx-X11/config/cf/host.def -+++ b/nx-X11/config/cf/host.def -@@ -138,7 +138,7 @@ XCOMM $XFree86: xc/config/cf/xf86site.de - #define BuildRenderLibrary YES - #define SharedLibFreetype2 YES - #define NormalLibFreetype2 YES --#define FontLibSharedFreeType NO -+#define FontLibSharedFreeType YES - #endif - - /* -@@ -649,6 +649,7 @@ XCOMM $XFree86: xc/config/cf/xf86site.de - * - #define XserverStaticFontLib NO - */ -+#define XserverStaticFontLib YES - - /* - * To enable binary compatibility with previous versions of the font -@@ -733,7 +734,7 @@ XCOMM $XFree86: xc/config/cf/xf86site.de - #define BuildXKB YES - #define BuildXKBlib YES - --#define SharedLibXau NO -+#define SharedLibXau YES - - /* - * If you are running NetBSD 0.9C or later, and have the aperture driver -@@ -956,9 +957,9 @@ XCOMM $XFree86: xc/config/cf/xf86site.de - #define BuildXterm YES - */ - --#define SharedLibXau NO -+#define SharedLibXau YES - --#define SharedLibXdmcp NO -+#define SharedLibXdmcp YES - - #define BuildXaw7 YES - -@@ -976,7 +977,7 @@ XCOMM $XFree86: xc/config/cf/xf86site.de - #define BuildFontServer NO - #define BuildFreeType NO - #define BuildXTrueType NO --#define FontLibSharedFreeType NO -+#define FontLibSharedFreeType YES - #endif - - #if !defined(NXZaurusXServer) && defined(NXiPAQXServer) ---- a/nx-X11/programs/Xserver/Imakefile -+++ b/nx-X11/programs/Xserver/Imakefile -@@ -1013,15 +1013,15 @@ $(NXAGENTOBJS) $(NXAGENTLIBS) $(NXAGENTS - #if defined(SunArchitecture) - NXAGENTNXLIBS = -L ../../../nxcomp -L ../../../nxcompext -L ../../../nxcompshad \ - -lXcomp -lXcompext -lXcompshad -lrt -L/usr/sfw/lib -lXrender -lXfixes \ -- -L../../../nx-X11/exports/lib -lXtst -lXdamage -lXrandr -lXcomposite -+ -L../../../nx-X11/exports/lib -lXtst -lXdamage -lXrandr -lXcomposite -lXdmcp - #elif defined(cygwinArchitecture) - NXAGENTNXLIBS = -L ../../../nxcomp -L ../../../nxcompext \ - -lXcomp -lXcompext -lXrender -lX11 -lXext -lXcomposite -lXfixes \ -- -L ../../../nxcompshad -lXcompshad -L../../../nx-X11/exports/lib -lXtst -+ -L ../../../nxcompshad -lXcompshad -L../../../nx-X11/exports/lib -lXtst -lXdmcp - #else - NXAGENTNXLIBS = -L ../../../nxcomp -L ../../../nxcompext -L ../../../nxcompshad \ - -lXcomp -lXcompext -lXcompshad -lXrender -lX11 -lXext -lXfixes \ -- -L../../../nx-X11/exports/lib -lXtst -lXdamage -lXrandr -lXcomposite -lXinerama -+ -L../../../nx-X11/exports/lib -lXtst -lXdamage -lXrandr -lXcomposite -lXinerama -lXdmcp - #endif - - #endif ---- a/nx-X11/programs/nxauth/Imakefile -+++ b/nx-X11/programs/nxauth/Imakefile -@@ -26,7 +26,7 @@ XCOMM $XFree86: xc/programs/xauth/Imakef - - INCLUDES=-I../../lib - DEPLIBS = $(DEPXAUTHLIB) -- LOCAL_LIBRARIES = ../../exports/lib/libXau.a -+ LOCAL_LIBRARIES = $(XAUTHLIB) - SRCS = xauth.c gethost.c process.c parsedpy.c - OBJS = xauth.o gethost.o process.o parsedpy.o - CONN_DEFINES = $(CONNECTION_FLAGS) diff --git a/debian/patches/0302_nx-X11_xkbbasedir-detection.full.patch b/debian/patches/0302_nx-X11_xkbbasedir-detection.full.patch deleted file mode 100644 index 73a1b3547..000000000 --- a/debian/patches/0302_nx-X11_xkbbasedir-detection.full.patch +++ /dev/null @@ -1,84 +0,0 @@ -Description: Test for xkb/rules/base instead of xkb/keymap.dir for setting XkbBaseDir -Author: Mike Gabriel <mike.gabriel@das-netzwerkteam.de> -Abstract: - In recent (as of 2014/06) X.org release, the keymap.dir file - has become obsolete. Let's test for the xkb/rules/base file - instead. ---- a/nx-X11/programs/Xserver/xkb/ddxLoad.c -+++ b/nx-X11/programs/Xserver/xkb/ddxLoad.c -@@ -180,7 +180,7 @@ Win32System(const char *cmdline) - - #define NX_XKB_BASE_DIRECTORY "/usr/lib/X11/xkb" - #define NX_XKB_ALTERNATE_BASE_DIRECTORY "/usr/share/X11/xkb" --#define NX_KEYMAP_DIR_FILE "keymap.dir" -+#define NX_XKB_RULES_BASE_FILE "rules/base" - #define NX_ALT_XKBCOMP_PATH "/usr/bin" - - static char _NXXkbBasePath[PATH_MAX]; -@@ -189,43 +189,43 @@ static char _NXXkbCompPath[PATH_MAX]; - static int NXVerifyXkbBaseDirectory(const char *dirPath) - { - int size; -- char *keymapDirFilePath; -- struct stat keymapDirFileStat; -+ char *rulesBaseFilePath; -+ struct stat rulesBaseFileStat; - - /* -- * If keymap.dir file -- * is not present into -- * Xkb Base Directory, -+ * If rules/base file -+ * is not present inside -+ * the Xkb Base Directory, - * we suppose that the - * path is not valid. - */ - - size = strlen(dirPath) + strlen("/") + -- strlen(NX_KEYMAP_DIR_FILE) + 1; -+ strlen(NX_XKB_RULES_BASE_FILE) + 1; - -- if ((keymapDirFilePath = malloc((size + 1) * sizeof(char))) == NULL) -+ if ((rulesBaseFilePath = malloc((size + 1) * sizeof(char))) == NULL) - { - FatalError("NXVerifyXkbBaseDirectory: malloc failed.\n"); - } - -- strcpy(keymapDirFilePath, dirPath); -- strcat(keymapDirFilePath, "/"); -- strcat(keymapDirFilePath, NX_KEYMAP_DIR_FILE); -+ strcpy(rulesBaseFilePath, dirPath); -+ strcat(rulesBaseFilePath, "/"); -+ strcat(rulesBaseFilePath, NX_XKB_RULES_BASE_FILE); - - #ifdef TEST - fprintf(stderr, "NXVerifyXkbBaseDirectory: Looking for [%s] file.\n", -- keymapDirFilePath); -+ rulesBaseFilePath); - #endif - -- if (stat(keymapDirFilePath, &keymapDirFileStat) != 0) -+ if (stat(rulesBaseFilePath, &rulesBaseFileStat) != 0) - { - - #ifdef TEST - fprintf(stderr, "NXVerifyXkbBaseDirectory: Can't find the keymap.dir file [%s].\n", -- keymapDirFilePath); -+ rulesBaseFilePath); - #endif - -- free(keymapDirFilePath); -+ free(rulesBaseFilePath); - - return 0; - } -@@ -235,7 +235,7 @@ static int NXVerifyXkbBaseDirectory(cons - dirPath); - #endif - -- free(keymapDirFilePath); -+ free(rulesBaseFilePath); - - return 1; - } diff --git a/debian/patches/0320_nxagent_configurable-keystrokes.full.patch b/debian/patches/0320_nxagent_configurable-keystrokes.full.patch deleted file mode 100644 index 495e00770..000000000 --- a/debian/patches/0320_nxagent_configurable-keystrokes.full.patch +++ /dev/null @@ -1,1050 +0,0 @@ -Author: Alexander Wuerstlein <arw@arw.name> -Description: Make nxagent-specific keyboard bindings configurable - Replaces the hardcoded nxagent keybindings by a configurable - table of keybindings. The default configuration is the same as the - original one, to maintain compatibility. A user/administrator can either - specify a command line parameter, environment variable or place a file - in ~/.nx/config/keystrokes.cfg or /etc/nxagent/keystrokes.cfg to reconfigure - these keybindings. - . - The configuration file format is XML, a dependency on libxml2 is added - to allow parsing the configuration. ---- a/nx-X11/programs/Xserver/Imakefile -+++ b/nx-X11/programs/Xserver/Imakefile -@@ -1013,15 +1013,18 @@ $(NXAGENTOBJS) $(NXAGENTLIBS) $(NXAGENTS - #if defined(SunArchitecture) - NXAGENTNXLIBS = -L ../../../nxcomp -L ../../../nxcompext -L ../../../nxcompshad \ - -lXcomp -lXcompext -lXcompshad -lrt -L/usr/sfw/lib -lXrender -lXfixes \ -- -L../../../nx-X11/exports/lib -lXtst -lXdamage -lXrandr -lXcomposite -lXdmcp -+ -L../../../nx-X11/exports/lib -lXtst -lXdamage -lXrandr -lXcomposite -lXdmcp \ -+`pkg-config --libs libxml-2.0` - #elif defined(cygwinArchitecture) - NXAGENTNXLIBS = -L ../../../nxcomp -L ../../../nxcompext \ - -lXcomp -lXcompext -lXrender -lX11 -lXext -lXcomposite -lXfixes \ -- -L ../../../nxcompshad -lXcompshad -L../../../nx-X11/exports/lib -lXtst -lXdmcp -+ -L ../../../nxcompshad -lXcompshad -L../../../nx-X11/exports/lib -lXtst -lXdmcp \ -+`pkg-config --libs libxml-2.0` - #else - NXAGENTNXLIBS = -L ../../../nxcomp -L ../../../nxcompext -L ../../../nxcompshad \ - -lXcomp -lXcompext -lXcompshad -lXrender -lX11 -lXext -lXfixes \ -- -L../../../nx-X11/exports/lib -lXtst -lXdamage -lXrandr -lXcomposite -lXinerama -lXdmcp -+ -L../../../nx-X11/exports/lib -lXtst -lXdamage -lXrandr -lXcomposite -lXinerama -lXdmcp \ -+`pkg-config --libs libxml-2.0` - #endif - - #endif ---- a/nx-X11/programs/Xserver/hw/nxagent/Imakefile -+++ b/nx-X11/programs/Xserver/hw/nxagent/Imakefile -@@ -142,7 +142,8 @@ INCLUDES = -I. -I../../../../../nxcomp - - -I../../miext/damage -I../../miext/cw \ - -I../../GL/glx -I../../GL/include -I../../../../lib/GL/include -I../../Xext \ - -I$(EXTINCSRC) -I$(XINCLUDESRC) \ -- $(VFBINCLUDES) $(NXFONTINCLUDES) $(LIBXRANDRINCLUDES) -+ $(VFBINCLUDES) $(NXFONTINCLUDES) $(LIBXRANDRINCLUDES) \ -+ `pkg-config --cflags-only-I libxml-2.0` - #ifdef SunArchitecture - INCLUDES = -I. -I../../../../../nxcomp -I../../../../../nxcompext -I../../../../../nxcompshad \ - -I../../../../extras/Mesa/include \ -@@ -152,7 +153,8 @@ INCLUDES = -I. -I../../../../../nxcomp - - -I../../GL/glx -I../../GL/include -I../../../../lib/GL/include -I../../Xext \ - -I../../miext/damage -I../../miext/cw \ - -I$(EXTINCSRC) -I$(XINCLUDESRC) \ -- $(VFBINCLUDES) $(NXFONTINCLUDES) $(LIBXRANDRINCLUDES) -+ $(VFBINCLUDES) $(NXFONTINCLUDES) $(LIBXRANDRINCLUDES) \ -+ `pkg-config --cflags-only-I libxml-2.0` - #else - #ifdef cygwinArchitecture - INCLUDES = -I. -I$(XBUILDINCDIR) -I$(FONTINCSRC) \ -@@ -162,7 +164,8 @@ INCLUDES = -I. -I$(XBUILDINCDIR) -I$(FON - -I../../../../../nxcomp -I../../../../../nxcompext -I../../../../../nxcompshad \ - -I../../../../extras/Mesa/include \ - -I$(EXTINCSRC) -I$(XINCLUDESRC) \ -- $(VFBINCLUDES) $(NXFONTINCLUDES) $(LIBXRANDRINCLUDES) -+ $(VFBINCLUDES) $(NXFONTINCLUDES) $(LIBXRANDRINCLUDES) \ -+ `pkg-config --cflags-only-I libxml-2.0` - #endif - #endif - ---- a/nx-X11/programs/Xserver/hw/nxagent/Keystroke.c -+++ b/nx-X11/programs/Xserver/hw/nxagent/Keystroke.c -@@ -28,8 +28,15 @@ - #include "Keystroke.h" - #include "Drawable.h" - -+#include <unistd.h> -+ -+#include <libxml/parser.h> -+#include <libxml/tree.h> -+ - extern Bool nxagentWMIsRunning; - extern Bool nxagentIpaq; -+extern char *nxagentKeystrokeFile; -+Bool nxagentKeystrokeFileParsed = False; - - #ifdef NX_DEBUG_INPUT - int nxagentDebugInputDevices = 0; -@@ -47,297 +54,528 @@ extern void nxagentDeactivateInputDevice - #undef DEBUG - #undef DUMP - --int nxagentCheckSpecialKeystroke(XKeyEvent *X, enum HandleEventResult *result) --{ -- KeySym sym; -- int index = 0; - -- *result = doNothing; -+/* this table is used to parse actions given on the command line or in the -+ * config file, therefore indices have to match the enum in Keystroke.h */ -+char * nxagentSpecialKeystrokeNames[] = { -+ "end_marker", -+ "close_session", -+ "switch_all_screens", -+ "minimize", -+ "left", -+ "up", -+ "right", -+ "down", -+ "resize", -+ "defer", -+ "ignore", -+ "force_synchronization", -+ -+ "debug_tree", -+ "regions_on_screen", -+ "test_input", -+ "deactivate_input_devices_grab", -+ -+ "fullscreen", -+ "viewport_move_left", -+ "viewport_move_up", -+ "viewport_move_right", -+ "viewport_move_down", -+ NULL, -+}; -+ -+struct nxagentSpecialKeystrokeMap default_map[] = { -+ /* stroke, modifierMask, modifierAltMeta, keysym */ -+ {KEYSTROKE_DEBUG_TREE, ControlMask, 1, XK_q}, -+ {KEYSTROKE_DEBUG_TREE, ControlMask, 1, XK_Q}, -+ {KEYSTROKE_CLOSE_SESSION, ControlMask, 1, XK_t}, -+ {KEYSTROKE_CLOSE_SESSION, ControlMask, 1, XK_T}, -+ {KEYSTROKE_SWITCH_ALL_SCREENS, ControlMask, 1, XK_f}, -+ {KEYSTROKE_SWITCH_ALL_SCREENS, ControlMask, 1, XK_F}, -+ {KEYSTROKE_MINIMIZE, ControlMask, 1, XK_m}, -+ {KEYSTROKE_MINIMIZE, ControlMask, 1, XK_M}, -+ {KEYSTROKE_LEFT, ControlMask, 1, XK_Left}, -+ {KEYSTROKE_LEFT, ControlMask, 1, XK_KP_Left}, -+ {KEYSTROKE_UP, ControlMask, 1, XK_Up}, -+ {KEYSTROKE_UP, ControlMask, 1, XK_KP_Up}, -+ {KEYSTROKE_RIGHT, ControlMask, 1, XK_Right}, -+ {KEYSTROKE_RIGHT, ControlMask, 1, XK_KP_Right}, -+ {KEYSTROKE_DOWN, ControlMask, 1, XK_Down}, -+ {KEYSTROKE_DOWN, ControlMask, 1, XK_KP_Down}, -+ {KEYSTROKE_RESIZE, ControlMask, 1, XK_r}, -+ {KEYSTROKE_RESIZE, ControlMask, 1, XK_R}, -+ {KEYSTROKE_DEFER, ControlMask, 1, XK_e}, -+ {KEYSTROKE_DEFER, ControlMask, 1, XK_E}, -+ {KEYSTROKE_IGNORE, ControlMask, 1, XK_BackSpace}, -+ {KEYSTROKE_IGNORE, 0, 0, XK_Terminate_Server}, -+ {KEYSTROKE_FORCE_SYNCHRONIZATION, ControlMask, 1, XK_j}, -+ {KEYSTROKE_FORCE_SYNCHRONIZATION, ControlMask, 1, XK_J}, -+ {KEYSTROKE_REGIONS_ON_SCREEN, ControlMask, 1, XK_a}, -+ {KEYSTROKE_REGIONS_ON_SCREEN, ControlMask, 1, XK_A}, -+ {KEYSTROKE_TEST_INPUT, ControlMask, 1, XK_x}, -+ {KEYSTROKE_TEST_INPUT, ControlMask, 1, XK_X}, -+ {KEYSTROKE_DEACTIVATE_INPUT_DEVICES_GRAB, ControlMask, 1, XK_y}, -+ {KEYSTROKE_DEACTIVATE_INPUT_DEVICES_GRAB, ControlMask, 1, XK_Y}, -+ {KEYSTROKE_FULLSCREEN, ControlMask | ShiftMask, 1, XK_f}, -+ {KEYSTROKE_FULLSCREEN, ControlMask | ShiftMask, 1, XK_F}, -+ {KEYSTROKE_VIEWPORT_MOVE_LEFT, ControlMask | ShiftMask, 1, XK_Left}, -+ {KEYSTROKE_VIEWPORT_MOVE_LEFT, ControlMask | ShiftMask, 1, XK_KP_Left}, -+ {KEYSTROKE_VIEWPORT_MOVE_UP, ControlMask | ShiftMask, 1, XK_Up}, -+ {KEYSTROKE_VIEWPORT_MOVE_UP, ControlMask | ShiftMask, 1, XK_KP_Up}, -+ {KEYSTROKE_VIEWPORT_MOVE_RIGHT, ControlMask | ShiftMask, 1, XK_Right}, -+ {KEYSTROKE_VIEWPORT_MOVE_RIGHT, ControlMask | ShiftMask, 1, XK_KP_Right}, -+ {KEYSTROKE_VIEWPORT_MOVE_DOWN, ControlMask | ShiftMask, 1, XK_Down}, -+ {KEYSTROKE_VIEWPORT_MOVE_DOWN, ControlMask | ShiftMask, 1, XK_KP_Down}, -+ {KEYSTROKE_END_MARKER, 0, 0, 0}, -+}; -+struct nxagentSpecialKeystrokeMap *map = default_map; - -- /* -- * I don't know how much hard work is doing this operation. -- * Do we need a cache ? -+static int modifier_matches(unsigned int mask, int compare_alt_meta, unsigned int state) -+{ -+ /* nxagentAltMetaMask needs special handling -+ * it seems to me its an and-ed mask of all possible meta and alt keys -+ * somehow... -+ * -+ * otherwise this function would be just a simple bitop - */ -+ int ret = 1; - -- sym = XKeycodeToKeysym(nxagentDisplay, X -> keycode, index); -+ if (compare_alt_meta) { -+ if (! (state & nxagentAltMetaMask)) { -+ ret = 0; -+ } - -- if (sym == XK_VoidSymbol || sym == NoSymbol) -- { -- return 0; -+ mask &= ~nxagentAltMetaMask; - } - -- #ifdef TEST -- fprintf(stderr, "nxagentCheckSpecialKeystroke: got code %x - state %x - sym %lx\n", -- X -> keycode, X -> state, sym); -- #endif -- -- /* -- * Check special keys. -- */ -- -- /* -- * FIXME: We should use the keysym instead that the keycode -- * here. -- */ -+ /* all modifiers except meta/alt have to match exactly, extra bits are evil */ -+ if ((mask & state) != mask) { -+ ret = 0; -+ } - -- if (X -> keycode == 130 && nxagentIpaq) -- { -- *result = doStartKbd; -+ return ret; -+} - -- return 1; -- } -+static int read_binding_from_xmlnode(xmlNode *node, struct nxagentSpecialKeystrokeMap *ret) -+{ -+ int successful = 0; -+ struct nxagentSpecialKeystrokeMap new = {0, 0, 0, 0}; -+ xmlAttr *attr; - -- if ((X -> state & nxagentAltMetaMask) && -- ((X -> state & (ControlMask | ShiftMask)) == ControlMask)) -+ for (attr = node->properties; attr; attr = attr->next) - { -- switch (sym) -+ /* ignore attributes without data (which should never happen anyways) */ -+ if (attr->children->content == NULL) - { -- #ifdef DEBUG_TREE -- -- case XK_q: -- case XK_Q: -- { -- *result = doDebugTree; -- -- break; -- } -- -- #endif /* DEBUG_TREE */ -- -- case XK_t: -- case XK_T: -- { -- *result = doCloseSession; -- -- break; -- } -- case XK_f: -- case XK_F: -+ char *aname = (attr->name)?(attr->name):"unknown"; -+ fprintf(stderr, "attribute %s with NULL value", aname); -+ continue; -+ } -+ if (strcmp((char *)attr->name, "action") == 0) -+ { -+ int i; -+ for (i = 0; nxagentSpecialKeystrokeNames[i] != NULL; i++) - { -- if (nxagentOption(Rootless) == False) -+ if (strcmp(nxagentSpecialKeystrokeNames[i],(char *)attr->children->content) == 0) - { -- *result = doSwitchAllScreens; -+ /* this relies on the values of enum nxagentSpecialKeystroke and the -+ * indices of nxagentSpecialKeystrokeNames being in sync */ -+ new.stroke = i; -+ break; - } -- -- break; - } -- case XK_m: -- case XK_M: -+ continue; -+ } -+ else if (strcmp((char *)attr->name, "key") == 0) -+ { -+ new.keysym = XStringToKeysym((char *)attr->children->content); -+ /* NoSymbol is usually 0, but could there be weird implementations? */ -+ if (new.keysym == NoSymbol) - { -- if (nxagentOption(Rootless) == False) -- { -- *result = doMinimize; -- } -- -- break; -+ new.keysym = 0; - } -- case XK_Left: -- case XK_KP_Left: -- { -- if (nxagentOption(Rootless) == False && -- nxagentOption(DesktopResize) == False) -- { -- *result = doViewportLeft; -- } -+ continue; -+ } - -- break; -- } -- case XK_Up: -- case XK_KP_Up: -- { -- if (nxagentOption(Rootless) == False && -- nxagentOption(DesktopResize) == False) -- { -- *result = doViewportUp; -- } -+ /* ignore attributes with value="0" or "false", everything else is interpreted as true */ -+ if (strcmp((char *)attr->children->content, "0") == 0 || strcmp((char *)attr->children->content, "false") == 0) -+ continue; - -- break; -- } -- case XK_Right: -- case XK_KP_Right: -- { -- if (nxagentOption(Rootless) == False && -- nxagentOption(DesktopResize) == False) -- { -- *result = doViewportRight; -- } -+ if (strcmp((char *)attr->name, "Mod1") == 0) -+ { -+ new.modifierMask |= Mod1Mask; -+ } -+ else if (strcmp((char *)attr->name, "Mod2") == 0) -+ { -+ new.modifierMask |= Mod2Mask; -+ } -+ else if (strcmp((char *)attr->name, "Mod3") == 0) -+ { -+ new.modifierMask |= Mod3Mask; -+ } -+ else if (strcmp((char *)attr->name, "Mod4") == 0) -+ { -+ new.modifierMask |= Mod4Mask; -+ } -+ else if (strcmp((char *)attr->name, "Control") == 0) -+ { -+ new.modifierMask |= ControlMask; -+ } -+ else if (strcmp((char *)attr->name, "Shift") == 0) -+ { -+ new.modifierMask |= ShiftMask; -+ } -+ else if (strcmp((char *)attr->name, "Lock") == 0) -+ { -+ new.modifierMask |= LockMask; -+ } -+ else if (strcmp((char *)attr->name, "AltMeta") == 0) -+ { -+ new.modifierAltMeta = 1; -+ } -+ } - -- break; -- } -- case XK_Down: -- case XK_KP_Down: -- { -- if (nxagentOption(Rootless) == 0 && -- nxagentOption(DesktopResize) == 0) -- { -- *result = doViewportDown; -- } -+ if (new.stroke != 0 && new.keysym != 0) -+ { -+ /* keysym and stroke are required, everything else is optional */ -+ successful = 1; -+ memcpy(ret, &new, sizeof(struct nxagentSpecialKeystrokeMap)); -+ } -+ return successful; -+} - -- break; -- } -- case XK_R: -- case XK_r: -- { -- if (nxagentOption(Rootless) == 0) -- { -- *result = doSwitchResizeMode; -- } -+/* -+ * searches a keystroke xml file -+ * -+ * search order: -+ * - '-keystrokefile' commandline parameter -+ * - $NXAGENT_KEYSTROKEFILE environment variable -+ * - $HOME/.nx/config/keystrokes.cfg -+ * - /etc/nxagent/keystrokes.cfg -+ * - hardcoded traditional NX default settings -+ */ -+static void parse_keystroke_file(void) -+{ -+ char *filename = NULL; - -- break; -- } -- case XK_E: -- case XK_e: -- { -- *result = doSwitchDeferMode; -+ char *homefile = "/.nx/config/keystrokes.cfg"; -+ char *etcfile = "/etc/nxagent/keystrokes.cfg"; - -- break; -+ if (nxagentKeystrokeFile != NULL && access(nxagentKeystrokeFile, R_OK) == 0) -+ { -+ filename = strdup(nxagentKeystrokeFile); -+ if (filename == NULL) -+ { -+ fprintf(stderr, "malloc failed"); -+ exit(EXIT_FAILURE); -+ } -+ } -+ else if ((filename = getenv("NXAGENT_KEYSTROKEFILE")) != NULL && access(filename, R_OK) == 0) -+ { -+ filename = strdup(filename); -+ if (filename == NULL) -+ { -+ fprintf(stderr, "malloc failed"); -+ exit(EXIT_FAILURE); -+ } -+ } -+ else -+ { -+ char *homedir = getenv("HOME"); -+ filename = NULL; -+ if (homedir != NULL) -+ { -+ homedir = strdup(homedir); -+ if (homedir == NULL) -+ { -+ fprintf(stderr, "malloc failed"); -+exit(EXIT_FAILURE); - } -- case XK_BackSpace: -- case XK_Terminate_Server: -+ filename = calloc(1, strlen(homefile) + strlen(homedir) + 1); -+ if (filename == NULL) - { -- /* -- * Discard Ctrl-Alt-BackSpace key. -- */ -- -- return 1; -- -- break; -+ fprintf(stderr, "malloc failed"); -+ exit(EXIT_FAILURE); - } -- -- case XK_J: -- case XK_j: -+ strcpy(filename, homedir); -+ strcpy(filename + strlen(homedir), homefile); -+ if (homedir) - { -- nxagentForceSynchronization = 1; -- -- return 1; -+ free(homedir); - } -+ } - -- #ifdef DUMP -- -- case XK_A: -- case XK_a: -+ if (access(filename, R_OK) == 0) -+ { -+ /* empty */ -+ } -+ else if (access(etcfile, R_OK) == 0) -+ { -+ if (filename) -+ free(filename); -+ filename = strdup(etcfile); -+ if (filename == NULL) - { -- /* -- * Used to test the lazy encoding. -- */ -- -- nxagentRegionsOnScreen(); -- -- return 1; -+ fprintf(stderr, "malloc failed"); -+ exit(EXIT_FAILURE); - } -+ } -+ else -+ { -+ if (filename) -+free(filename); -+ filename = NULL; -+ } -+ } - -- #endif -- -- #ifdef NX_DEBUG_INPUT -+ /* now we know which file to read, if any */ -+ if (filename) -+ { -+ xmlDoc *doc = NULL; -+ xmlNode *root = NULL; -+ LIBXML_TEST_VERSION -+ doc = xmlReadFile(filename, NULL, 0); -+ if (doc != NULL) -+ { -+ xmlNode *cur = NULL; -+ root = xmlDocGetRootElement(doc); - -- case XK_X: -- case XK_x: -+ for (cur = root; cur; cur = cur->next) - { -- /* -- * Used to test the input devices state. -- */ -+ if (cur->type == XML_ELEMENT_NODE && strcmp((char *)cur->name, "keystrokes") == 0) -+{ -+ xmlNode *bindings = NULL; -+ int num = 0; -+ int idx = 0; - -- if (X -> type == KeyPress) -- { -- if (nxagentDebugInputDevices == 0) -+ for (bindings = cur->children; bindings; bindings = bindings->next) - { -- fprintf(stderr, "Info: Turning input devices debug ON.\n"); -- -- nxagentDebugInputDevices = 1; -+ if (bindings->type == XML_ELEMENT_NODE && strcmp((char *)bindings->name, "keystroke") == 0) -+ { -+ num++; -+ } - } -- else -+ map = calloc((num + 1), sizeof(struct nxagentSpecialKeystrokeMap)); -+ if (map == NULL) - { -- fprintf(stderr, "Info: Turning input devices debug OFF.\n"); -- -- nxagentDebugInputDevices = 0; -- -- nxagentLastInputDevicesDumpTime = 0; -+ fprintf(stderr, "malloc failed"); -+ exit(EXIT_FAILURE); - } -- } -- -- return 1; -- } - -- case XK_Y: -- case XK_y: -- { -- /* -- * Used to deactivate input devices grab. -- */ -+ for (bindings = cur->children; bindings; bindings = bindings->next) -+ { -+ if (bindings->type == XML_ELEMENT_NODE && strcmp((char *)bindings->name, "keystroke") == 0) -+ { -+ int res = 0; -+ res = read_binding_from_xmlnode(bindings, &(map[idx])); -+ if (res) -+ idx++; -+ } -+ } - -- if (X -> type == KeyPress) -- { -- nxagentDeactivateInputDevicesGrabs(); -+ map[idx].stroke = KEYSTROKE_END_MARKER; - } -- -- return 1; - } - -+ xmlFreeDoc(doc); -+ xmlCleanupParser(); -+ } -+ else -+ { -+ #ifdef DEBUG -+ fprintf("XML parsing for %s failed\n", filename); - #endif - } -+ free(filename); - } -- else if ((X -> state & nxagentAltMetaMask) && -- ((X -> state & (ControlMask | ShiftMask)) == (ControlMask | -- ShiftMask))) -+} -+ -+static enum nxagentSpecialKeystroke find_keystroke(XKeyEvent *X) -+{ -+ KeySym keysym = XKeycodeToKeysym(nxagentDisplay, X->keycode, 0); -+ struct nxagentSpecialKeystrokeMap *cur = map; -+ -+ if (! nxagentKeystrokeFileParsed) - { -- switch (sym) -- { -- case XK_f: -- case XK_F: -- { -- if (nxagentOption(Rootless) == 0) -- { -- *result = doSwitchFullscreen; -- } -+ parse_keystroke_file(); -+ nxagentKeystrokeFileParsed = True; -+ } - -- break; -- } -- case XK_Left: -- case XK_KP_Left: -- { -- if (nxagentOption(Rootless) == 0 && -- nxagentOption(DesktopResize) == 0) -- { -- *result = doViewportMoveLeft; -- } -+ enum nxagentSpecialKeystroke ret = KEYSTROKE_NOTHING; - -- break; -- } -- case XK_Up: -- case XK_KP_Up: -- { -- if (nxagentOption(Rootless) == 0 && -- nxagentOption(DesktopResize) == 0) -- { -- *result = doViewportMoveUp; -- } -+ while (cur->stroke != KEYSTROKE_END_MARKER) { -+ if (cur->keysym == keysym && modifier_matches(cur->modifierMask, cur->modifierAltMeta, X->state)) { -+ return cur->stroke; -+ } -+ cur++; -+ } - -- break; -- } -- case XK_Right: -- case XK_KP_Right: -- { -- if (nxagentOption(Rootless) == 0 && -- nxagentOption(DesktopResize) == 0) -- { -- *result = doViewportMoveRight; -- } -+ return ret; -+} - -- break; -- } -- case XK_Down: -- case XK_KP_Down: -- { -- if (nxagentOption(Rootless) == 0 && -- nxagentOption(DesktopResize) == 0) -- { -- *result = doViewportMoveDown; -- } -+int nxagentCheckSpecialKeystroke(XKeyEvent *X, enum HandleEventResult *result) -+{ -+ KeySym sym; -+ int index = 0; -+ enum nxagentSpecialKeystroke stroke = find_keystroke(X); - -- break; -- } -- } -+ *result = doNothing; -+ -+ /* -+ * I don't know how much hard work is doing this operation. -+ * Do we need a cache ? -+ */ -+ -+ sym = XKeycodeToKeysym(nxagentDisplay, X -> keycode, index); -+ -+ if (sym == XK_VoidSymbol || sym == NoSymbol) -+ { -+ return 0; - } - -+ #ifdef TEST -+ fprintf(stderr, "nxagentCheckSpecialKeystroke: got code %x - state %x - sym %lx\n", -+ X -> keycode, X -> state, sym); -+ #endif -+ -+ /* -+ * Check special keys. -+ */ -+ -+ /* -+ * FIXME: We should use the keysym instead that the keycode -+ * here. -+ */ -+ -+ if (X -> keycode == 130 && nxagentIpaq) -+ { -+ *result = doStartKbd; -+ -+ return 1; -+ } -+ -+ switch (stroke) { -+ case KEYSTROKE_DEBUG_TREE: -+ #ifdef DEBUG_TREE -+ *result = doDebugTree; -+ #endif -+ break; -+ case KEYSTROKE_CLOSE_SESSION: -+ *result = doCloseSession; -+ break; -+ case KEYSTROKE_SWITCH_ALL_SCREENS: -+ if (nxagentOption(Rootless) == False) { -+ *result = doSwitchAllScreens; -+ } -+ break; -+ case KEYSTROKE_MINIMIZE: -+ if (nxagentOption(Rootless) == False) { -+ *result = doMinimize; -+ } -+ break; -+ case KEYSTROKE_LEFT: -+ if (nxagentOption(Rootless) == False && -+ nxagentOption(DesktopResize) == False) { -+ *result = doViewportLeft; -+ } -+ break; -+ case KEYSTROKE_UP: -+ if (nxagentOption(Rootless) == False && -+ nxagentOption(DesktopResize) == False) { -+ *result = doViewportUp; -+ } -+ break; -+ case KEYSTROKE_RIGHT: -+ if (nxagentOption(Rootless) == False && -+ nxagentOption(DesktopResize) == False) { -+ *result = doViewportRight; -+ } -+ break; -+ case KEYSTROKE_DOWN: -+ if (nxagentOption(Rootless) == False && -+ nxagentOption(DesktopResize) == False) { -+ *result = doViewportDown; -+ } -+ break; -+ case KEYSTROKE_RESIZE: -+ if (nxagentOption(Rootless) == False) { -+ *result = doSwitchResizeMode; -+ } -+ break; -+ case KEYSTROKE_DEFER: -+ *result = doSwitchDeferMode; -+ break; -+ case KEYSTROKE_IGNORE: -+ /* this is used e.g. to ignore C-A-Backspace aka XK_Terminate_Server */ -+ return 1; -+ break; -+ case KEYSTROKE_FORCE_SYNCHRONIZATION: -+ nxagentForceSynchronization = 1; -+ break; -+ case KEYSTROKE_REGIONS_ON_SCREEN: -+ #ifdef DUMP -+ nxagentRegionsOnScreen(); -+ #endif -+ break; -+ case KEYSTROKE_TEST_INPUT: -+ /* -+ * Used to test the input devices state. -+ */ -+ #ifdef NX_DEBUG_INPUT -+ if (X -> type == KeyPress) { -+ if (nxagentDebugInputDevices == 0) { -+ fprintf(stderr, "Info: Turning input devices debug ON.\n"); -+ nxagentDebugInputDevices = 1; -+ } else { -+ fprintf(stderr, "Info: Turning input devices debug OFF.\n"); -+ nxagentDebugInputDevices = 0; -+ nxagentLastInputDevicesDumpTime = 0; -+ } -+ } -+ return 1; -+ #endif -+ break; -+ case KEYSTROKE_DEACTIVATE_INPUT_DEVICES_GRAB: -+ #ifdef NX_DEBUG_INPUT -+ if (X->type == KeyPress) { -+ nxagentDeactivateInputDevicesGrab(); -+ } -+ return 1; -+ #endif -+ break; -+ case KEYSTROKE_FULLSCREEN: -+ if (nxagentOption(Rootless) == 0) { -+ *result = doSwitchFullscreen; -+ } -+ break; -+ case KEYSTROKE_VIEWPORT_MOVE_LEFT: -+ if (nxagentOption(Rootless) == 0 && -+ nxagentOption(DesktopResize) == 0) { -+ *result = doViewportMoveLeft; -+ } -+ break; -+ case KEYSTROKE_VIEWPORT_MOVE_UP: -+ if (nxagentOption(Rootless) == 0 && -+ nxagentOption(DesktopResize) == 0) { -+ *result = doViewportMoveUp; -+ } -+ break; -+ case KEYSTROKE_VIEWPORT_MOVE_RIGHT: -+ if (nxagentOption(Rootless) == 0 && -+ nxagentOption(DesktopResize) == 0) { -+ *result = doViewportMoveRight; -+ } -+ break; -+ case KEYSTROKE_VIEWPORT_MOVE_DOWN: -+ if (nxagentOption(Rootless) == 0 && -+ nxagentOption(DesktopResize) == 0) { -+ *result = doViewportMoveDown; -+ } -+ break; -+ case KEYSTROKE_NOTHING: /* do nothing. difference to KEYSTROKE_IGNORE is the return value */ -+ case KEYSTROKE_END_MARKER: /* just to make gcc STFU */ -+ case KEYSTROKE_MAX: -+ break; -+ } - return (*result == doNothing) ? 0 : 1; - } ---- a/nx-X11/programs/Xserver/hw/nxagent/Keystroke.h -+++ b/nx-X11/programs/Xserver/hw/nxagent/Keystroke.h -@@ -24,4 +24,51 @@ extern int nxagentCheckSpecialKeystroke( - - unsigned int nxagentAltMetaMask; - -+/* keep this sorted, do not rely on any numerical value in this enum, and be aware -+ * that KEYSTROKE_MAX may be used in a malloc */ -+ -+/* also be aware that if changing any numerical values, you also need to change values -+ * Keystroke.c nxagentSpecialKeystrokeNames */ -+enum nxagentSpecialKeystroke { -+ /* 0 is used as end marker */ -+ KEYSTROKE_END_MARKER = 0, -+ KEYSTROKE_CLOSE_SESSION = 1, -+ KEYSTROKE_SWITCH_ALL_SCREENS = 2, -+ KEYSTROKE_MINIMIZE = 3, -+ KEYSTROKE_LEFT = 4, -+ KEYSTROKE_UP = 5, -+ KEYSTROKE_RIGHT = 6, -+ KEYSTROKE_DOWN = 7, -+ KEYSTROKE_RESIZE = 8, -+ KEYSTROKE_DEFER = 9, -+ KEYSTROKE_IGNORE = 10, -+ KEYSTROKE_FORCE_SYNCHRONIZATION = 11, -+ -+ /* stuff used for debugging, probably not useful for most people */ -+ KEYSTROKE_DEBUG_TREE = 12, -+ KEYSTROKE_REGIONS_ON_SCREEN = 13, -+ KEYSTROKE_TEST_INPUT = 14, -+ KEYSTROKE_DEACTIVATE_INPUT_DEVICES_GRAB = 15, -+ -+ KEYSTROKE_FULLSCREEN = 16, -+ KEYSTROKE_VIEWPORT_MOVE_LEFT = 17, -+ KEYSTROKE_VIEWPORT_MOVE_UP = 18, -+ KEYSTROKE_VIEWPORT_MOVE_RIGHT = 19, -+ KEYSTROKE_VIEWPORT_MOVE_DOWN = 20, -+ -+ KEYSTROKE_NOTHING = 21, -+ -+ /* insert more here, increment KEYSTROKE_MAX accordingly. -+ * then update string translation below */ -+ -+ KEYSTROKE_MAX=22, -+}; -+ -+struct nxagentSpecialKeystrokeMap { -+ enum nxagentSpecialKeystroke stroke; -+ unsigned int modifierMask; /* everything except alt/meta */ -+ int modifierAltMeta; /* modifier combination should include alt/meta */ -+ KeySym keysym; -+}; -+ - #endif /* __Keystroke_H__ */ ---- /dev/null -+++ b/README.keystrokes -@@ -0,0 +1,102 @@ -+Configurable keybindings in nxagent -+ -+Keybindings in the redistributed x2go version of nxagent can now be configured -+by the user. This is done via a configuration file. -+ -+File location -+------------- -+ -+nxagent parses the first available configuration file and ignores all others. -+ -+If nxagent is called without branding, it searches: -+- in the location given by the '-keystrokefile' command line parameter -+- in the location given by the NXAGENT_KEYSTROKEFILE environment variable -+- in ~/.nx/config/keystrokes.cfg -+- in /etc/nxagent/keystrokes.cfg -+ -+If nxagent is called with X2Go branding (i.e., as x2goagent), it searches: -+- in the location given by the '-keystrokefile' command line parameter -+- in the location given by the NXAGENT_KEYSTROKEFILE environment variable -+- in ~/.x2go/config/keystrokes.cfg -+- in /etc/x2go/keystrokes.cfg -+ -+If none of these files are accessible, the default configuration is used which -+is the same as the old, traditional nxagent keybindings. -+ -+File format -+----------- -+ -+The configuration file is XML with the following format: -+ -+<!DOCTYPE NXKeystroke> -+<keystrokes> -+<keystroke action="fullscreen" AltMeta="1" Control="1" key="b" /> -+<keystroke action="minimize" AltMeta="1" Control="1" key="space" /> -+<keystroke action="minimize" key="Escape" Shift="1" /> -+<keystroke action="close_session" key="F7" /> -+<keystroke action="fullscreen" key="F7" Mod1="1" /> -+<keystroke action="fullscreen" key="F6" Mod1="1" /> -+<keystroke action="force_synchronization" key="f" /> -+<keystroke action="fullscreen" key="space" Mod1="0" Mod2="0" Control="0" Shift="0" AltMeta="0" /> -+</keystrokes> -+ -+Each 'action' defines an action to be executed when receiving that keystroke. A -+list of possible actions is given below. Some of those actions are only -+available with debug builds of nxagent. -+ -+Keys are given as a combination of 'key' and (optionally) a number of -+modifiers. The key attribute is evaluated into a X11 key via the usual -+XStringToKeysym function. A list of possible keys can be found in -+/usr/include/X11/keysymdef.h, the names are specified without the leading -+'XK_'. Evaluation is case-sensitive, so, 'space' and 'Escape' will work while -+'Space' and 'escape' won't. -+ -+Modifiers are given as boolean attributes, possible modifiers are Mod1, Mod2, -+Mod3, Mod4, Control, Shift, Lock. Sensible combinations strongly depend on your -+keyboard configuration, but usually you will need Mod1 and Control. Boolean in -+this context means '0', 'false' and an unspecified attribute are false, anything -+else is considered true. -+ -+Everything in this file is case-sensitive. Unknown lines are ignored. -+Keybindings are evaluated from top to bottom, so if a keybinding matches, other -+keybindings further down will be ignored. The contents of the file replaces the -+default keybindings, and only one file is read, no merging between different -+configuration files is done. This also means that an empty or invalid configuration -+file deactivates all keybindings. -+ -+List of possible 'action' attributes: -+------------------------------------- -+ -+close_session -+ This terminates the session. -+switch_all_screens -+minimize -+ This will minimize the client window (even for fullscreen sessions.) -+left -+up -+right -+down -+resize -+ This action switches between the auto-resize and viewport mode (static size). The default is auto-resize. In viewport mode one can use the 'viewport_move_up', 'viewport_move_down', 'viewport_move_left' and 'viewport_move_right' actions to move within the image. -+defer -+ Works like 'ignore' to make some keys be ignored/defunct inside the session. -+ignore -+ Makes it possible to add 'ignore', as in nothing happens when certain keys are pressed. -+fullscreen -+ Switches the client window into or out of fullscreen mode. -+viewport_move_left -+ Moves the image viewport to the left. -+viewport_move_up -+ Moves the image viewport up. -+viewport_move_right -+ Moves the image viewport to the right. -+viewport_move_down -+ Moves the image viewport down. -+ -+Only in builds with certain debugging options enabled, ignored otherwise: -+force_synchronization -+ Forces the drawing of elements to be synchronized which can fix some visual bugs. -+debug_tree -+regions_on_screen -+test_input -+deactivate_input_devices_grab ---- a/nx-X11/programs/Xserver/hw/nxagent/Args.c -+++ b/nx-X11/programs/Xserver/hw/nxagent/Args.c -@@ -149,6 +149,8 @@ static int nxagentGetDialogName(void); - - char nxagentVerbose = 0; - -+char *nxagentKeystrokeFile = NULL; -+ - int ddxProcessArgument(int argc, char *argv[], int i) - { - /* -@@ -1022,6 +1024,20 @@ int ddxProcessArgument(int argc, char *a - return 1; - } - -+ if (!strcmp(argv[i], "-keystrokefile")) -+ { -+ if (i + 1 < argc) -+ { -+ if (NULL != (nxagentKeystrokeFile = strdup(argv[i + 1]))) -+ { -+ return 2; -+ } else { -+ FatalError("malloc failed"); -+ } -+ } -+ return 0; -+ } -+ - return 0; - } - ---- a/nx-X11/programs/Xserver/hw/nxagent/Args.h -+++ b/nx-X11/programs/Xserver/hw/nxagent/Args.h -@@ -83,4 +83,6 @@ extern int nxagentUserDefinedFontPath; - - extern int nxagentRemoteMajor; - -+extern char *nxagentKeystrokeFile; -+ - #endif /* __Args_H__ */ diff --git a/debian/patches/0321_nxagent_x2go-specific-keystroke-config.full.patch b/debian/patches/0321_nxagent_x2go-specific-keystroke-config.full.patch deleted file mode 100644 index 795f10b76..000000000 --- a/debian/patches/0321_nxagent_x2go-specific-keystroke-config.full.patch +++ /dev/null @@ -1,25 +0,0 @@ -Description: Adapt paths of keystrokes.cfg if nxagent runs as x2goagent -Author: Horst Schirmeier <horst@schirmeier.com> - ---- a/nx-X11/programs/Xserver/hw/nxagent/Keystroke.c -+++ b/nx-X11/programs/Xserver/hw/nxagent/Keystroke.c -@@ -27,6 +27,7 @@ - #include "Options.h" - #include "Keystroke.h" - #include "Drawable.h" -+#include "Init.h" /* extern int nxagentX2go */ - - #include <unistd.h> - -@@ -261,6 +262,11 @@ static void parse_keystroke_file(void) - char *homefile = "/.nx/config/keystrokes.cfg"; - char *etcfile = "/etc/nxagent/keystrokes.cfg"; - -+ if (nxagentX2go) { -+ homefile = "/.x2go/config/keystrokes.cfg"; -+ etcfile = "/etc/x2go/keystrokes.cfg"; -+ } -+ - if (nxagentKeystrokeFile != NULL && access(nxagentKeystrokeFile, R_OK) == 0) - { - filename = strdup(nxagentKeystrokeFile); diff --git a/debian/patches/0400_nxcomp-version.full+lite.patch b/debian/patches/0400_nxcomp-version.full+lite.patch deleted file mode 100644 index 012b16f4b..000000000 --- a/debian/patches/0400_nxcomp-version.full+lite.patch +++ /dev/null @@ -1,240 +0,0 @@ -Description: Allow version 4-digit version comparison/handshake -Author: Nito Martinez <Nito@Qindel.ES> ---- 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 @@ Control::Control() - 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 @@ class Control - // 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 @@ void PrintVersionInfo() - 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 @@ MSRC = - - 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 int NXTransParseEnvironment(const - - 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 <http://www.gnu.org/licenses>. */ -+/* */ -+/* 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 <stdio.h> -+#include <stdlib.h> -+#include <string.h> -+#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/0401_nxcomp_bigrequests-and-genericevent-extensions.full+lite.patch b/debian/patches/0401_nxcomp_bigrequests-and-genericevent-extensions.full+lite.patch deleted file mode 100644 index ab16864df..000000000 --- a/debian/patches/0401_nxcomp_bigrequests-and-genericevent-extensions.full+lite.patch +++ /dev/null @@ -1,1870 +0,0 @@ ---- a/nxcomp/ClientChannel.cpp -+++ b/nxcomp/ClientChannel.cpp -@@ -447,6 +447,26 @@ - } - } - -+ // Get other bits of the header, so will not need to refer to them again -+ unsigned char inputDataByte = inputMessage[1]; -+ unsigned int buffer2 = GetUINT(inputMessage + 2, bigEndian_); -+ unsigned int inputDataSize = buffer2 - 1; -+ if (buffer2 == 0) -+ { -+ // BIG-REQUESTS -+ inputMessage += 4; -+ inputLength -= 4; -+ inputDataSize = GetULONG(inputMessage, bigEndian_) - 2; -+ } -+ if (inputLength != (4 * (inputDataSize + 1))) -+ { -+ #ifdef WARNING -+ *logofs << "handleRead: inputLength=" << inputLength -+ << " mismatch inputDataSize=" << inputDataSize -+ << ".\n" << logofs_flush; -+ #endif -+ } -+ - // - // Go to the message's specific encoding. - // -@@ -455,6 +475,11 @@ - { - case X_AllocColor: - { -+ #ifdef WARNING -+ if (inputLength < 14) -+ *logofs << "handleRead: X_AllocColor inputLength=" << inputLength -+ << ".\n" << logofs_flush; -+ #endif - encodeBuffer.encodeCachedValue(GetULONG(inputMessage + 4, bigEndian_), 29, - clientCache_ -> colormapCache); - const unsigned char *nextSrc = inputMessage + 8; -@@ -476,6 +501,11 @@ - break; - case X_ReparentWindow: - { -+ #ifdef WARNING -+ if (inputLength < 16) -+ *logofs << "handleRead: X_ReparentWindow inputLength=" << inputLength -+ << ".\n" << logofs_flush; -+ #endif - encodeBuffer.encodeXidValue(GetULONG(inputMessage + 4, bigEndian_), - clientCache_ -> windowCache); - encodeBuffer.encodeXidValue(GetULONG(inputMessage + 8, bigEndian_), -@@ -486,6 +516,11 @@ - break; - case X_ChangeProperty: - { -+ #ifdef WARNING -+ if (inputLength < 24) -+ *logofs << "handleRead: X_ChangeProperty inputLength=" << inputLength -+ << ".\n" << logofs_flush; -+ #endif - MessageStore *messageStore = clientStore_ -> - getRequestStore(X_ChangeProperty); - -@@ -501,8 +536,36 @@ - encodeBuffer.encodeCachedValue(format, 8, - clientCache_ -> changePropertyFormatCache); - unsigned int dataLength = GetULONG(inputMessage + 20, bigEndian_); -+ -+ // Self-preserving sanity check (otherwise we crash and dump core): -+ // some clients do this when not getting their beloved BIG-REQUESTS. -+ unsigned int maxLength = 0; -+ if (format == 8) -+ { -+ maxLength = inputLength - 24; -+ } -+ else if (format == 32) -+ { -+ maxLength = (inputLength - 24) >> 2; -+ } -+ else if (format == 16) -+ { -+ maxLength = (inputLength - 24) >> 1; -+ } -+ if (dataLength > maxLength) -+ { -+ #ifdef WARNING -+ *logofs << "handleRead X_ChangeProperty bogus dataLength=" << dataLength -+ << " set to " << maxLength -+ << " when format=" << (int)format -+ << " inputLength=" << inputLength -+ << ".\n" << logofs_flush; -+ #endif -+ dataLength = maxLength; -+ } -+ - encodeBuffer.encodeValue(dataLength, 32, 6); -- encodeBuffer.encodeValue(inputMessage[1], 2); -+ encodeBuffer.encodeValue(inputDataByte, 2); - encodeBuffer.encodeXidValue(GetULONG(inputMessage + 4, bigEndian_), - clientCache_ -> windowCache); - encodeBuffer.encodeCachedValue(GetULONG(inputMessage + 8, bigEndian_), 29, -@@ -533,7 +596,7 @@ - nextSrc += 4; - } - } -- else -+ else if (format == 16) - { - for (unsigned int i = 0; i < dataLength; i++) - { -@@ -541,6 +604,13 @@ - nextSrc += 2; - } - } -+ else -+ { -+ #ifdef WARNING -+ *logofs << "ChangeProperty bogus format=" << (int)format -+ << ".\n" << logofs_flush; -+ #endif -+ } - } - break; - case X_SendEvent: -@@ -551,6 +621,11 @@ - // ratio. - // - -+ #ifdef WARNING -+ if (inputLength < 44) -+ *logofs << "handleRead: X_SendEvent inputLength=" << inputLength -+ << ".\n" << logofs_flush; -+ #endif - MessageStore *messageStore = clientStore_ -> - getRequestStore(X_SendEvent); - -@@ -562,7 +637,7 @@ - break; - } - -- encodeBuffer.encodeBoolValue((unsigned int) inputMessage[1]); -+ encodeBuffer.encodeBoolValue((unsigned int) inputDataByte); - unsigned int window = GetULONG(inputMessage + 4, bigEndian_); - - if (window == 0 || window == 1) -@@ -599,7 +674,12 @@ - break; - case X_ChangeWindowAttributes: - { -- encodeBuffer.encodeValue((inputLength - 12) >> 2, 4); -+ #ifdef WARNING -+ if (inputLength < 16) -+ *logofs << "handleRead: X_ChangeWindowAttributes inputLength=" << inputLength -+ << ".\n" << logofs_flush; -+ #endif -+ encodeBuffer.encodeValue(inputDataSize - 2, 4); - encodeBuffer.encodeXidValue(GetULONG(inputMessage + 4, bigEndian_), - clientCache_ -> windowCache); - unsigned int bitmask = GetULONG(inputMessage + 8, bigEndian_); -@@ -621,6 +701,11 @@ - break; - case X_ClearArea: - { -+ #ifdef WARNING -+ if (inputLength < 16) -+ *logofs << "handleRead: X_ClearArea inputLength=" << inputLength -+ << ".\n" << logofs_flush; -+ #endif - #ifdef TARGETS - - unsigned int t_id = GetULONG(inputMessage + 4, bigEndian_); -@@ -654,7 +739,7 @@ - break; - } - -- encodeBuffer.encodeBoolValue((unsigned int) inputMessage[1]); -+ encodeBuffer.encodeBoolValue((unsigned int) inputDataByte); - encodeBuffer.encodeXidValue(GetULONG(inputMessage + 4, bigEndian_), - clientCache_ -> windowCache); - const unsigned char *nextSrc = inputMessage + 8; -@@ -668,6 +753,11 @@ - break; - case X_CloseFont: - { -+ #ifdef WARNING -+ if (inputLength < 8) -+ *logofs << "handleRead: X_CloseFont inputLength=" << inputLength -+ << ".\n" << logofs_flush; -+ #endif - unsigned int font = GetULONG(inputMessage + 4, bigEndian_); - encodeBuffer.encodeValue(font - clientCache_ -> lastFont, 29, 5); - clientCache_ -> lastFont = font; -@@ -675,6 +765,11 @@ - break; - case X_ConfigureWindow: - { -+ #ifdef WARNING -+ if (inputLength < 12) -+ *logofs << "handleRead: X_ConfigureWindow inputLength=" << inputLength -+ << ".\n" << logofs_flush; -+ #endif - MessageStore *messageStore = clientStore_ -> - getRequestStore(X_ConfigureWindow); - -@@ -708,6 +803,11 @@ - break; - case X_ConvertSelection: - { -+ #ifdef WARNING -+ if (inputLength < 24) -+ *logofs << "handleRead: X_ConvertSelection inputLength=" << inputLength -+ << ".\n" << logofs_flush; -+ #endif - encodeBuffer.encodeCachedValue(GetULONG(inputMessage + 4, bigEndian_), 29, - clientCache_ -> convertSelectionRequestorCache, 9); - const unsigned char* nextSrc = inputMessage + 8; -@@ -725,6 +825,11 @@ - break; - case X_CopyArea: - { -+ #ifdef WARNING -+ if (inputLength < 28) -+ *logofs << "handleRead: X_CopyArea inputLength=" << inputLength -+ << ".\n" << logofs_flush; -+ #endif - #ifdef TARGETS - - unsigned int t_id = GetULONG(inputMessage + 4, bigEndian_); -@@ -793,6 +898,11 @@ - break; - case X_CopyGC: - { -+ #ifdef WARNING -+ if (inputLength < 16) -+ *logofs << "handleRead: X_CopyGC inputLength=" << inputLength -+ << ".\n" << logofs_flush; -+ #endif - #ifdef TARGETS - - unsigned int s_g_id = GetULONG(inputMessage + 4, bigEndian_); -@@ -814,6 +924,11 @@ - break; - case X_CopyPlane: - { -+ #ifdef WARNING -+ if (inputLength < 32) -+ *logofs << "handleRead: X_CopyPlane inputLength=" << inputLength -+ << ".\n" << logofs_flush; -+ #endif - encodeBuffer.encodeXidValue(GetULONG(inputMessage + 4, - bigEndian_), clientCache_ -> drawableCache); - encodeBuffer.encodeXidValue(GetULONG(inputMessage + 8, -@@ -833,6 +948,11 @@ - break; - case X_CreateGC: - { -+ #ifdef WARNING -+ if (inputLength < 16) -+ *logofs << "handleRead: X_CreateGC inputLength=" << inputLength -+ << ".\n" << logofs_flush; -+ #endif - #ifdef TARGETS - - unsigned int g_id = GetULONG(inputMessage + 4, bigEndian_); -@@ -917,6 +1037,11 @@ - break; - case X_ChangeGC: - { -+ #ifdef WARNING -+ if (inputLength < 16) -+ *logofs << "handleRead: X_ChangeGC inputLength=" << inputLength -+ << ".\n" << logofs_flush; -+ #endif - #ifdef TARGETS - - unsigned int g_id = GetULONG(inputMessage + 4, bigEndian_); -@@ -998,14 +1123,19 @@ - break; - case X_CreatePixmap: - { -+ #ifdef WARNING -+ if (inputLength < 16) -+ *logofs << "handleRead: X_CreatePixmap inputLength=" << inputLength -+ << ".\n" << logofs_flush; -+ #endif - #ifdef TARGETS - -- *logofs << "handleRead: X_CreatePixmap depth " << (unsigned) inputMessage[1] -+ *logofs << "handleRead: X_CreatePixmap depth " << (unsigned) inputDataByte - << ", pixmap id " << GetULONG(inputMessage + 4, bigEndian_) - << ", drawable " << GetULONG(inputMessage + 8, bigEndian_) - << ", width " << GetUINT(inputMessage + 12, bigEndian_) - << ", height " << GetUINT(inputMessage + 14, bigEndian_) -- << ", size " << GetUINT(inputMessage + 2, bigEndian_) << 2 -+ << ", length " << inputLength - << ".\n" << logofs_flush; - - unsigned int p_id = GetULONG(inputMessage + 4, bigEndian_); -@@ -1042,6 +1172,11 @@ - break; - case X_CreateWindow: - { -+ #ifdef WARNING -+ if (inputLength < 32) -+ *logofs << "handleRead: X_CreateWindow inputLength=" << inputLength -+ << ".\n" << logofs_flush; -+ #endif - #ifdef TARGETS - - unsigned int w_id = GetULONG(inputMessage + 4, bigEndian_); -@@ -1054,7 +1189,7 @@ - #endif - - unsigned bitmask = GetULONG(inputMessage + 28, bigEndian_); -- encodeBuffer.encodeCachedValue((unsigned int) inputMessage[1], 8, -+ encodeBuffer.encodeCachedValue((unsigned int) inputDataByte, 8, - clientCache_ -> depthCache); - encodeBuffer.encodeXidValue(GetULONG(inputMessage + 8, bigEndian_), - clientCache_ -> windowCache); -@@ -1098,6 +1233,11 @@ - break; - case X_DeleteProperty: - { -+ #ifdef WARNING -+ if (inputLength < 12) -+ *logofs << "handleRead: X_DeleteProperty inputLength=" << inputLength -+ << ".\n" << logofs_flush; -+ #endif - encodeBuffer.encodeXidValue(GetULONG(inputMessage + 4, bigEndian_), - clientCache_ -> windowCache); - encodeBuffer.encodeValue(GetULONG(inputMessage + 8, bigEndian_), 29, 9); -@@ -1105,6 +1245,11 @@ - break; - case X_FillPoly: - { -+ #ifdef WARNING -+ if (inputLength < 16) -+ *logofs << "handleRead: X_FillPoly inputLength=" << inputLength -+ << ".\n" << logofs_flush; -+ #endif - #ifdef TARGETS - - unsigned int t_id = GetULONG(inputMessage + 4, bigEndian_); -@@ -1138,7 +1283,7 @@ - break; - } - -- unsigned int numPoints = ((inputLength - 16) >> 2); -+ unsigned int numPoints = (inputDataSize - 3); - - if (control -> isProtoStep10() == 1) - { -@@ -1209,7 +1354,12 @@ - break; - case X_FreeColors: - { -- unsigned int numPixels = GetUINT(inputMessage + 2, bigEndian_) - 3; -+ #ifdef WARNING -+ if (inputLength < 12) -+ *logofs << "handleRead: X_FreeColors inputLength=" << inputLength -+ << ".\n" << logofs_flush; -+ #endif -+ unsigned int numPixels = inputDataSize - 2; - encodeBuffer.encodeValue(numPixels, 16, 4); - encodeBuffer.encodeCachedValue(GetULONG(inputMessage + 4, bigEndian_), 29, - clientCache_ -> colormapCache); -@@ -1225,12 +1375,22 @@ - break; - case X_FreeCursor: - { -+ #ifdef WARNING -+ if (inputLength < 8) -+ *logofs << "handleRead: X_FreeCursor inputLength=" << inputLength -+ << ".\n" << logofs_flush; -+ #endif - encodeBuffer.encodeCachedValue(GetULONG(inputMessage + 4, bigEndian_), - 29, clientCache_ -> cursorCache, 9); - } - break; - case X_FreeGC: - { -+ #ifdef WARNING -+ if (inputLength < 8) -+ *logofs << "handleRead: X_FreeGC inputLength=" << inputLength -+ << ".\n" << logofs_flush; -+ #endif - #ifdef TARGETS - - unsigned int g_id = GetULONG(inputMessage + 4, bigEndian_); -@@ -1284,6 +1444,11 @@ - break; - case X_FreePixmap: - { -+ #ifdef WARNING -+ if (inputLength < 8) -+ *logofs << "handleRead: X_FreePixmap inputLength=" << inputLength -+ << ".\n" << logofs_flush; -+ #endif - #ifdef TARGETS - - unsigned int p_id = GetULONG(inputMessage + 4, bigEndian_); -@@ -1318,6 +1483,11 @@ - break; - case X_GetAtomName: - { -+ #ifdef WARNING -+ if (inputLength < 8) -+ *logofs << "handleRead: X_GetAtomName inputLength=" << inputLength -+ << ".\n" << logofs_flush; -+ #endif - encodeBuffer.encodeValue(GetULONG(inputMessage + 4, bigEndian_), 29, 9); - - sequenceQueue_.push(clientSequence_, inputOpcode); -@@ -1327,6 +1497,11 @@ - break; - case X_GetGeometry: - { -+ #ifdef WARNING -+ if (inputLength < 8) -+ *logofs << "handleRead: X_GetGeometry inputLength=" << inputLength -+ << ".\n" << logofs_flush; -+ #endif - encodeBuffer.encodeXidValue(GetULONG(inputMessage + 4, bigEndian_), - clientCache_ -> drawableCache); - -@@ -1351,6 +1526,11 @@ - break; - case X_GetKeyboardMapping: - { -+ #ifdef WARNING -+ if (inputLength < 8) -+ *logofs << "handleRead: X_GetKeyboardMapping inputLength=" << inputLength -+ << ".\n" << logofs_flush; -+ #endif - encodeBuffer.encodeValue((unsigned int) inputMessage[4], 8); - encodeBuffer.encodeValue((unsigned int) inputMessage[5], 8); - -@@ -1361,6 +1541,11 @@ - break; - case X_GetProperty: - { -+ #ifdef WARNING -+ if (inputLength < 24) -+ *logofs << "handleRead: X_GetProperty inputLength=" << inputLength -+ << ".\n" << logofs_flush; -+ #endif - MessageStore *messageStore = clientStore_ -> - getRequestStore(X_GetProperty); - -@@ -1378,7 +1563,7 @@ - break; - } - -- encodeBuffer.encodeBoolValue((unsigned int) inputMessage[1]); -+ encodeBuffer.encodeBoolValue((unsigned int) inputDataByte); - encodeBuffer.encodeXidValue(GetULONG(inputMessage + 4, bigEndian_), - clientCache_ -> windowCache); - unsigned int property = GetULONG(inputMessage + 8, bigEndian_); -@@ -1394,6 +1579,11 @@ - break; - case X_GetSelectionOwner: - { -+ #ifdef WARNING -+ if (inputLength < 8) -+ *logofs << "handleRead: X_GetSelectionOwner inputLength=" << inputLength -+ << ".\n" << logofs_flush; -+ #endif - encodeBuffer.encodeCachedValue(GetULONG(inputMessage + 4, bigEndian_), 29, - clientCache_ -> getSelectionOwnerSelectionCache, 9); - -@@ -1404,7 +1594,12 @@ - break; - case X_GrabButton: - { -- encodeBuffer.encodeBoolValue((unsigned int) inputMessage[1]); -+ #ifdef WARNING -+ if (inputLength < 24) -+ *logofs << "handleRead: X_GrabButton inputLength=" << inputLength -+ << ".\n" << logofs_flush; -+ #endif -+ encodeBuffer.encodeBoolValue((unsigned int) inputDataByte); - encodeBuffer.encodeXidValue(GetULONG(inputMessage + 4, bigEndian_), - clientCache_ -> windowCache); - encodeBuffer.encodeCachedValue(GetUINT(inputMessage + 8, bigEndian_), 16, -@@ -1423,7 +1618,12 @@ - break; - case X_GrabPointer: - { -- encodeBuffer.encodeBoolValue((unsigned int) inputMessage[1]); -+ #ifdef WARNING -+ if (inputLength < 24) -+ *logofs << "handleRead: X_GrabPointer inputLength=" << inputLength -+ << ".\n" << logofs_flush; -+ #endif -+ encodeBuffer.encodeBoolValue((unsigned int) inputDataByte); - encodeBuffer.encodeXidValue(GetULONG(inputMessage + 4, bigEndian_), - clientCache_ -> windowCache); - encodeBuffer.encodeCachedValue(GetUINT(inputMessage + 8, bigEndian_), 16, -@@ -1448,7 +1648,12 @@ - break; - case X_GrabKeyboard: - { -- encodeBuffer.encodeBoolValue((unsigned int) inputMessage[1]); -+ #ifdef WARNING -+ if (inputLength < 12) -+ *logofs << "handleRead: X_GrabKeyboard inputLength=" << inputLength -+ << ".\n" << logofs_flush; -+ #endif -+ encodeBuffer.encodeBoolValue((unsigned int) inputDataByte); - encodeBuffer.encodeXidValue(GetULONG(inputMessage + 4, bigEndian_), - clientCache_ -> windowCache); - unsigned int timestamp = GetULONG(inputMessage + 8, bigEndian_); -@@ -1471,6 +1676,11 @@ - break; - case X_PolyText8: - { -+ #ifdef WARNING -+ if (inputLength < 16) -+ *logofs << "handleRead: X_PolyText8 inputLength=" << inputLength -+ << ".\n" << logofs_flush; -+ #endif - #ifdef TARGETS - - unsigned int t_id = GetULONG(inputMessage + 4, bigEndian_); -@@ -1555,6 +1765,11 @@ - break; - case X_PolyText16: - { -+ #ifdef WARNING -+ if (inputLength < 16) -+ *logofs << "handleRead: X_PolyText16 inputLength=" << inputLength -+ << ".\n" << logofs_flush; -+ #endif - #ifdef TARGETS - - unsigned int t_id = GetULONG(inputMessage + 4, bigEndian_); -@@ -1639,6 +1854,11 @@ - break; - case X_ImageText8: - { -+ #ifdef WARNING -+ if (inputLength < 16 + (unsigned int)inputDataByte) -+ *logofs << "handleRead: X_ImageText8 inputLength=" << inputLength -+ << ".\n" << logofs_flush; -+ #endif - #ifdef TARGETS - - unsigned int t_id = GetULONG(inputMessage + 4, bigEndian_); -@@ -1673,7 +1893,7 @@ - break; - } - -- unsigned int textLength = (unsigned int) inputMessage[1]; -+ unsigned int textLength = (unsigned int) inputDataByte; - encodeBuffer.encodeCachedValue(textLength, 8, - clientCache_ -> imageTextLengthCache, 4); - encodeBuffer.encodeXidValue(GetULONG(inputMessage + 4, -@@ -1706,6 +1926,11 @@ - break; - case X_ImageText16: - { -+ #ifdef WARNING -+ if (inputLength < 16 + (unsigned int)inputDataByte) -+ *logofs << "handleRead: X_ImageText16 inputLength=" << inputLength -+ << ".\n" << logofs_flush; -+ #endif - #ifdef TARGETS - - unsigned int t_id = GetULONG(inputMessage + 4, bigEndian_); -@@ -1740,7 +1965,7 @@ - break; - } - -- unsigned int textLength = (unsigned int) inputMessage[1]; -+ unsigned int textLength = (unsigned int) inputDataByte; - encodeBuffer.encodeCachedValue(textLength, 8, - clientCache_ -> imageTextLengthCache, 4); - encodeBuffer.encodeXidValue(GetULONG(inputMessage + 4, -@@ -1773,6 +1998,11 @@ - break; - case X_InternAtom: - { -+ #ifdef WARNING -+ if (inputLength < 8) -+ *logofs << "handleRead: X_InternAtom inputLength=" << inputLength -+ << ".\n" << logofs_flush; -+ #endif - MessageStore *messageStore = clientStore_ -> - getRequestStore(X_InternAtom); - -@@ -1796,8 +2026,18 @@ - } - - unsigned int nameLength = GetUINT(inputMessage + 4, bigEndian_); -+ unsigned int maxLength = inputLength - 8; -+ if (nameLength > maxLength) -+ { -+ #ifdef WARNING -+ *logofs << "handleRead X_InternAtom bogus nameLength=" << nameLength -+ << " set to " << maxLength -+ << ".\n" << logofs_flush; -+ #endif -+ nameLength = maxLength; -+ } - encodeBuffer.encodeValue(nameLength, 16, 6); -- encodeBuffer.encodeBoolValue((unsigned int) inputMessage[1]); -+ encodeBuffer.encodeBoolValue((unsigned int) inputDataByte); - const unsigned char *nextSrc = inputMessage + 8; - - if (control -> isProtoStep7() == 1) -@@ -1827,7 +2067,22 @@ - break; - case X_ListFonts: - { -+ #ifdef WARNING -+ if (inputLength < 8) -+ *logofs << "handleRead: X_ListFonts inputLength=" << inputLength -+ << ".\n" << logofs_flush; -+ #endif - unsigned int textLength = GetUINT(inputMessage + 6, bigEndian_); -+ unsigned int maxLength = inputLength - 8; -+ if (textLength > maxLength) -+ { -+ #ifdef WARNING -+ *logofs << "handleRead X_ListFonts bogus textLength=" << textLength -+ << " set to " << maxLength -+ << ".\n" << logofs_flush; -+ #endif -+ textLength = maxLength; -+ } - encodeBuffer.encodeValue(textLength, 16, 6); - encodeBuffer.encodeValue(GetUINT(inputMessage + 4, bigEndian_), 16, 6); - const unsigned char* nextSrc = inputMessage + 8; -@@ -1853,7 +2108,22 @@ - case X_LookupColor: - case X_AllocNamedColor: - { -+ #ifdef WARNING -+ if (inputLength < 12) -+ *logofs << "handleRead: X_AllocNamedColor inputLength=" << inputLength -+ << ".\n" << logofs_flush; -+ #endif - unsigned int textLength = GetUINT(inputMessage + 8, bigEndian_); -+ unsigned int maxLength = inputLength - 12; -+ if (textLength > maxLength) -+ { -+ #ifdef WARNING -+ *logofs << "handleRead X_AllocNamedColor bogus textLength=" << textLength -+ << " set to " << maxLength -+ << ".\n" << logofs_flush; -+ #endif -+ textLength = maxLength; -+ } - encodeBuffer.encodeValue(textLength, 16, 6); - encodeBuffer.encodeCachedValue(GetULONG(inputMessage + 4, bigEndian_), - 29, clientCache_ -> colormapCache); -@@ -1886,6 +2156,11 @@ - case X_QueryPointer: - case X_QueryTree: - { -+ #ifdef WARNING -+ if (inputLength < 8) -+ *logofs << "handleRead: X_MapWindow...X_QueryTree inputLength=" << inputLength -+ << ".\n" << logofs_flush; -+ #endif - #ifdef TARGETS - - if (inputOpcode == X_DestroyWindow) -@@ -1923,7 +2198,22 @@ - break; - case X_OpenFont: - { -+ #ifdef WARNING -+ if (inputLength < 12) -+ *logofs << "handleRead: X_OpenFont inputLength=" << inputLength -+ << ".\n" << logofs_flush; -+ #endif - unsigned int nameLength = GetUINT(inputMessage + 8, bigEndian_); -+ unsigned int maxLength = inputLength - 12; -+ if (nameLength > maxLength) -+ { -+ #ifdef WARNING -+ *logofs << "handleRead X_InternAtom bogus nameLength=" << nameLength -+ << " set to " << maxLength -+ << ".\n" << logofs_flush; -+ #endif -+ nameLength = maxLength; -+ } - encodeBuffer.encodeValue(nameLength, 16, 7); - unsigned int font = GetULONG(inputMessage + 4, bigEndian_); - encodeBuffer.encodeValue(font - clientCache_ -> lastFont, 29, 5); -@@ -1947,6 +2237,11 @@ - break; - case X_PolyFillRectangle: - { -+ #ifdef WARNING -+ if (inputLength < 12) -+ *logofs << "handleRead: X_PolyFillRectangle inputLength=" << inputLength -+ << ".\n" << logofs_flush; -+ #endif - #ifdef TARGETS - - unsigned int t_id = GetULONG(inputMessage + 4, bigEndian_); -@@ -2034,6 +2329,11 @@ - break; - case X_PolyFillArc: - { -+ #ifdef WARNING -+ if (inputLength < 12) -+ *logofs << "handleRead: X_PolyFillArc inputLength=" << inputLength -+ << ".\n" << logofs_flush; -+ #endif - #ifdef TARGETS - - unsigned int t_id = GetULONG(inputMessage + 4, bigEndian_); -@@ -2135,6 +2435,11 @@ - break; - case X_PolyArc: - { -+ #ifdef WARNING -+ if (inputLength < 12) -+ *logofs << "handleRead: X_PolyArc inputLength=" << inputLength -+ << ".\n" << logofs_flush; -+ #endif - #ifdef TARGETS - - unsigned int t_id = GetULONG(inputMessage + 4, bigEndian_); -@@ -2236,6 +2541,11 @@ - break; - case X_PolyPoint: - { -+ #ifdef WARNING -+ if (inputLength < 12) -+ *logofs << "handleRead: X_PolyPoint inputLength=" << inputLength -+ << ".\n" << logofs_flush; -+ #endif - #ifdef TARGETS - - unsigned int t_id = GetULONG(inputMessage + 4, bigEndian_); -@@ -2269,8 +2579,8 @@ - break; - } - -- encodeBuffer.encodeValue(GetUINT(inputMessage + 2, bigEndian_) - 3, 16, 4); -- encodeBuffer.encodeBoolValue((unsigned int) inputMessage[1]); -+ encodeBuffer.encodeValue(inputDataSize - 2, 32, 4); -+ encodeBuffer.encodeBoolValue((unsigned int) inputDataByte); - encodeBuffer.encodeXidValue(GetULONG(inputMessage + 4, bigEndian_), - clientCache_ -> drawableCache); - encodeBuffer.encodeXidValue(GetULONG(inputMessage + 8, bigEndian_), -@@ -2303,6 +2613,11 @@ - break; - case X_PolyLine: - { -+ #ifdef WARNING -+ if (inputLength < 12) -+ *logofs << "handleRead: X_PolyLine inputLength=" << inputLength -+ << ".\n" << logofs_flush; -+ #endif - #ifdef TARGETS - - unsigned int t_id = GetULONG(inputMessage + 4, bigEndian_); -@@ -2336,8 +2651,8 @@ - break; - } - -- encodeBuffer.encodeValue(GetUINT(inputMessage + 2, bigEndian_) - 3, 16, 4); -- encodeBuffer.encodeBoolValue((unsigned int) inputMessage[1]); -+ encodeBuffer.encodeValue(inputDataSize - 2, 32, 4); -+ encodeBuffer.encodeBoolValue((unsigned int) inputDataByte); - encodeBuffer.encodeXidValue(GetULONG(inputMessage + 4, - bigEndian_), clientCache_ -> drawableCache); - encodeBuffer.encodeXidValue(GetULONG(inputMessage + 8, -@@ -2370,8 +2685,12 @@ - break; - case X_PolyRectangle: - { -- encodeBuffer.encodeValue((GetUINT(inputMessage + 2, -- bigEndian_) - 3) >> 1, 16, 3); -+ #ifdef WARNING -+ if (inputLength < 12) -+ *logofs << "handleRead: X_PolyRectangle inputLength=" << inputLength -+ << ".\n" << logofs_flush; -+ #endif -+ encodeBuffer.encodeValue((inputDataSize - 2) >> 1, 32, 3); - encodeBuffer.encodeXidValue(GetULONG(inputMessage + 4, - bigEndian_), clientCache_ -> drawableCache); - encodeBuffer.encodeXidValue(GetULONG(inputMessage + 8, -@@ -2391,6 +2710,11 @@ - break; - case X_PolySegment: - { -+ #ifdef WARNING -+ if (inputLength < 12) -+ *logofs << "handleRead: X_PolySegment inputLength=" << inputLength -+ << ".\n" << logofs_flush; -+ #endif - #ifdef TARGETS - - unsigned int t_id = GetULONG(inputMessage + 4, bigEndian_); -@@ -2424,8 +2748,7 @@ - break; - } - -- encodeBuffer.encodeValue((GetUINT(inputMessage + 2, -- bigEndian_) - 3) >> 1, 16, 4); -+ encodeBuffer.encodeValue((inputDataSize - 2) >> 1, 32, 4); - encodeBuffer.encodeXidValue(GetULONG(inputMessage + 4, - bigEndian_), clientCache_ -> drawableCache); - encodeBuffer.encodeXidValue(GetULONG(inputMessage + 8, -@@ -2491,6 +2814,11 @@ - break; - case X_PutImage: - { -+ #ifdef WARNING -+ if (inputLength < 8) -+ *logofs << "handleRead: X_PutImage inputLength=" << inputLength -+ << ".\n" << logofs_flush; -+ #endif - #ifdef TARGETS - - unsigned int t_id = GetULONG(inputMessage + 4, bigEndian_); -@@ -2522,7 +2850,12 @@ - break; - case X_QueryBestSize: - { -- encodeBuffer.encodeValue((unsigned int)inputMessage[1], 2); -+ #ifdef WARNING -+ if (inputLength < 12) -+ *logofs << "handleRead: X_QueryBestSize inputLength=" << inputLength -+ << ".\n" << logofs_flush; -+ #endif -+ encodeBuffer.encodeValue((unsigned int)inputDataByte, 2); - encodeBuffer.encodeXidValue(GetULONG(inputMessage + 4, - bigEndian_), clientCache_ -> drawableCache); - encodeBuffer.encodeValue(GetUINT(inputMessage + 8, bigEndian_), 16, 8); -@@ -2535,10 +2868,15 @@ - break; - case X_QueryColors: - { -+ #ifdef WARNING -+ if (inputLength < 8) -+ *logofs << "handleRead: X_QueryColors inputLength=" << inputLength -+ << ".\n" << logofs_flush; -+ #endif - // Differential encoding. - encodeBuffer.encodeBoolValue(1); - -- unsigned int numColors = ((inputLength - 8) >> 2); -+ unsigned int numColors = (inputDataSize - 1); - encodeBuffer.encodeValue(numColors, 16, 5); - encodeBuffer.encodeCachedValue(GetULONG(inputMessage + 4, bigEndian_), 29, - clientCache_ -> colormapCache); -@@ -2567,15 +2905,20 @@ - break; - case X_QueryExtension: - { -+ #ifdef WARNING -+ if (inputLength < 8) -+ *logofs << "handleRead: X_QueryExtension inputLength=" << inputLength -+ << ".\n" << logofs_flush; -+ #endif - #ifdef TEST - - char data[256]; - - int length = GetUINT(inputMessage + 4, bigEndian_); - -- if (length > 256) -+ if (length > 255) - { -- length = 256; -+ length = 255; - } - - strncpy(data, (char *) inputMessage + 8, length); -@@ -2588,6 +2931,16 @@ - #endif - - unsigned int nameLength = GetUINT(inputMessage + 4, bigEndian_); -+ unsigned int maxLength = inputLength - 8; -+ if (nameLength > maxLength) -+ { -+ #ifdef WARNING -+ *logofs << "handleRead X_QueryExtension bogus nameLength=" << nameLength -+ << " set to " << maxLength -+ << ".\n" << logofs_flush; -+ #endif -+ nameLength = maxLength; -+ } - encodeBuffer.encodeValue(nameLength, 16, 6); - const unsigned char *nextSrc = inputMessage + 8; - -@@ -2614,6 +2967,11 @@ - break; - case X_QueryFont: - { -+ #ifdef WARNING -+ if (inputLength < 8) -+ *logofs << "handleRead: X_QueryFont inputLength=" << inputLength -+ << ".\n" << logofs_flush; -+ #endif - unsigned int font = GetULONG(inputMessage + 4, bigEndian_); - encodeBuffer.encodeValue(font - clientCache_ -> lastFont, 29, 5); - clientCache_ -> lastFont = font; -@@ -2625,6 +2983,11 @@ - break; - case X_SetClipRectangles: - { -+ #ifdef WARNING -+ if (inputLength < 12) -+ *logofs << "handleRead: X_SetClipRectangles inputLength=" << inputLength -+ << ".\n" << logofs_flush; -+ #endif - MessageStore *messageStore = clientStore_ -> - getRequestStore(X_SetClipRectangles); - -@@ -2636,7 +2999,7 @@ - break; - } - -- unsigned int numRectangles = ((inputLength - 12) >> 3); -+ unsigned int numRectangles = ((inputDataSize - 2) >> 1); - - if (control -> isProtoStep9() == 1) - { -@@ -2647,7 +3010,7 @@ - encodeBuffer.encodeValue(numRectangles, 13, 4); - } - -- encodeBuffer.encodeValue((unsigned int) inputMessage[1], 2); -+ encodeBuffer.encodeValue((unsigned int) inputDataByte, 2); - encodeBuffer.encodeXidValue(GetULONG(inputMessage + 4, bigEndian_), - clientCache_ -> gcCache); - encodeBuffer.encodeCachedValue(GetUINT(inputMessage + 8, bigEndian_), 16, -@@ -2668,7 +3031,22 @@ - break; - case X_SetDashes: - { -+ #ifdef WARNING -+ if (inputLength < 12) -+ *logofs << "handleRead: X_SetDashes inputLength=" << inputLength -+ << ".\n" << logofs_flush; -+ #endif - unsigned int numDashes = GetUINT(inputMessage + 10, bigEndian_); -+ unsigned int maxLength = inputLength - 12; -+ if (numDashes > maxLength) -+ { -+ #ifdef WARNING -+ *logofs << "handleRead X_SetDashes bogus numDashes=" << numDashes -+ << " set to " << maxLength -+ << ".\n" << logofs_flush; -+ #endif -+ numDashes = maxLength; -+ } - encodeBuffer.encodeCachedValue(numDashes, 16, - clientCache_ -> setDashesLengthCache, 5); - encodeBuffer.encodeXidValue(GetULONG(inputMessage + 4, bigEndian_), -@@ -2683,6 +3061,11 @@ - break; - case X_SetSelectionOwner: - { -+ #ifdef WARNING -+ if (inputLength < 16) -+ *logofs << "handleRead: X_SetSelectionOwner inputLength=" << inputLength -+ << ".\n" << logofs_flush; -+ #endif - encodeBuffer.encodeCachedValue(GetULONG(inputMessage + 4, bigEndian_), 29, - clientCache_ -> setSelectionOwnerCache, 9); - encodeBuffer.encodeCachedValue(GetULONG(inputMessage + 8, bigEndian_), 29, -@@ -2693,6 +3076,11 @@ - break; - case X_TranslateCoords: - { -+ #ifdef WARNING -+ if (inputLength < 16) -+ *logofs << "handleRead: X_TranslateCoords inputLength=" << inputLength -+ << ".\n" << logofs_flush; -+ #endif - #ifdef TARGETS - - unsigned int t_id = GetULONG(inputMessage + 4, bigEndian_); -@@ -2764,6 +3152,11 @@ - break; - case X_GetImage: - { -+ #ifdef WARNING -+ if (inputLength < 20) -+ *logofs << "handleRead: X_GetImage inputLength=" << inputLength -+ << ".\n" << logofs_flush; -+ #endif - #ifdef TARGETS - - unsigned int t_id = GetULONG(inputMessage + 4, bigEndian_); -@@ -2802,7 +3195,7 @@ - } - - // Format. -- encodeBuffer.encodeValue((unsigned int) inputMessage[1], 2); -+ encodeBuffer.encodeValue((unsigned int) inputDataByte, 2); - // Drawable. - encodeBuffer.encodeXidValue(GetULONG(inputMessage + 4, - bigEndian_), clientCache_ -> drawableCache); -@@ -2869,6 +3262,11 @@ - } - else if (inputOpcode == opcodeStore_ -> putPackedImage) - { -+ #ifdef WARNING -+ if (inputLength < 24) -+ *logofs << "handleRead: putPackedImage inputLength=" << inputLength -+ << ".\n" << logofs_flush; -+ #endif - #ifdef TARGETS - - unsigned int t_id = GetULONG(inputMessage + 4, bigEndian_); -@@ -3004,7 +3402,7 @@ - << ".\n" << logofs_flush; - #endif - -- encodeBuffer.encodeCachedValue(*(inputMessage + 1), 8, -+ encodeBuffer.encodeCachedValue(inputDataByte, 8, - clientCache_ -> resourceCache); - } - else if (inputOpcode == opcodeStore_ -> freeUnpack) -@@ -3015,7 +3413,7 @@ - << ".\n" << logofs_flush; - #endif - -- encodeBuffer.encodeCachedValue(*(inputMessage + 1), 8, -+ encodeBuffer.encodeCachedValue(inputDataByte, 8, - clientCache_ -> resourceCache); - } - else if (inputOpcode == opcodeStore_ -> getControlParameters) -@@ -3130,6 +3528,11 @@ - // Enable or disable expose events - // coming from the real server. - // -+ #ifdef WARNING -+ if (inputLength < 8) -+ *logofs << "handleRead: setExposeParameters inputLength=" << inputLength -+ << ".\n" << logofs_flush; -+ #endif - - encodeBuffer.encodeBoolValue(*(inputMessage + 4)); - encodeBuffer.encodeBoolValue(*(inputMessage + 5)); -@@ -3198,10 +3601,10 @@ - { - if (hit) - { -- statistics -> addRenderCachedRequest(*(inputMessage + 1)); -+ statistics -> addRenderCachedRequest(inputDataByte); - } - -- statistics -> addRenderRequestBits(*(inputMessage + 1), inputLength << 3, bits); -+ statistics -> addRenderRequestBits(inputDataByte, inputLength << 3, bits); - } - - } // End if (firstRequest_)... else ... -@@ -4548,10 +4951,10 @@ - // - - /* --FIXME: Recover the sequence number if the proxy -+Fixed as below? - FIXME: Recover the sequence number if the proxy - is not connected to an agent. - */ -- if (serverSequence_ > lastSequence_ || -+ if (SequenceNumber_x_gt_y(serverSequence_, lastSequence_) || - control -> SessionMode != session_proxy) - { - #ifdef DEBUG -@@ -4564,7 +4967,7 @@ - lastSequence_ = serverSequence_; - } - #ifdef DEBUG -- else if (serverSequence_ < lastSequence_) -+ else if (SequenceNumber_x_gt_y(lastSequence_, serverSequence_)) - { - // - // Use our last auto-generated sequence. -@@ -5003,6 +5406,12 @@ - break; - default: - { -+ // BEWARE: not only inputOpcode == GenericEvent but also -+ // others not handled above, at least: -+ // GraphicsExpose 13 -+ // MapRequest 20 -+ // ConfigureRequest 23 -+ // and any beyond LASTEvent. - #ifdef TEST - *logofs << "handleWrite: Using generic event compression " - << "for OPCODE#" << (unsigned int) outputOpcode -@@ -5014,11 +5423,51 @@ - - for (unsigned int i = 0; i < 14; i++) - { -- decodeBuffer.decodeCachedValue(value, 16, -- *serverCache_ -> genericEventIntCache[i]); -+ //decodeBuffer.decodeCachedValue(value, 16, -+ // *serverCache_ -> genericEventIntCache[i]); -+ if ( ! (decodeBuffer.decodeCachedValue(value, 16, -+ *serverCache_ -> genericEventIntCache[i])) ) -+ { -+ #ifdef WARNING -+ *logofs << "decodeCachedValue failed for GenEvt:" -+ << " buffer length=" << length -+ << " i=" << i -+ << "\n" << logofs_flush; -+ #endif -+ break; -+ } - - PutUINT(value, outputMessage + i * 2 + 4, bigEndian_); - } -+ // Handle "X Generic Event Extension" -+ // Extra data is not cached... -+ if (outputOpcode == GenericEvent && *(outputMessage+1) != 0 && outputLength == 32) -+ { -+ unsigned int extraOutputLength = (GetULONG(outputMessage + 4, bigEndian_) << 2); -+ if (extraOutputLength > 0 && extraOutputLength < 100*1024*1024) -+ { -+ // Extend buffer for the extra data -+ outputMessage = writeBuffer_.addMessage(extraOutputLength); -+ // Decode data and write into buffer at new position -+ for (unsigned int i = 0; i < (extraOutputLength>>1); i++) -+ { -+ //decodeBuffer.decodeValue(value, 16); -+ if ( ! (decodeBuffer.decodeValue(value, 16)) ) -+ { -+ #ifdef WARNING -+ *logofs << "decodeValue failed for GenEvt:" -+ << " extraOutputLength=" << extraOutputLength -+ << " buffer length=" << length -+ << " i=" << i -+ << "\n" << logofs_flush; -+ #endif -+ break; -+ } -+ PutUINT(value, outputMessage + i * 2, bigEndian_); -+ } -+ } -+ } -+ - } - } // End of switch (outputOpcode)... - -@@ -6892,7 +7341,7 @@ - } - else - { -- if (serverSequence_ > lastSequence_) -+ if (SequenceNumber_x_gt_y(serverSequence_, lastSequence_)) - { - #ifdef DEBUG - *logofs << "handleNotify: Updating last event's sequence " -@@ -6904,7 +7353,7 @@ - lastSequence_ = serverSequence_; - } - #ifdef DEBUG -- else if (serverSequence_ < lastSequence_) -+ else if (SequenceNumber_x_gt_y(lastSequence_, serverSequence_)) - { - // - // Use our last auto-generated sequence. ---- a/nxcomp/ClientReadBuffer.cpp -+++ b/nxcomp/ClientReadBuffer.cpp -@@ -119,15 +119,34 @@ - - dataLength = (GetUINT(start + 2, bigEndian_) << 2); - -- if (dataLength < 4) -+ if (dataLength == 0) // or equivalently (dataLength < 4) - { -- #ifdef TEST -- *logofs << "ClientReadBuffer: WARNING! Assuming length 4 " -- << "for suspicious message of length " << dataLength -- << ".\n" << logofs_flush; -- #endif -+ // BIG-REQUESTS extension -+ if (size < 8) -+ { -+ remaining_ = 8 - size; -+ return 0; -+ } - -- dataLength = 4; -+ dataLength = (GetULONG(start + 4, bigEndian_) << 2); -+ -+// See WRITE_BUFFER_OVERFLOW_SIZE elsewhere -+// and also ENCODE_BUFFER_OVERFLOW_SIZE DECODE_BUFFER_OVERFLOW_SIZE. -+ if (dataLength < 8 || dataLength > 100*1024*1024) -+ { -+ #ifdef WARNING -+ *logofs << "BIG-REQUESTS with unacceptable dataLength=" -+ << dataLength << ", now set to 8.\n" << logofs_flush; -+ #endif -+ dataLength = 8; -+ } -+ else if (dataLength < 4*64*1024) -+ { -+ #ifdef WARNING -+ *logofs << "BIG-REQUESTS with silly dataLength=" -+ << dataLength << ".\n" << logofs_flush; -+ #endif -+ } - } - } - ---- a/nxcomp/DecodeBuffer.cpp -+++ b/nxcomp/DecodeBuffer.cpp -@@ -78,34 +78,45 @@ - { - if (!endOkay) - { -- #ifdef PANIC -- *logofs << "DecodeBuffer: PANIC! Assertion failed. Error [A] " -- << "in decodeValue() nextSrc_ = " << (nextSrc_ - buffer_) -- << " end_ = " << (end_ - buffer_) << ".\n" -- << logofs_flush; -+ #ifdef WARNING -+ *logofs << "DecodeBuffer: Error [A] in decodeValue(), returning 0:" -+ << " nextSrc_ = " << (nextSrc_ - buffer_) -+ << " end_ = " << (end_ - buffer_) -+ << ".\n" << logofs_flush; - #endif -- -- // -- // Label "context" is just used to identify -- // the routine which detected the problem in -- // present source file. -- // -- -- cerr << "Error" << ": Failure decoding data in context [A].\n"; -- -- HandleAbort(); -+ value = 0; -+ return 0; -+ //#ifdef PANIC -+ //*logofs << "DecodeBuffer: PANIC! Assertion failed. Error [A] " -+ // << "in decodeValue() nextSrc_ = " << (nextSrc_ - buffer_) -+ // << " end_ = " << (end_ - buffer_) << ".\n" -+ // << logofs_flush; -+ //#endif -+ //// -+ //// Label "context" is just used to identify -+ //// the routine which detected the problem in -+ //// present source file. -+ //// -+ //cerr << "Error" << ": Failure decoding data in context [A].\n"; -+ //HandleAbort(); - } - -- #ifdef PANIC -- *logofs << "DecodeBuffer: PANIC! Assertion failed. Error [B] " -- << "in decodeValue() nextSrc_ = " << (nextSrc_ - buffer_) -- << " end_ = " << (end_ - buffer_) << ".\n" -- << logofs_flush; -+ #ifdef WARNING -+ *logofs << "DecodeBuffer: Error [B] in decodeValue(), returning 0:" -+ << " nextSrc_ = " << (nextSrc_ - buffer_) -+ << " end_ = " << (end_ - buffer_) -+ << ".\n" << logofs_flush; - #endif -- -- cerr << "Error" << ": Failure decoding data in context [B].\n"; -- -- HandleAbort(); -+ value = 0; -+ return 0; -+ //#ifdef PANIC -+ //*logofs << "DecodeBuffer: PANIC! Assertion failed. Error [B] " -+ // << "in decodeValue() nextSrc_ = " << (nextSrc_ - buffer_) -+ // << " end_ = " << (end_ - buffer_) << ".\n" -+ // << logofs_flush; -+ //#endif -+ //cerr << "Error" << ": Failure decoding data in context [B].\n"; -+ //HandleAbort(); - } - - lastBit = (nextSrcChar & srcMask_); -@@ -134,28 +145,40 @@ - { - if (!endOkay) - { -- #ifdef PANIC -- *logofs << "DecodeBuffer: PANIC! Assertion failed. Error [C] " -- << "in decodeValue() nextSrc_ = " << (nextSrc_ - buffer_) -- << " end_ = " << (end_ - buffer_) << ".\n" -- << logofs_flush; -+ #ifdef WARNING -+ *logofs << "DecodeBuffer: Error [C] in decodeValue(), returning 0:" -+ << " nextSrc_ = " << (nextSrc_ - buffer_) -+ << " end_ = " << (end_ - buffer_) -+ << ".\n" << logofs_flush; - #endif -- -- cerr << "Error" << ": Failure decoding data in context [C].\n"; -- -- HandleAbort(); -+ value = 0; -+ return 0; -+ //#ifdef PANIC -+ //*logofs << "DecodeBuffer: PANIC! Assertion failed. Error [C] " -+ // << "in decodeValue() nextSrc_ = " << (nextSrc_ - buffer_) -+ // << " end_ = " << (end_ - buffer_) << ".\n" -+ // << logofs_flush; -+ //#endif -+ //cerr << "Error" << ": Failure decoding data in context [C].\n"; -+ //HandleAbort(); - } - -- #ifdef PANIC -- *logofs << "DecodeBuffer: PANIC! Assertion failed. Error [D] " -- << "in decodeValue() nextSrc_ = " << (nextSrc_ - buffer_) -- << " end_ = " << (end_ - buffer_) << ".\n" -- << logofs_flush; -+ #ifdef WARNING -+ *logofs << "DecodeBuffer: Error [D] in decodeValue(), returning 0:" -+ << " nextSrc_ = " << (nextSrc_ - buffer_) -+ << " end_ = " << (end_ - buffer_) -+ << ".\n" << logofs_flush; - #endif -- -- cerr << "Error" << ": Failure decoding data in context [D].\n"; -- -- HandleAbort(); -+ value = 0; -+ return 0; -+ //#ifdef PANIC -+ //*logofs << "DecodeBuffer: PANIC! Assertion failed. Error [D] " -+ // << "in decodeValue() nextSrc_ = " << (nextSrc_ - buffer_) -+ // << " end_ = " << (end_ - buffer_) << ".\n" -+ // << logofs_flush; -+ //#endif -+ //cerr << "Error" << ": Failure decoding data in context [D].\n"; -+ //HandleAbort(); - } - - unsigned char moreData = (nextSrcChar & srcMask_); -@@ -212,16 +235,24 @@ - - if (nextSrc_ >= end_) - { -- #ifdef PANIC -- *logofs << "DecodeBuffer: PANIC! Assertion failed. Error [E] " -- << "in decodeValue() nextSrc_ = " << (nextSrc_ - buffer_) -- << " end_ = " << (end_ - buffer_) << ".\n" -- << logofs_flush; -+ #ifdef WARNING -+ *logofs << "DecodeBuffer: Error [E] in decodeCachedValue(), returning 0:" -+ << " nextSrc_ = " << (nextSrc_ - buffer_) -+ << " end_ = " << (end_ - buffer_) -+ << ".\n" << logofs_flush; - #endif -- -- cerr << "Error" << ": Failure decoding data in context [E].\n"; -- -- HandleAbort(); -+ // Failed: return value 0 -+ value = 0; -+ // Failed: return 0, though our callers do not check that... -+ return 0; -+ //#ifdef PANIC -+ //*logofs << "DecodeBuffer: PANIC! Assertion failed. Error [E] " -+ // << "in decodeValue() nextSrc_ = " << (nextSrc_ - buffer_) -+ // << " end_ = " << (end_ - buffer_) << ".\n" -+ // << logofs_flush; -+ //#endif -+ //cerr << "Error" << ": Failure decoding data in context [E].\n"; -+ //HandleAbort(); - } - - unsigned int index = 0; -@@ -237,30 +268,33 @@ - nextSrc_++; - if (nextSrc_ >= end_) - { -- if (!endOkay) -- { -- #ifdef PANIC -- *logofs << "DecodeBuffer: PANIC! Assertion failed. Error [F] " -- << "in decodeCachedValue() nextSrc_ = " -- << (nextSrc_ - buffer_) << " end_ = " -- << (end_ - buffer_) << ".\n" << logofs_flush; -- #endif -- -- cerr << "Error" << ": Failure decoding data in context [F].\n"; -- -- HandleAbort(); -- } -- -- #ifdef PANIC -- *logofs << "DecodeBuffer: PANIC! Assertion failed. Error [G] " -- << "in decodeValue() nextSrc_ = " << (nextSrc_ - buffer_) -- << " end_ = " << (end_ - buffer_) << ".\n" -- << logofs_flush; -+ #ifdef WARNING -+ *logofs << "DecodeBuffer: Error [G] in decodeCachedValue(), returning 0:" -+ << " nextSrc_ = " << (nextSrc_ - buffer_) -+ << " end_ = " << (end_ - buffer_) -+ << ".\n" << logofs_flush; - #endif -- -- cerr << "Error" << ": Failure decoding data in context [G].\n"; -- -- HandleAbort(); -+ value = 0; -+ return 0; -+ //if (!endOkay) -+ //{ -+ // #ifdef PANIC -+ // *logofs << "DecodeBuffer: PANIC! Assertion failed. Error [F] " -+ // << "in decodeCachedValue() nextSrc_ = " -+ // << (nextSrc_ - buffer_) << " end_ = " -+ // << (end_ - buffer_) << ".\n" << logofs_flush; -+ // #endif -+ // cerr << "Error" << ": Failure decoding data in context [F].\n"; -+ // HandleAbort(); -+ //} -+ //#ifdef PANIC -+ //*logofs << "DecodeBuffer: PANIC! Assertion failed. Error [G] " -+ // << "in decodeValue() nextSrc_ = " << (nextSrc_ - buffer_) -+ // << " end_ = " << (end_ - buffer_) << ".\n" -+ // << logofs_flush; -+ //#endif -+ //cerr << "Error" << ": Failure decoding data in context [G].\n"; -+ //HandleAbort(); - } - - nextSrcChar = *nextSrc_; -@@ -288,15 +322,20 @@ - return 1; - } - -- #ifdef PANIC -- *logofs << "DecodeBuffer: PANIC! Assertion failed. Error [H] " -- << "in decodeCacheValue() with no value found.\n" -- << logofs_flush; -+ #ifdef WARNING -+ *logofs << "DecodeBuffer: Error [H] in decodeCachedValue(), returning 0:" -+ << " no value found" -+ << ".\n" << logofs_flush; - #endif -- -- cerr << "Error" << ": Failure decoding data in context [H].\n"; -- -- HandleAbort(); -+ value = 0; -+ return 0; -+ //#ifdef PANIC -+ //*logofs << "DecodeBuffer: PANIC! Assertion failed. Error [H] " -+ // << "in decodeCacheValue() with no value found.\n" -+ // << logofs_flush; -+ //#endif -+ //cerr << "Error" << ": Failure decoding data in context [H].\n"; -+ //HandleAbort(); - } - else - { -@@ -323,15 +362,20 @@ - return 1; - } - -- #ifdef PANIC -- *logofs << "DecodeBuffer: PANIC! Assertion failed. Error [H] " -- << "in decodeCacheValue() with no value found.\n" -- << logofs_flush; -+ #ifdef WARNING -+ *logofs << "DecodeBuffer: Error [F] in decodeCachedValue(), returning 0:" -+ << " no value found" -+ << " .\n" << logofs_flush; - #endif -- -- cerr << "Error" << ": Failure decoding data in context [H].\n"; -- -- HandleAbort(); -+ value = 0; -+ return 0; -+ //#ifdef PANIC -+ //*logofs << "DecodeBuffer: PANIC! Assertion failed. Error [H] " -+ // << "in decodeCacheValue() with no value found.\n" -+ // << logofs_flush; -+ //#endif -+ //cerr << "Error" << ": Failure decoding data in context [H].\n"; -+ //HandleAbort(); - } - } - } -@@ -344,16 +388,22 @@ - - if (index > cache.getSize()) - { -- #ifdef PANIC -- *logofs << "DecodeBuffer: PANIC! Assertion failed. Error [I] " -- << "in decodeCachedValue() index = " << index -- << " cache size = " << cache.getSize() << ".\n" -- << logofs_flush; -+ #ifdef WARNING -+ *logofs << "DecodeBuffer: Error [I] in decodeCachedValue(), returning 0:" -+ << " index = " << index -+ << " cache size = " << cache.getSize() -+ << ".\n" << logofs_flush; - #endif -- -- cerr << "Error" << ": Failure decoding data in context [I].\n"; -- -- HandleAbort(); -+ value = 0; -+ return 0; -+ //#ifdef PANIC -+ //*logofs << "DecodeBuffer: PANIC! Assertion failed. Error [I] " -+ // << "in decodeCachedValue() index = " << index -+ // << " cache size = " << cache.getSize() << ".\n" -+ // << logofs_flush; -+ //#endif -+ //cerr << "Error" << ": Failure decoding data in context [I].\n"; -+ //HandleAbort(); - } - - value = cache.get(index); -@@ -401,16 +451,22 @@ - { - if (!endOkay) - { -- #ifdef PANIC -- *logofs << "DecodeBuffer: PANIC! Assertion failed. Error [K] " -- << "in decodeCachedValue() nextSrc_ " -- << (nextSrc_ - buffer_) << " end_ " << (end_ - buffer_) -+ #ifdef WARNING -+ *logofs << "DecodeBuffer: Error [K] in decodeCachedValue(), returning 0:" -+ << " nextSrc_ " << (nextSrc_ - buffer_) -+ << " end_ " << (end_ - buffer_) - << ".\n" << logofs_flush; - #endif -- -- cerr << "Error" << ": Failure decoding data in context [K].\n"; -- -- HandleAbort(); -+ value = 0; -+ return 0; -+ //#ifdef PANIC -+ //*logofs << "DecodeBuffer: PANIC! Assertion failed. Error [K] " -+ // << "in decodeCachedValue() nextSrc_ " -+ // << (nextSrc_ - buffer_) << " end_ " << (end_ - buffer_) -+ // << ".\n" << logofs_flush; -+ //#endif -+ //cerr << "Error" << ": Failure decoding data in context [K].\n"; -+ //HandleAbort(); - } - - #ifdef TEST -@@ -446,15 +502,20 @@ - } - else - { -- #ifdef PANIC -- *logofs << "DecodeBuffer: PANIC! Assertion failed. Error [M] " -- << "in decodeValue() with index = 2.\n" -- << logofs_flush; -+ #ifdef WARNING -+ *logofs << "DecodeBuffer: Error [M] in decodeCachedValue(), returning 0:" -+ << "with index = 2" -+ << ".\n" << logofs_flush; - #endif -- -- cerr << "Error" << ": Failure decoding data in context [M].\n"; -- -- HandleAbort(); -+ value = 0; -+ return 0; -+ //#ifdef PANIC -+ //*logofs << "DecodeBuffer: PANIC! Assertion failed. Error [M] " -+ // << "in decodeValue() with index = 2.\n" -+ // << logofs_flush; -+ //#endif -+ //cerr << "Error" << ": Failure decoding data in context [M].\n"; -+ //HandleAbort(); - } - } - else -@@ -466,16 +527,22 @@ - - if (index > cache.getSize()) - { -- #ifdef PANIC -- *logofs << "DecodeBuffer: PANIC! Assertion failed. Error [N] " -- << "in decodeCachedValue() " << "index = " << index -- << " cache size = " << cache.getSize() << ".\n" -- << logofs_flush; -+ #ifdef WARNING -+ *logofs << "DecodeBuffer: Error [N] in decodeCachedValue(), returning 0:" -+ << " index = " << index -+ << " cache size = " << cache.getSize() -+ << ".\n" << logofs_flush; - #endif -- -- cerr << "Error" << ": Failure decoding data in context [N].\n"; -- -- HandleAbort(); -+ value = 0; -+ return 0; -+ //#ifdef PANIC -+ //*logofs << "DecodeBuffer: PANIC! Assertion failed. Error [N] " -+ // << "in decodeCachedValue() " << "index = " << index -+ // << " cache size = " << cache.getSize() << ".\n" -+ // << logofs_flush; -+ //#endif -+ //cerr << "Error" << ": Failure decoding data in context [N].\n"; -+ //HandleAbort(); - } - - value = cache.get(index); -@@ -538,16 +605,22 @@ - } - else if (end_ - nextSrc_ < (int) numBytes) - { -- #ifdef PANIC -- *logofs << "DecodeBuffer: PANIC! Assertion failed. Error [P] " -- << "in decodeMemory() " << "with length " << numBytes -+ #ifdef WARNING -+ *logofs << "DecodeBuffer: Error [P] in decodeMemory(), returning NULL:" -+ << " with length " << numBytes - << " and " << (end_ - nextSrc_) -- << " bytes remaining.\n" << logofs_flush; -+ << " bytes remaining" -+ << ".\n" << logofs_flush; - #endif -- -- cerr << "Error" << ": Failure decoding data in context [P].\n"; -- -- HandleAbort(); -+ return NULL; -+ //#ifdef PANIC -+ //*logofs << "DecodeBuffer: PANIC! Assertion failed. Error [P] " -+ // << "in decodeMemory() " << "with length " << numBytes -+ // << " and " << (end_ - nextSrc_) -+ // << " bytes remaining.\n" << logofs_flush; -+ //#endif -+ //cerr << "Error" << ": Failure decoding data in context [P].\n"; -+ //HandleAbort(); - } - - nextSrc_ += numBytes; ---- a/nxcomp/DecodeBuffer.h -+++ b/nxcomp/DecodeBuffer.h -@@ -30,7 +30,8 @@ - #include "ActionCacheCompat.h" - #include "PositionCacheCompat.h" - --#define DECODE_BUFFER_OVERFLOW_SIZE 4194304 -+// See WriteBuffer.h and EncodeBuffer.h -+#define DECODE_BUFFER_OVERFLOW_SIZE 104857600 - - #define DECODE_BUFFER_POSTFIX_SIZE 1 - ---- a/nxcomp/EncodeBuffer.h -+++ b/nxcomp/EncodeBuffer.h -@@ -33,10 +33,10 @@ - // - // This should match the maximum size of - // a single message added to write buffer --// (see WriteBuffer.h). -+// (see WriteBuffer.h and DecodeBuffer.h). - // - --#define ENCODE_BUFFER_OVERFLOW_SIZE 4194304 -+#define ENCODE_BUFFER_OVERFLOW_SIZE 104857600 - - // - // Adjust for the control messages and the ---- a/nxcomp/SequenceQueue.h -+++ b/nxcomp/SequenceQueue.h -@@ -18,6 +18,22 @@ - #ifndef SequenceQueue_H - #define SequenceQueue_H - -+inline int SequenceNumber_x_gt_y(unsigned int x, unsigned int y) -+{ -+ // For two sequence numbers x and y, determine whether (x > y). -+ // Sequence numbers are the trailing 16 bits of a bigger number: -+ // need to handle wraparound, e.g. 0 is 65536, just after 65535. -+ if (x != (x & 0x00ffff)) return 0; -+ if (y != (y & 0x00ffff)) return 0; -+ // Closeness when comparison makes sense: arbitrarily set at 16*1024 -+ if ((x > y) && ((x-y) < 16*1024)) return 1; -+ // Wrapped value -+ unsigned int w = x + 64*1024; -+ // We know that w>y but test left for symmetry -+ if ((w > y) && ((w-y) < 16*1024)) return 1; -+ return 0; -+} -+ - // - // List of outstanding request messages which - // are waiting for a reply. This class is used ---- a/nxcomp/ServerChannel.cpp -+++ b/nxcomp/ServerChannel.cpp -@@ -104,7 +104,8 @@ - // - - #define HIDE_MIT_SHM_EXTENSION --#define HIDE_BIG_REQUESTS_EXTENSION -+// HIDE_BIG_REQUESTS_EXTENSION : No good to hide, some clients may send crap instead... -+#undef HIDE_BIG_REQUESTS_EXTENSION - #define HIDE_XFree86_Bigfont_EXTENSION - #undef HIDE_SHAPE_EXTENSION - #undef HIDE_XKEYBOARD_EXTENSION -@@ -1412,6 +1413,9 @@ - - unsigned int inputSequence = GetUINT(inputMessage + 2, bigEndian_); - -+ // Sometimes we get inputSequence=0 or =256 when inputOpcode=11=X_UnmapSubwindows -+ // Seems weird... but is "normal" and is to be accepted. -+ - // - // Check if this is an event which we can discard. - // -@@ -1905,6 +1909,12 @@ - break; - default: - { -+ // BEWARE: not only inputOpcode == GenericEvent but also -+ // others not handled above, at least: -+ // GraphicsExpose 13 -+ // MapRequest 20 -+ // ConfigureRequest 23 -+ // and any beyond LASTEvent. - #ifdef TEST - *logofs << "handleRead: Using generic event compression " - << "for OPCODE#" << (unsigned int) inputOpcode -@@ -1919,6 +1929,16 @@ - encodeBuffer.encodeCachedValue(GetUINT(inputMessage + i * 2 + 4, bigEndian_), - 16, *serverCache_ -> genericEventIntCache[i]); - } -+ // Handle "X Generic Event Extension" -+ // Cannot cache extra data... -+// FIXME: BUG ALERT: is it OK to have the first 32 bytes cached, but not the rest? -+ if (inputOpcode == GenericEvent && inputLength > 32) -+ { -+ for (unsigned int i = 14; i < ((inputLength-4)>>1); i++) -+ { -+ encodeBuffer.encodeValue(GetUINT(inputMessage + i * 2 + 4, bigEndian_), 16); -+ } -+ } - } - - } // switch (inputOpcode)... -@@ -3756,7 +3776,7 @@ - } - - unsigned int numPoints; -- decodeBuffer.decodeValue(numPoints, 16, 4); -+ decodeBuffer.decodeValue(numPoints, 32, 4); - outputLength = (numPoints << 2) + 12; - outputMessage = writeBuffer_.addMessage(outputLength); - unsigned int relativeCoordMode; -@@ -3802,7 +3822,7 @@ - } - - unsigned int numPoints; -- decodeBuffer.decodeValue(numPoints, 16, 4); -+ decodeBuffer.decodeValue(numPoints, 32, 4); - outputLength = (numPoints << 2) + 12; - outputMessage = writeBuffer_.addMessage(outputLength); - unsigned int relativeCoordMode; -@@ -3839,7 +3859,7 @@ - case X_PolyRectangle: - { - unsigned int numRectangles; -- decodeBuffer.decodeValue(numRectangles, 16, 3); -+ decodeBuffer.decodeValue(numRectangles, 32, 3); - outputLength = (numRectangles << 3) + 12; - outputMessage = writeBuffer_.addMessage(outputLength); - decodeBuffer.decodeXidValue(value, clientCache_ -> drawableCache); -@@ -3869,7 +3889,7 @@ - } - - unsigned int numSegments; -- decodeBuffer.decodeValue(numSegments, 16, 4); -+ decodeBuffer.decodeValue(numSegments, 32, 4); - outputLength = (numSegments << 3) + 12; - outputMessage = writeBuffer_.addMessage(outputLength); - decodeBuffer.decodeXidValue(value, clientCache_ -> drawableCache); -@@ -4590,7 +4610,29 @@ - - *outputMessage = (unsigned char) outputOpcode; - -- PutUINT(outputLength >> 2, outputMessage + 2, bigEndian_); -+ if (outputLength < 4*64*1024) -+ PutUINT(outputLength >> 2, outputMessage + 2, bigEndian_); -+ else -+ { -+ // Handle BIG-REQUESTS -+ PutUINT(0, outputMessage + 2, bigEndian_); -+// FIXME: BUG ALERT: following write may not work well, -+// particularly with un-flushed messages. -+if (outputMessage != writeBuffer_.getData()) -+{ -+*logofs << "PSz BUG handleWrite BIG-REQUESTS:" -+ << " have " << (unsigned int)(outputMessage - writeBuffer_.getData()) -+ << " bytes in buffer" -+ << ", write immediate of 4-byte header will not work well" -+ << "\n" << logofs_flush; -+} -+// But, it works well enough in my testing... -+ // Write first four bytes -+ if (transport_ -> write(write_immediate, outputMessage, 4) < 0) -+ return -1; -+ // Replace with new 4-byte length -+ PutULONG(1 + (outputLength >> 2), outputMessage, bigEndian_); -+ } - - #if defined(TEST) || defined(OPCODES) - *logofs << "handleWrite: Handled request OPCODE#" -@@ -5912,7 +5954,7 @@ - unsigned char opcode = *lastMotion_; - unsigned int size = 32; - -- if (GetUINT(buffer + 2, bigEndian_) < serverSequence_) -+ if (SequenceNumber_x_gt_y(serverSequence_, GetUINT(buffer + 2, bigEndian_))) - { - PutUINT(serverSequence_, (unsigned char *) buffer + 2, bigEndian_); - } ---- a/nxcomp/ServerReadBuffer.cpp -+++ b/nxcomp/ServerReadBuffer.cpp -@@ -108,14 +108,21 @@ - { - dataLength = 32 + (GetULONG(start + 4, bigEndian_) << 2); - } -+ else if (*start == GenericEvent && *(start+1) != 0) -+ { -+ // X Generic Event Extension -+ dataLength = 32 + (GetULONG(start + 4, bigEndian_) << 2); -+ } - else - { - dataLength = 32; - } - -- if (dataLength < 32) -+// See WRITE_BUFFER_OVERFLOW_SIZE elsewhere -+// and also ENCODE_BUFFER_OVERFLOW_SIZE DECODE_BUFFER_OVERFLOW_SIZE. -+ if (dataLength < 32 || dataLength > 100*1024*1024) - { -- #ifdef TEST -+ #ifdef WARNING - *logofs << "ServerReadBuffer: WARNING! Assuming length 32 " - << "for suspicious message of length " << dataLength - << ".\n" << logofs_flush; ---- a/nxcomp/WriteBuffer.h -+++ b/nxcomp/WriteBuffer.h -@@ -32,8 +32,14 @@ - // This is likely to be a reply to a X_ListFonts where - // user has a large amount of installed fonts. - // -+// Used also for messages sent, and should accommodate any BIG-REQUESTS. -+// Value was 4MB = 4194304, changed to 100MB = 104857600. -+// See also sanity check limits (set same, to 100*1024*1024) in -+// ClientReadBuffer.cpp ServerReadBuffer.cpp and ClientChannel.cpp, and -+// ENCODE_BUFFER_OVERFLOW_SIZE DECODE_BUFFER_OVERFLOW_SIZE elsewhere. -+// - --#define WRITE_BUFFER_OVERFLOW_SIZE 4194304 -+#define WRITE_BUFFER_OVERFLOW_SIZE 104857600 - - class WriteBuffer - { diff --git a/debian/patches/0410_nxcomp_use-MAKEDEPEND-in-path.full+lite.patch b/debian/patches/0410_nxcomp_use-MAKEDEPEND-in-path.full+lite.patch deleted file mode 100644 index a8d83666a..000000000 --- a/debian/patches/0410_nxcomp_use-MAKEDEPEND-in-path.full+lite.patch +++ /dev/null @@ -1,47 +0,0 @@ -Description: Discover makedepend in $PATH. Especially important for MacPorts (OS X.) -Author: Clemens Lang <cal@macports.org> - v2: Mihai Moldovan <ionic@ionic.de> - ---- a/nxcomp/configure.in -+++ b/nxcomp/configure.in -@@ -362,18 +362,15 @@ fi - dnl Find makedepend somewhere. - - AC_SUBST(MAKEDEPEND) -+MAKEDEPEND="$(which makedepend)" - --if test -x "../nx-X11/config/makedepend/makedepend" ; then -- MAKEDEPEND=../nx-X11/config/makedepend/makedepend --else -- if test -x "/usr/X11R6/bin/makedepend" ; then -- MAKEDEPEND=/usr/X11R6/bin/makedepend -- else -- if test -x "/usr/openwin/bin/makedepend" ; then -- MAKEDEPEND=/usr/openwin/bin/makedepend -- else -- MAKEDEPEND=/usr/bin/makedepend -- fi -+# Try to desperately find makedepend. -+# Set MAKEDEPEND to the shipped makedepend binary. This will not -+# exist in nx-libs-lite, though, in which case MAKEDEPEND -+# will stay empty. -+if test -z "${MAKEDEPEND}"; then -+ if test -x "../nx-X11/config/makedepend/makedepend"; then -+ MAKEDEPEND="../nx-X11/config/makedepend/makedepend" - fi - fi - ---- a/nxcomp/Makefile.in -+++ b/nxcomp/Makefile.in -@@ -263,9 +263,9 @@ depends: depend.status - depend: depend.status - - depend.status: -- if [ -x $(MAKEDEPEND) ] ; then \ -+ if [ -n "$(MAKEDEPEND)" ] && [ -x "$(MAKEDEPEND)" ] ; then \ - $(MAKEDEPEND) $(CXXINCLUDES) $(CCINCLUDES) \ -- $(DEPENDINCLUDES) -f Makefile $(MSRC) $(CSRC) \ -+ $(DEPENDINCLUDES) -f Makefile $(MSRC) $(CSRC) \ - $(CXXSRC) 2>/dev/null; \ - fi - touch depend.status diff --git a/debian/patches/0420_nxcomp_use-correct-library-naming-scheme-on-OS-X.full+lite.patch b/debian/patches/0420_nxcomp_use-correct-library-naming-scheme-on-OS-X.full+lite.patch deleted file mode 100644 index 04332baad..000000000 --- a/debian/patches/0420_nxcomp_use-correct-library-naming-scheme-on-OS-X.full+lite.patch +++ /dev/null @@ -1,60 +0,0 @@ -Description: Use the correct library naming scheme on OS X. It differs from other UNIX-based systems. -Author: Clemens Lang <cal@macports.org> -v2: Make sure only the first three digits are used for current_version. (Mihai Moldovan) - ---- a/nxcomp/Makefile.in -+++ b/nxcomp/Makefile.in -@@ -91,9 +91,18 @@ DEPENDINCLUDES = -I/usr/include/c++ -I/u - LIBRARY = Xcomp - - LIBNAME = lib$(LIBRARY) -+ifeq ($(shell uname),Darwin) -+LIBFULL = lib$(LIBRARY).$(VERSION).dylib -+LIBLOAD = lib$(LIBRARY).$(LIBVERSION).dylib -+LIBSHARED = lib$(LIBRARY).dylib -+COMP_VER = $(shell echo '$(VERSION)' | cut -d '.' -f 1-3) -+LIBFLAGS = -install_name $(libdir)/$(LIBLOAD) -compatibility_version $(LIBVERSION) -current_version $(COMP_VER) -+else - LIBFULL = lib$(LIBRARY).so.$(VERSION) - LIBLOAD = lib$(LIBRARY).so.$(LIBVERSION) - LIBSHARED = lib$(LIBRARY).so -+LIBFLAGS = -+endif - LIBARCHIVE = lib$(LIBRARY).a - - LIBCYGSHARED = cyg$(LIBRARY).dll -@@ -232,7 +241,7 @@ COBJ = $(CSRC:.c=.o) - CXXOBJ = $(CXXSRC:.cpp=.o) - - $(LIBFULL): $(CXXOBJ) $(COBJ) -- $(CXX) -o $@ $(LDFLAGS) $(CXXOBJ) $(COBJ) $(LIBS) -+ $(CXX) -o $@ $(LDFLAGS) $(LIBFLAGS) $(CXXOBJ) $(COBJ) $(LIBS) - - $(LIBLOAD): $(LIBFULL) - rm -f $(LIBLOAD) -@@ -278,9 +287,9 @@ install.lib: all - ./mkinstalldirs $(DESTDIR)${libdir} - ./mkinstalldirs $(DESTDIR)${includedir}/nx - $(INSTALL_DATA) $(LIBFULL) $(DESTDIR)${libdir} -- $(INSTALL_LINK) libXcomp.so.3 $(DESTDIR)${libdir} -- $(INSTALL_LINK) libXcomp.so $(DESTDIR)${libdir} -- $(INSTALL_DATA) libXcomp.a $(DESTDIR)${libdir} -+ $(INSTALL_LINK) $(LIBLOAD) $(DESTDIR)${libdir} -+ $(INSTALL_LINK) $(LIBSHARED) $(DESTDIR)${libdir} -+ $(INSTALL_DATA) $(LIBARCHIVE) $(DESTDIR)${libdir} - $(INSTALL_DATA) NX*.h $(DESTDIR)${includedir}/nx - $(INSTALL_DATA) MD5.h $(DESTDIR)${includedir}/nx - echo "Running ldconfig tool, this may take a while..." && ldconfig || true -@@ -293,9 +302,9 @@ uninstall.bin: - - uninstall.lib: - $(RM_FILE) $(DESTDIR)${libdir}/$(LIBFULL) -- $(RM_FILE) $(DESTDIR)${libdir}/libXcomp.so.3 -- $(RM_FILE) $(DESTDIR)${libdir}/libXcomp.so -- $(RM_FILE) $(DESTDIR)${libdir}/libXcomp.a -+ $(RM_FILE) $(DESTDIR)${libdir}/$(LIBLOAD) -+ $(RM_FILE) $(DESTDIR)${libdir}/$(LIBSHARED) -+ $(RM_FILE) $(DESTDIR)${libdir}/$(LIBARCHIVE) - $(RM_FILE) $(DESTDIR)${includedir}/nx/NXalert.h - $(RM_FILE) $(DESTDIR)${includedir}/nx/NX.h - $(RM_FILE) $(DESTDIR)${includedir}/nx/NXmitshm.h diff --git a/debian/patches/0600_nx-X11+nxcompext+nxcompshad_unique-libnames.full.patch b/debian/patches/0600_nx-X11+nxcompext+nxcompshad_unique-libnames.full.patch deleted file mode 100644 index 4f94a4f15..000000000 --- a/debian/patches/0600_nx-X11+nxcompext+nxcompshad_unique-libnames.full.patch +++ /dev/null @@ -1,1183 +0,0 @@ -Description: Unique Library Names Patch - Patch from the RPM folks... - . - We really want to make use of rpm's automatic dependency finding. - Binaries are scanned for DT_NEEDED entries, the latter of which are - then used for populating the "Requires"-type deps. The "nxagent" - binary for example would require libX11.so.6. That incurs problems: - . - 1. A package manager told to install nxagent could select xorg-x11 - rather than nx-libs, even though nxagent depends on the NX version. - . - 2. A package manager told to install $some_program could select nx-libs - rather than xorg-x11 (since both provide libX11.so.6), but, since - the NX library is in an obscure directory, running $some_program - would fail as libX11.so.6 is not found. - . - To solve this, give the NX libraries unique names different from the - Xorg ones. -Forward: pending -Author: Jan Engelhardt <jengelh@medozas.de> -Last-Update: 2012-02-15 ---- - nx-X11/config/cf/Imake.rules | 12 - - nx-X11/config/cf/X11.tmpl | 240 ++++++++++---------- - nx-X11/config/cf/lnxLib.rules | 16 - - nx-X11/config/cf/lnxLib.tmpl | 4 - nx-X11/lib/X11/Imakefile | 2 - nx-X11/lib/XRes/Imakefile | 2 - nx-X11/lib/Xau/Imakefile | 2 - nx-X11/lib/Xcomposite/Imakefile | 2 - nx-X11/lib/Xcomposite/xcomposite.pc.in | 2 - nx-X11/lib/Xcursor/Imakefile | 2 - nx-X11/lib/Xcursor/xcursor.pc.in | 2 - nx-X11/lib/Xdamage/Imakefile | 2 - nx-X11/lib/Xdamage/xdamage.pc.in | 2 - nx-X11/lib/Xdmcp/Imakefile | 2 - nx-X11/lib/Xext/Imakefile | 2 - nx-X11/lib/Xfixes/Imakefile | 2 - nx-X11/lib/Xfixes/xfixes.pc.in | 2 - nx-X11/lib/Xinerama/Imakefile | 2 - nx-X11/lib/Xpm/Imakefile | 2 - nx-X11/lib/Xrandr/Imakefile | 2 - nx-X11/lib/Xrender/Imakefile | 2 - nx-X11/lib/Xrender/xrender.pc.in | 2 - nx-X11/lib/Xtst/Imakefile | 2 - nx-X11/lib/font/Imakefile | 2 - nx-X11/lib/oldX/Imakefile | 2 - nx-X11/lib/xkbfile/Imakefile | 2 - nx-X11/lib/xkbui/Imakefile | 2 - nx-X11/programs/Xserver/Imakefile | 18 - - nxcompext/Makefile.in | 4 - nxcompshad/Makefile.in | 4 - 103 files changed, 294 insertions(+), 294 deletions(-) - ---- a/nx-X11/config/cf/Imake.rules -+++ b/nx-X11/config/cf/Imake.rules -@@ -2124,9 +2124,9 @@ LintLibReferences(varname,libname,libsou - */ - #ifndef ProjectUnsharedFontLibReferences - #define ProjectUnsharedFontLibReferences() @@\ --DEPFONTLIB = _UseCat($(USRLIBDIR)/,XBuildLibDir/,LibraryTargetName(Xfont)) @@\ --FONTLIB = -L$(FREETYPELIBDIR) -L$(FONTLIBSRC) LoaderLibPrefix -lXfont @@\ --LintLibReferences(XFONT,Xfont,$(FONTLIBSRC)) -+DEPFONTLIB = _UseCat($(USRLIBDIR)/,XBuildLibDir/,LibraryTargetName(NX_Xfont)) @@\ -+FONTLIB = -L$(FREETYPELIBDIR) -L$(FONTLIBSRC) LoaderLibPrefix -lNX_Xfont @@\ -+LintLibReferences(XFONT,NX_Xfont,$(FONTLIBSRC)) - #endif - - /* -@@ -2142,9 +2142,9 @@ LintLibReferences(XFONT,Xfont,$(FONTLIBS - #ifndef SharedFontLibReferences - #define SharedFontLibReferences() @@\ - SOFONTREV = SharedFontRev @@\ --DEPFONTLIB = SharedLibDependencies(Xfont,$(FONTLIBSRC),SOFONTREV) @@\ --FONTLIB = -L$(FREETYPELIBDIR) -L$(FONTLIBSRC) LoaderLibPrefix -lXfont @@\ --LintLibReferences(XFONT,Xfont,$(FONTLIBSRC)) -+DEPFONTLIB = SharedLibDependencies(NX_Xfont,$(FONTLIBSRC),SOFONTREV) @@\ -+FONTLIB = -L$(FREETYPELIBDIR) -L$(FONTLIBSRC) LoaderLibPrefix -lNX_Xfont @@\ -+LintLibReferences(XFONT,NX_Xfont,$(FONTLIBSRC)) - #endif - - /* ---- a/nx-X11/config/cf/X11.tmpl -+++ b/nx-X11/config/cf/X11.tmpl -@@ -1835,9 +1835,9 @@ VENDORSUPPORTDEFS = VendorSupportDefines - #ifndef SharedX11Rev - #define SharedX11Rev 6.2 - #endif --SharedLibReferences(XONLY,X11,$(XLIBSRC),SOXLIBREV,SharedX11Rev) -+SharedLibReferences(XONLY,NX_X11,$(XLIBSRC),SOXLIBREV,SharedX11Rev) - #else --ProjectUnsharedLibReferences(XONLY,X11,$(XLIBSRC),XBuildLibDir) -+ProjectUnsharedLibReferences(XONLY,NX_X11,$(XLIBSRC),XBuildLibDir) - #endif - /* Common alternate spellings */ - DEPXLIBONLY = $(DEPXONLYLIB) -@@ -2466,9 +2466,9 @@ ProjectUnsharedLibReferences(XONLY,X11,$ - #ifndef SharedXextRev - #define SharedXextRev 6.4 - #endif --SharedLibReferences(EXTENSION,Xext,$(XEXTLIBSRC),SOXEXTREV,SharedXextRev) -+SharedLibReferences(EXTENSION,NX_Xext,$(XEXTLIBSRC),SOXEXTREV,SharedXextRev) - #else --ProjectUnsharedLibReferences(EXTENSION,Xext,$(XEXTLIBSRC),XBuildLibDir) -+ProjectUnsharedLibReferences(EXTENSION,NX_Xext,$(XEXTLIBSRC),XBuildLibDir) - #endif - LINTEXTENSIONLIB = $(LINTEXTENSION) - DEPXLIB = $(DEPEXTENSIONLIB) $(DEPXONLYLIB) -@@ -2480,9 +2480,9 @@ LINTEXTENSIONLIB = $(LINTEXTENSION) - #ifndef SharedXssRev - #define SharedXssRev 1.0 - #endif --SharedLibReferences(XSS,Xss,$(XSSLIBSRC),SOXSSREV,SharedXssRev) -+SharedLibReferences(XSS,NX_Xss,$(XSSLIBSRC),SOXSSREV,SharedXssRev) - #else --ProjectUnsharedLibReferences(XSS,Xss,$(XSSLIBSRC),XBuildLibDir) -+ProjectUnsharedLibReferences(XSS,NX_Xss,$(XSSLIBSRC),XBuildLibDir) - #endif - - XXF86MISCLIBSRC = $(LIBSRC)/Xxf86misc -@@ -2490,9 +2490,9 @@ ProjectUnsharedLibReferences(XSS,Xss,$(X - #ifndef SharedXxf86miscRev - #define SharedXxf86miscRev 1.1 - #endif --SharedLibReferences(XXF86MISC,Xxf86misc,$(XXF86MISCLIBSRC),SOXXF86MISCREV,SharedXxf86miscRev) -+SharedLibReferences(XXF86MISC,NX_Xxf86misc,$(XXF86MISCLIBSRC),SOXXF86MISCREV,SharedXxf86miscRev) - #else --ProjectUnsharedLibReferences(XXF86MISC,Xxf86misc,$(XXF86MISCLIBSRC),XBuildLibDir) -+ProjectUnsharedLibReferences(XXF86MISC,NX_Xxf86misc,$(XXF86MISCLIBSRC),XBuildLibDir) - #endif - - XXF86VMLIBSRC = $(LIBSRC)/Xxf86vm -@@ -2500,9 +2500,9 @@ ProjectUnsharedLibReferences(XXF86MISC,X - #ifndef SharedXxf86vmRev - #define SharedXxf86vmRev 1.0 - #endif --SharedLibReferences(XXF86VM,Xxf86vm,$(XXF86VMLIBSRC),SOXXF86VMREV,SharedXxf86vmRev) -+SharedLibReferences(XXF86VM,NX_Xxf86vm,$(XXF86VMLIBSRC),SOXXF86VMREV,SharedXxf86vmRev) - #else --ProjectUnsharedLibReferences(XXF86VM,Xxf86vm,$(XXF86VMLIBSRC),XBuildLibDir) -+ProjectUnsharedLibReferences(XXF86VM,NX_Xxf86vm,$(XXF86VMLIBSRC),XBuildLibDir) - #endif - - XXF86DGALIBSRC = $(LIBSRC)/Xxf86dga -@@ -2510,9 +2510,9 @@ ProjectUnsharedLibReferences(XXF86VM,Xxf - #ifndef SharedXxf86dgaRev - #define SharedXxf86dgaRev 1.0 - #endif --SharedLibReferences(XXF86DGA,Xxf86dga,$(XXF86DGALIBSRC),SOXXF86DGAREV,SharedXxf86dgaRev) -+SharedLibReferences(XXF86DGA,NX_Xxf86dga,$(XXF86DGALIBSRC),SOXXF86DGAREV,SharedXxf86dgaRev) - #else --ProjectUnsharedLibReferences(XXF86DGA,Xxf86dga,$(XXF86DGALIBSRC),XBuildLibDir) -+ProjectUnsharedLibReferences(XXF86DGA,NX_Xxf86dga,$(XXF86DGALIBSRC),XBuildLibDir) - #endif - - #if BuildDmxLibrary -@@ -2544,9 +2544,9 @@ ProjectUnsharedLibReferences(XXF86DGA,Xx - #ifndef SharedXxf86rushRev - #define SharedXxf86rushRev 1.0 - #endif --SharedLibReferences(XXF86RUSH,Xxf86rush,$(XXF86RUSHLIBSRC),SOXXF86RUSHREV,SharedXxf86rushRev) -+SharedLibReferences(XXF86RUSH,NX_Xxf86rush,$(XXF86RUSHLIBSRC),SOXXF86RUSHREV,SharedXxf86rushRev) - #else --ProjectUnsharedLibReferences(XXF86RUSH,Xxf86rush,$(XXF86RUSHLIBSRC),XBuildLibDir) -+ProjectUnsharedLibReferences(XXF86RUSH,NX_Xxf86rush,$(XXF86RUSHLIBSRC),XBuildLibDir) - #endif - - -@@ -2555,9 +2555,9 @@ ProjectUnsharedLibReferences(XXF86RUSH,X - #ifndef SharedXvRev - #define SharedXvRev 1.0 - #endif --SharedLibReferences(XV,Xv,$(XVLIBSRC),SOXVREV,SharedXvRev) -+SharedLibReferences(XV,NX_Xv,$(XVLIBSRC),SOXVREV,SharedXvRev) - #else --ProjectUnsharedLibReferences(XV,Xv,$(XVLIBSRC),XBuildLibDir) -+ProjectUnsharedLibReferences(XV,NX_Xv,$(XVLIBSRC),XBuildLibDir) - #endif - - -@@ -2566,9 +2566,9 @@ ProjectUnsharedLibReferences(XV,Xv,$(XVL - #ifndef SharedXvMCRev - #define SharedXvMCRev 1.0 - #endif --SharedLibReferences(XVMC,XvMC,$(XVMCLIBSRC),SOXVMCREV,SharedXvMCRev) -+SharedLibReferences(XVMC,NX_XvMC,$(XVMCLIBSRC),SOXVMCREV,SharedXvMCRev) - #else --ProjectUnsharedLibReferences(XVMC,XvMC,$(XVMCLIBSRC),XBuildLibDir) -+ProjectUnsharedLibReferences(XVMC,NX_XvMC,$(XVMCLIBSRC),XBuildLibDir) - #endif - - XINERAMALIBSRC = $(LIBSRC)/Xinerama -@@ -2576,9 +2576,9 @@ ProjectUnsharedLibReferences(XVMC,XvMC,$ - #ifndef SharedXineramaRev - #define SharedXineramaRev 1.0 - #endif --SharedLibReferences(XINERAMA,Xinerama,$(XINERAMALIBSRC),SOXINERAMAREV,SharedXineramaRev) -+SharedLibReferences(XINERAMA,NX_Xinerama,$(XINERAMALIBSRC),SOXINERAMAREV,SharedXineramaRev) - #else --ProjectUnsharedLibReferences(XINERAMA,Xinerama,$(XINERAMALIBSRC),XBuildLibDir) -+ProjectUnsharedLibReferences(XINERAMA,NX_Xinerama,$(XINERAMALIBSRC),XBuildLibDir) - #endif - - XRESLIBSRC = $(LIBSRC)/XRes -@@ -2586,9 +2586,9 @@ ProjectUnsharedLibReferences(XINERAMA,Xi - #ifndef SharedXResRev - #define SharedXResRev 1.0 - #endif --SharedLibReferences(XRES,XRes,$(XRESLIBSRC),SOXRESREV,SharedXResRev) -+SharedLibReferences(XRES,NX_XRes,$(XRESLIBSRC),SOXRESREV,SharedXResRev) - #else --ProjectUnsharedLibReferences(XRES,XRes,$(XRESLIBSRC),XBuildLibDir) -+ProjectUnsharedLibReferences(XRES,NX_XRes,$(XRESLIBSRC),XBuildLibDir) - #endif - - DMXLIBSRC = $(LIBSRC)/dmx -@@ -2596,9 +2596,9 @@ ProjectUnsharedLibReferences(XRES,XRes,$ - #ifndef SharedDmxRev - #define SharedDmxRev 1.0 - #endif --SharedLibReferences(DMX,dmx,$(DMXLIBSRC),SODMXREV,SharedDmxRev) -+SharedLibReferences(DMX,NX_dmx,$(DMXLIBSRC),SODMXREV,SharedDmxRev) - #else --ProjectUnsharedLibReferences(DMX,dmx,$(DMXLIBSRC),XBuildLibDir) -+ProjectUnsharedLibReferences(DMX,NX_dmx,$(DMXLIBSRC),XBuildLibDir) - #endif - - DPSLIBSRC = $(LIBSRC)/dps -@@ -2606,9 +2606,9 @@ ProjectUnsharedLibReferences(DMX,dmx,$(D - #ifndef SharedDpsRev - #define SharedDpsRev 1.0 - #endif --SharedLibReferences(DPS,dps,$(DPSLIBSRC),SODPSREV,SharedDpsRev) -+SharedLibReferences(DPS,NX_dps,$(DPSLIBSRC),SODPSREV,SharedDpsRev) - #else --ProjectUnsharedLibReferences(DPS,dps,$(DPSLIBSRC),XBuildLibDir) -+ProjectUnsharedLibReferences(DPS,NX_dps,$(DPSLIBSRC),XBuildLibDir) - #endif - - DPSTKLIBSRC = $(LIBSRC)/dpstk -@@ -2616,9 +2616,9 @@ ProjectUnsharedLibReferences(DPS,dps,$(D - #ifndef SharedDpsTkRev - #define SharedDpsTkRev 1.0 - #endif --SharedLibReferences(DPSTK,dpstk,$(DPSTKLIBSRC),SODPSTKREV,SharedDpsTkRev) -+SharedLibReferences(DPSTK,NX_dpstk,$(DPSTKLIBSRC),SODPSTKREV,SharedDpsTkRev) - #else --ProjectUnsharedLibReferences(DPSTK,dpstk,$(DPSTKLIBSRC),XBuildLibDir) -+ProjectUnsharedLibReferences(DPSTK,NX_dpstk,$(DPSTKLIBSRC),XBuildLibDir) - #endif - - PSRESLIBSRC = $(LIBSRC)/psres -@@ -2626,9 +2626,9 @@ ProjectUnsharedLibReferences(DPSTK,dpstk - #ifndef SharedPSResRev - #define SharedPSResRev 1.0 - #endif --SharedLibReferences(PSRES,psres,$(PSRESLIBSRC),SOPSRESREV,SharedPSResRev) -+SharedLibReferences(PSRES,NX_psres,$(PSRESLIBSRC),SOPSRESREV,SharedPSResRev) - #else --ProjectUnsharedLibReferences(PSRES,psres,$(PSRESLIBSRC),XBuildLibDir) -+ProjectUnsharedLibReferences(PSRES,NX_psres,$(PSRESLIBSRC),XBuildLibDir) - #endif - - GLULIBSRC = $(LIBSRC)/GLU -@@ -2636,9 +2636,9 @@ ProjectUnsharedLibReferences(PSRES,psres - #ifndef SharedGluRev - #define SharedGluRev 1.3 - #endif --SharedLibReferences(GLU,GLU,$(GLULIBSRC),SOGLUREV,SharedGluRev) -+SharedLibReferences(GLU,NX_GLU,$(GLULIBSRC),SOGLUREV,SharedGluRev) - #else --ProjectUnsharedLibReferences(GLU,GLU,$(GLULIBSRC),XBuildLibDir) -+ProjectUnsharedLibReferences(GLU,NX_GLU,$(GLULIBSRC),XBuildLibDir) - #endif - - GLXLIBSRC = $(LIBSRC)/GL -@@ -2646,18 +2646,18 @@ ProjectUnsharedLibReferences(GLU,GLU,$(G - #ifndef SharedGlxRev - #define SharedGlxRev 1.2 - #endif --SharedLibReferences(GLX,GL,$(GLXLIBSRC),SOGLREV,SharedGlxRev) -+SharedLibReferences(GLX,NX_GL,$(GLXLIBSRC),SOGLREV,SharedGlxRev) - #else --ProjectUnsharedLibReferences(GLX,GL,$(GLXLIBSRC),XBuildLibDir) -+ProjectUnsharedLibReferences(GLX,NX_GL,$(GLXLIBSRC),XBuildLibDir) - #endif - GLWIDGETSRC = $(LIBSRC)/GLw - #if SharedLibGLw - #ifndef SharedGLwRev - #define SharedGLwRev 1.0 /* used to name the shared library */ - #endif --SharedDSLibReferences(GLW,GLw,$(GLWIDGETSRC),SOGLWREV,SharedGLwRev) -+SharedDSLibReferences(GLW,NX_GLw,$(GLWIDGETSRC),SOGLWREV,SharedGLwRev) - #else --ProjectUnsharedLibReferences(GLW,GLw,$(GLWIDGETSRC),XBuildLibDir) -+ProjectUnsharedLibReferences(GLW,NX_GLw,$(GLWIDGETSRC),XBuildLibDir) - #endif - - XRENDERLIBSRC = $(LIBSRC)/Xrender -@@ -2665,9 +2665,9 @@ ProjectUnsharedLibReferences(GLW,GLw,$(G - #ifndef SharedXrenderRev - #define SharedXrenderRev 1.2.2 - #endif --SharedLibReferences(XRENDER,Xrender,$(XRENDERLIBSRC),SOXRENDERREV,SharedXrenderRev) -+SharedLibReferences(XRENDER,NX_Xrender,$(XRENDERLIBSRC),SOXRENDERREV,SharedXrenderRev) - #else --ProjectUnsharedLibReferences(XRENDER,Xrender,$(XRENDERLIBSRC),XBuildLibDir) -+ProjectUnsharedLibReferences(XRENDER,NX_Xrender,$(XRENDERLIBSRC),XBuildLibDir) - #endif - - XRANDRLIBSRC = $(LIBSRC)/Xrandr -@@ -2675,9 +2675,9 @@ ProjectUnsharedLibReferences(XRENDER,Xre - #ifndef SharedXrandrRev - #define SharedXrandrRev 2.0 - #endif --SharedLibReferences(XRANDR,Xrandr,$(XRANDRLIBSRC),SOXRANDRREV,SharedXrandrRev) -+SharedLibReferences(XRANDR,NX_Xrandr,$(XRANDRLIBSRC),SOXRANDRREV,SharedXrandrRev) - #else --ProjectUnsharedLibReferences(XRANDR,Xrandr,$(XRANDRLIBSRC),XBuildLibDir) -+ProjectUnsharedLibReferences(XRANDR,NX_Xrandr,$(XRANDRLIBSRC),XBuildLibDir) - #endif - - XFIXESLIBSRC = $(LIBSRC)/Xfixes -@@ -2685,9 +2685,9 @@ ProjectUnsharedLibReferences(XRANDR,Xran - #ifndef SharedXfixesRev - #define SharedXfixesRev 3.0 - #endif --SharedLibReferences(XFIXES,Xfixes,$(XFIXESLIBSRC),SOXFIXESREV,SharedXfixesRev) -+SharedLibReferences(XFIXES,NX_Xfixes,$(XFIXESLIBSRC),SOXFIXESREV,SharedXfixesRev) - #else --ProjectUnsharedLibReferences(XFIXES,Xfixes,$(XFIXESLIBSRC),XBuildLibDir) -+ProjectUnsharedLibReferences(XFIXES,NX_Xfixes,$(XFIXESLIBSRC),XBuildLibDir) - #endif - - XDAMAGELIBSRC = $(LIBSRC)/Xdamage -@@ -2695,9 +2695,9 @@ ProjectUnsharedLibReferences(XFIXES,Xfix - #ifndef SharedXdamageRev - #define SharedXdamageRev 1.0 - #endif --SharedLibReferences(XDAMAGE,Xdamage,$(XDAMAGELIBSRC),SOXDAMAGEREV,SharedXdamageRev) -+SharedLibReferences(XDAMAGE,NX_Xdamage,$(XDAMAGELIBSRC),SOXDAMAGEREV,SharedXdamageRev) - #else --ProjectUnsharedLibReferences(XDAMAGE,Xdamage,$(XDAMAGELIBSRC),XBuildLibDir) -+ProjectUnsharedLibReferences(XDAMAGE,NX_Xdamage,$(XDAMAGELIBSRC),XBuildLibDir) - #endif - - XCOMPOSITELIBSRC = $(LIBSRC)/Xcomposite -@@ -2705,9 +2705,9 @@ XCOMPOSITELIBSRC = $(LIBSRC)/Xcomposite - #ifndef SharedXcompositeRev - #define SharedXcompositeRev 1.0 - #endif --SharedLibReferences(XCOMPOSITE,Xcomposite,$(XCOMPOSITELIBSRC),SOXCOMPOSITEREV,SharedXcompositeRev) -+SharedLibReferences(XCOMPOSITE,NX_Xcomposite,$(XCOMPOSITELIBSRC),SOXCOMPOSITEREV,SharedXcompositeRev) - #else --ProjectUnsharedLibReferences(XCOMPOSITE,Xcomposite,$(XCOMPOSITELIBSRC),XBuildLibDir) -+ProjectUnsharedLibReferences(XCOMPOSITE,NX_Xcomposite,$(XCOMPOSITELIBSRC),XBuildLibDir) - #endif - - XEVIELIBSRC = $(LIBSRC)/Xevie -@@ -2715,9 +2715,9 @@ XEVIELIBSRC = $(LIBSRC)/Xevie - #ifndef SharedXevieRev - #define SharedXevieRev 1.0 - #endif --SharedLibReferences(XEVIE,Xevie,$(XEVIELIBSRC),SOXEVIEREV,SharedXevieRev) -+SharedLibReferences(XEVIE,NX_Xevie,$(XEVIELIBSRC),SOXEVIEREV,SharedXevieRev) - #else --ProjectUnsharedLibReferences(XEVIE,Xevie,$(XEVIELIBSRC),XBuildLibDir) -+ProjectUnsharedLibReferences(XEVIE,NX_Xevie,$(XEVIELIBSRC),XBuildLibDir) - #endif - - XCURSORLIBSRC = $(LIBSRC)/Xcursor -@@ -2725,9 +2725,9 @@ ProjectUnsharedLibReferences(XEVIE,Xevie - #ifndef SharedXcursorRev - #define SharedXcursorRev 1.0.2 - #endif --SharedLibReferences(XCURSOR,Xcursor,$(XCURSORLIBSRC),SOXCURSORREV,SharedXcursorRev) -+SharedLibReferences(XCURSOR,NX_Xcursor,$(XCURSORLIBSRC),SOXCURSORREV,SharedXcursorRev) - #else --ProjectUnsharedLibReferences(XCURSOR,Xcursor,$(XCURSORLIBSRC),XBuildLibDir) -+ProjectUnsharedLibReferences(XCURSOR,NX_Xcursor,$(XCURSORLIBSRC),XBuildLibDir) - #endif - - APPLEWMLIBSRC = $(LIBSRC)/apple -@@ -2735,9 +2735,9 @@ ProjectUnsharedLibReferences(XCURSOR,Xcu - #ifndef SharedAppleWMRev - #define SharedAppleWMRev 1.0 - #endif --SharedLibReferences(APPLEWM,AppleWM,$(APPLEWMLIBSRC),SOAPPLEWMREV,SharedAppleWMRev) -+SharedLibReferences(APPLEWM,NX_AppleWM,$(APPLEWMLIBSRC),SOAPPLEWMREV,SharedAppleWMRev) - #else --ProjectUnsharedLibReferences(APPLEWM,AppleWM,$(APPLEWMLIBSRC),XBuildLibDir) -+ProjectUnsharedLibReferences(APPLEWM,NX_AppleWM,$(APPLEWMLIBSRC),XBuildLibDir) - #endif - - WINDOWSWMLIBSRC = $(LIBSRC)/windows -@@ -2745,9 +2745,9 @@ ProjectUnsharedLibReferences(APPLEWM,App - #ifndef SharedWindowsWMRev - #define SharedWindowsWMRev 1.0 - #endif --SharedLibReferences(WINDOWSWM,WindowsWM,$(WINDOWSWMLIBSRC),SOWINDOWSWMREV,SharedWindowsWMRev) -+SharedLibReferences(WINDOWSWM,NX_WindowsWM,$(WINDOWSWMLIBSRC),SOWINDOWSWMREV,SharedWindowsWMRev) - #else --ProjectUnsharedLibReferences(WINDOWSWM,WindowsWM,$(WINDOWSWMLIBSRC),XBuildLibDir) -+ProjectUnsharedLibReferences(WINDOWSWM,NX_WindowsWM,$(WINDOWSWMLIBSRC),XBuildLibDir) - #endif - - # ifndef SharedLibXfontcache -@@ -2768,9 +2768,9 @@ ProjectUnsharedLibReferences(WINDOWSWM,W - #ifndef SharedXfontcacheRev - #define SharedXfontcacheRev 1.2 - #endif --SharedLibReferences(XFONTCACHE,Xfontcache,$(XFONTCACHELIBSRC),SOXFONTCACHEREV,SharedXfontcacheRev) -+SharedLibReferences(XFONTCACHE,NX_Xfontcache,$(XFONTCACHELIBSRC),SOXFONTCACHEREV,SharedXfontcacheRev) - #else --ProjectUnsharedLibReferences(XFONTCACHE,Xfontcache,$(XFONTCACHELIBSRC),XBuildLibDir) -+ProjectUnsharedLibReferences(XFONTCACHE,NX_Xfontcache,$(XFONTCACHELIBSRC),XBuildLibDir) - #endif - - #ifndef SharedLibXau -@@ -2790,12 +2790,12 @@ ProjectUnsharedLibReferences(XFONTCACHE, - #ifndef SharedXauRev - #define SharedXauRev 6.0 - #endif --SharedLibReferences(XAUTH,Xau,$(XAUTHSRC),SOXAUTHREV,SharedXauRev) -+SharedLibReferences(XAUTH,NX_Xau,$(XAUTHSRC),SOXAUTHREV,SharedXauRev) - #else - #if !UseInstalledXauLib --ProjectUnsharedLibReferences(XAUTH,Xau,$(XAUTHSRC),XBuildLibDir) -+ProjectUnsharedLibReferences(XAUTH,NX_Xau,$(XAUTHSRC),XBuildLibDir) - #else --ProjectUnsharedLibReferences(XAUTH,Xau,$(XAUTHSRC),$(USRLIBDIR)) -+ProjectUnsharedLibReferences(XAUTH,NX_Xau,$(XAUTHSRC),$(USRLIBDIR)) - #endif - #endif - -@@ -2816,12 +2816,12 @@ ProjectUnsharedLibReferences(XAUTH,Xau,$ - #ifndef SharedXdmcpRev - #define SharedXdmcpRev 6.0 - #endif --SharedLibReferences(XDMCP,Xdmcp,$(XDMCPLIBSRC),SOXDMCPREV,SharedXdmcpRev) -+SharedLibReferences(XDMCP,NX_Xdmcp,$(XDMCPLIBSRC),SOXDMCPREV,SharedXdmcpRev) - #else - #if !UseInstalledXdmcpLib --ProjectUnsharedLibReferences(XDMCP,Xdmcp,$(XDMCPLIBSRC),XBuildLibDir) -+ProjectUnsharedLibReferences(XDMCP,NX_Xdmcp,$(XDMCPLIBSRC),XBuildLibDir) - #else --ProjectUnsharedLibReferences(XDMCP,Xdmcp,$(XDMCPLIBSRC),$(USRLIBDIR)) -+ProjectUnsharedLibReferences(XDMCP,NX_Xdmcp,$(XDMCPLIBSRC),$(USRLIBDIR)) - #endif - #endif - -@@ -2842,9 +2842,9 @@ ProjectUnsharedLibReferences(XDMCP,Xdmcp - #ifndef SharedXmuRev - #define SharedXmuRev 6.2 - #endif --SharedDSLibReferences(XMU,Xmu,$(XMUSRC),SOXMUREV,SharedXmuRev) -+SharedDSLibReferences(XMU,NX_Xmu,$(XMUSRC),SOXMUREV,SharedXmuRev) - #else --ProjectUnsharedLibReferences(XMU,Xmu,$(XMUSRC),XBuildLibDir) -+ProjectUnsharedLibReferences(XMU,NX_Xmu,$(XMUSRC),XBuildLibDir) - #endif - - #ifndef SharedLibXmuu -@@ -2864,9 +2864,9 @@ ProjectUnsharedLibReferences(XMU,Xmu,$(X - #ifndef SharedXmuuRev - #define SharedXmuuRev 1.0 - #endif --SharedLibReferences(XMUU,Xmuu,$(XMUUSRC),SOXMUUREV,SharedXmuuRev) -+SharedLibReferences(XMUU,NX_Xmuu,$(XMUUSRC),SOXMUUREV,SharedXmuuRev) - #else --ProjectUnsharedLibReferences(XMUU,Xmuu,$(XMUUSRC),XBuildLibDir) -+ProjectUnsharedLibReferences(XMUU,NX_Xmuu,$(XMUUSRC),XBuildLibDir) - #endif - - #ifndef SharedOldX -@@ -2886,9 +2886,9 @@ ProjectUnsharedLibReferences(XMUU,Xmuu,$ - #ifndef SharedOldXRev - #define SharedOldXRev 6.0 - #endif --SharedLibReferences(OLDX,oldX,$(OLDXLIBSRC),SOOLDXREV,SharedOldXRev) -+SharedLibReferences(OLDX,NX_oldX,$(OLDXLIBSRC),SOOLDXREV,SharedOldXRev) - #else --ProjectUnsharedLibReferences(OLDX,oldX,$(OLDXLIBSRC),XBuildLibDir) -+ProjectUnsharedLibReferences(OLDX,NX_oldX,$(OLDXLIBSRC),XBuildLibDir) - #endif - - #ifndef SharedLibXp -@@ -2908,9 +2908,9 @@ ProjectUnsharedLibReferences(OLDX,oldX,$ - #ifndef SharedXpRev - #define SharedXpRev 6.2 - #endif --SharedLibReferences(XP,Xp,$(XPLIBSRC),SOXPREV,SharedXpRev) -+SharedLibReferences(XP,NX_Xp,$(XPLIBSRC),SOXPREV,SharedXpRev) - #else --ProjectUnsharedLibReferences(XP,Xp,$(XPLIBSRC),XBuildLibDir) -+ProjectUnsharedLibReferences(XP,NX_Xp,$(XPLIBSRC),XBuildLibDir) - #endif - - #ifndef SharedLibXt -@@ -2930,9 +2930,9 @@ ProjectUnsharedLibReferences(XP,Xp,$(XPL - #ifndef SharedXtRev - #define SharedXtRev 6.0 - #endif --SharedDSLibReferences(XTOOLONLY,Xt,$(TOOLKITSRC),SOXTREV,SharedXtRev) -+SharedDSLibReferences(XTOOLONLY,NX_Xt,$(TOOLKITSRC),SOXTREV,SharedXtRev) - #else --ProjectUnsharedLibReferences(XTOOLONLY,Xt,$(TOOLKITSRC),XBuildLibDir) -+ProjectUnsharedLibReferences(XTOOLONLY,NX_Xt,$(TOOLKITSRC),XBuildLibDir) - #endif - DEPXTOOLLIB = $(DEPXTOOLONLYLIB) $(DEPSMLIB) $(DEPICELIB) - XTOOLLIB = $(XTOOLONLYLIB) $(SMLIB) $(ICELIB) -@@ -2956,9 +2956,9 @@ ProjectUnsharedLibReferences(XTOOLONLY,X - #ifndef SharedXaRev - #define SharedXaRev 1.0 - #endif --SharedLibReferences(XA,Xa,$(XALIBSRC),SOXAREV,SharedXaRev) -+SharedLibReferences(XA,NX_Xa,$(XALIBSRC),SOXAREV,SharedXaRev) - #else --UnsharedLibReferences(XA,Xa,$(XALIBSRC)) -+UnsharedLibReferences(XA,NX_Xa,$(XALIBSRC)) - #endif - - #ifndef BuildXaw -@@ -2985,9 +2985,9 @@ UnsharedLibReferences(XA,Xa,$(XALIBSRC)) - #ifndef SharedXawRev - #define SharedXawRev 8.0 - #endif --SharedDSLibReferences(XAW,Xaw,$(AWIDGETSRC),SOXAWREV,SharedXawRev) -+SharedDSLibReferences(XAW,NX_Xaw,$(AWIDGETSRC),SOXAWREV,SharedXawRev) - #else --ProjectUnsharedLibReferences(XAW,Xaw,$(AWIDGETSRC),XBuildLibDir) -+ProjectUnsharedLibReferences(XAW,NX_Xaw,$(AWIDGETSRC),XBuildLibDir) - #endif - #endif - -@@ -3013,14 +3013,14 @@ ProjectUnsharedLibReferences(XAW,Xaw,$(A - #ifndef SharedXaw7Rev - #define SharedXaw7Rev 7.0 - #endif --SharedDSLibReferences(XAW7,Xaw,$(AWIDGET7SRC),SOXAW7REV,SharedXaw7Rev) -+SharedDSLibReferences(XAW7,NX_Xaw,$(AWIDGET7SRC),SOXAW7REV,SharedXaw7Rev) - #if !BuildXaw --SharedDSLibReferences(XAW,Xaw,$(AWIDGET7SRC),SOXAWREV,SharedXawRev) -+SharedDSLibReferences(XAW,NX_Xaw,$(AWIDGET7SRC),SOXAWREV,SharedXawRev) - #endif - #else --ProjectUnsharedLibReferences(XAW7,Xaw,$(AWIDGET7SRC),XBuildLibDir) -+ProjectUnsharedLibReferences(XAW7,NX_Xaw,$(AWIDGET7SRC),XBuildLibDir) - #if !BuildXaw --ProjectUnsharedLibReferences(XAW,Xaw,$(AWIDGET7SRC),XBuildLibDir) -+ProjectUnsharedLibReferences(XAW,NX_Xaw,$(AWIDGET7SRC),XBuildLibDir) - #endif - #endif - #endif -@@ -3048,14 +3048,14 @@ ProjectUnsharedLibReferences(XAW,Xaw,$(A - #ifndef SharedXaw6Rev - #define SharedXaw6Rev 6.1 - #endif --SharedDSLibReferences(XAW6,Xaw,$(AWIDGET6SRC),SOXAW6REV,SharedXaw6Rev) -+SharedDSLibReferences(XAW6,NX_Xaw,$(AWIDGET6SRC),SOXAW6REV,SharedXaw6Rev) - #if !BuildXaw && !BuildXaw7 --SharedDSLibReferences(XAW,Xaw,$(AWIDGET6SRC),SOXAWREV,SharedXawRev) -+SharedDSLibReferences(XAW,NX_Xaw,$(AWIDGET6SRC),SOXAWREV,SharedXawRev) - #endif - #else --ProjectUnsharedLibReferences(XAW6,Xaw,$(AWIDGET6SRC),XBuildLibDir) -+ProjectUnsharedLibReferences(XAW6,NX_Xaw,$(AWIDGET6SRC),XBuildLibDir) - #if !BuildXaw && !BuildXaw7 --ProjectUnsharedLibReferences(XAW,Xaw,$(AWIDGET6SRC),XBuildLibDir) -+ProjectUnsharedLibReferences(XAW,NX_Xaw,$(AWIDGET6SRC),XBuildLibDir) - #endif - #endif - #endif -@@ -3077,9 +3077,9 @@ ProjectUnsharedLibReferences(XAW,Xaw,$(A - #ifndef SharedXiRev - #define SharedXiRev 6.0 - #endif --SharedLibReferences(XI,Xi,$(XILIBSRC),SOXINPUTREV,SharedXiRev) -+SharedLibReferences(XI,NX_Xi,$(XILIBSRC),SOXINPUTREV,SharedXiRev) - #else --ProjectUnsharedLibReferences(XI,Xi,$(XILIBSRC),XBuildLibDir) -+ProjectUnsharedLibReferences(XI,NX_Xi,$(XILIBSRC),XBuildLibDir) - #endif - - #ifndef SharedLibXtst -@@ -3099,12 +3099,12 @@ ProjectUnsharedLibReferences(XI,Xi,$(XIL - #ifndef SharedXtstRev - #define SharedXtstRev 6.1 - #endif --SharedLibReferences(XTEST,Xtst,$(XTESTLIBSRC),SOXTESTREV,SharedXtstRev) -+SharedLibReferences(XTEST,NX_Xtst,$(XTESTLIBSRC),SOXTESTREV,SharedXtstRev) - #else --ProjectUnsharedLibReferences(XTEST,Xtst,$(XTESTLIBSRC),XBuildLibDir) -+ProjectUnsharedLibReferences(XTEST,NX_Xtst,$(XTESTLIBSRC),XBuildLibDir) - #endif - --ProjectUnsharedLibReferences(XBSD,Xbsd,$(LIBSRC)/Xbsd,XBuildLibDir) -+ProjectUnsharedLibReferences(XBSD,NX_Xbsd,$(LIBSRC)/Xbsd,XBuildLibDir) - - #ifndef SharedLibICE - #define SharedLibICE HasSharedLibraries -@@ -3123,9 +3123,9 @@ ProjectUnsharedLibReferences(XBSD,Xbsd,$ - #ifndef SharedICERev - #define SharedICERev 6.4 - #endif --SharedLibReferences(ICE,ICE,$(ICESRC),SOICEREV,SharedICERev) -+SharedLibReferences(ICE,NX_ICE,$(ICESRC),SOICEREV,SharedICERev) - #else --ProjectUnsharedLibReferences(ICE,ICE,$(ICESRC),XBuildLibDir) -+ProjectUnsharedLibReferences(ICE,NX_ICE,$(ICESRC),XBuildLibDir) - #endif - - #ifndef SharedLibSM -@@ -3145,9 +3145,9 @@ ProjectUnsharedLibReferences(ICE,ICE,$(I - #ifndef SharedSMRev - #define SharedSMRev 6.0 - #endif --SharedLibReferences(SM,SM,$(SMSRC),SOSMREV,SharedSMRev) -+SharedLibReferences(SM,NX_SM,$(SMSRC),SOSMREV,SharedSMRev) - #else --ProjectUnsharedLibReferences(SM,SM,$(SMSRC),XBuildLibDir) -+ProjectUnsharedLibReferences(SM,NX_SM,$(SMSRC),XBuildLibDir) - #endif - - #ifndef SharedLibXkey -@@ -3167,9 +3167,9 @@ ProjectUnsharedLibReferences(SM,SM,$(SMS - #ifndef SharedXkeyRev - #define SharedXkeyRev 6.0 - #endif --SharedLibReferences(XKEY,Xkey,$(XKEYSRC),SOXKEYREV,SharedXkeyRev) -+SharedLibReferences(XKEY,NX_Xkey,$(XKEYSRC),SOXKEYREV,SharedXkeyRev) - #else --ProjectUnsharedLibReferences(XKEY,Xkey,$(XKEYSRC),XBuildLibDir) -+ProjectUnsharedLibReferences(XKEY,NX_Xkey,$(XKEYSRC),XBuildLibDir) - #endif - - #ifndef SharedLibFS -@@ -3189,9 +3189,9 @@ ProjectUnsharedLibReferences(XKEY,Xkey,$ - #ifndef SharedFSRev - #define SharedFSRev 6.0 - #endif --SharedLibReferences(FS,FS,$(FSLIBSRC),SOFSREV,SharedFSRev) -+SharedLibReferences(FS,NX_FS,$(FSLIBSRC),SOFSREV,SharedFSRev) - #else --ProjectUnsharedLibReferences(FS,FS,$(FSLIBSRC),XBuildLibDir) -+ProjectUnsharedLibReferences(FS,NX_FS,$(FSLIBSRC),XBuildLibDir) - #endif - - #ifndef SharedLibFont -@@ -3212,14 +3212,14 @@ ProjectUnsharedLibReferences(FS,FS,$(FSL - #define SharedFontRev 1.5 - #endif - SharedFontLibReferences() --XCOMM SharedLibReferences(XFONT,Xfont,$(FONTLIBSRC),SOFONTREV,SharedFontRev) -+XCOMM SharedLibReferences(XFONT,NX_Xfont,$(FONTLIBSRC),SOFONTREV,SharedFontRev) - #else - ProjectUnsharedFontLibReferences() --XCOMM ProjectUnsharedLibReferences(XFONT,Xfont,$(FONTLIBSRC),XBuildLibDir) -+XCOMM ProjectUnsharedLibReferences(XFONT,NX_Xfont,$(FONTLIBSRC),XBuildLibDir) - #endif - - FONTSTUBLIBSRC = $(FONTLIBSRC)/stubs --ProjectUnsharedLibReferences(FONTSTUB,fntstubs,$(FONTSUBLIBSRC),XBuildLibDir) -+ProjectUnsharedLibReferences(FONTSTUB,NX_fntstubs,$(FONTSUBLIBSRC),XBuildLibDir) - DEPFONTLIB = $(DEPXFONTLIB) $(DEPFONTSTUBLIB) - FONTLIB = $(XFONTLIB) $(FONTSTUBLIB) $(FREETYPE2LIB) - -@@ -3241,9 +3241,9 @@ ProjectUnsharedLibReferences(FONTSTUB,fn - #ifndef SharedFontEncRev - #define SharedFontEncRev 1.0 - #endif --SharedLibReferences(XFONTENC,fontenc,$(FONTENCLIBSRC),SOFONTENCREV,SharedFontEncRev) -+SharedLibReferences(XFONTENC,NX_fontenc,$(FONTENCLIBSRC),SOFONTENCREV,SharedFontEncRev) - #else --ProjectUnsharedLibReferences(XFONTENC,fontenc,$(FONTENCLIBSRC),XBuildLibDir) -+ProjectUnsharedLibReferences(XFONTENC,NX_fontenc,$(FONTENCLIBSRC),XBuildLibDir) - #endif - - #ifndef SharedLibXpm -@@ -3263,9 +3263,9 @@ ProjectUnsharedLibReferences(XFONTENC,fo - #ifndef SharedXpmRev - #define SharedXpmRev 4.11 - #endif --SharedLibReferences(XPM,Xpm,$(XPMLIBSRC),SOXPMREV,SharedXpmRev) -+SharedLibReferences(XPM,NX_Xpm,$(XPMLIBSRC),SOXPMREV,SharedXpmRev) - #else --ProjectUnsharedLibReferences(XPM,Xpm,$(XPMLIBSRC),XBuildLibDir) -+ProjectUnsharedLibReferences(XPM,NX_Xpm,$(XPMLIBSRC),XBuildLibDir) - #endif - - #if UseFreetype2 -@@ -3313,9 +3313,9 @@ ProjectUnsharedLibReferences(XPM,Xpm,$(X - #define SharedFreetype2Rev 9.0 - #endif - #endif --SharedLibReferences(FREETYPE2,freetype,$(FREETYPE2LIBSRC),SOFREETYPE2REV,SharedFreetype2Rev) -+SharedLibReferences(FREETYPE2,NX_freetype,$(FREETYPE2LIBSRC),SOFREETYPE2REV,SharedFreetype2Rev) - #else --ProjectUnsharedLibReferences(FREETYPE2,freetype,$(FREETYPE2LIBSRC),XBuildLibDir) -+ProjectUnsharedLibReferences(FREETYPE2,NX_freetype,$(FREETYPE2LIBSRC),XBuildLibDir) - #endif - - #ifdef UseInstalled -@@ -3470,9 +3470,9 @@ MOTIFINCLUDES = -I$(MOTIFINCDIR) - #define SharedExpatRev 4.0 - #endif - #endif --SharedLibReferences(EXPAT,expat,$(EXPATLIBSRC),SOEXPATREV,SharedExpatRev) -+SharedLibReferences(EXPAT,NX_expat,$(EXPATLIBSRC),SOEXPATREV,SharedExpatRev) - #else --ProjectUnsharedLibReferences(EXPAT,expat,$(EXPATLIBSRC),XBuildLibDir) -+ProjectUnsharedLibReferences(EXPAT,NX_expat,$(EXPATLIBSRC),XBuildLibDir) - #endif - - #if UseExpat -@@ -3552,9 +3552,9 @@ EXPATDEFINES = -DEXPAT - #ifndef SharedXft1Rev - #define SharedXft1Rev 1.1 - #endif --SharedLibReferences(XFT1,Xft,$(XFT1LIBSRC),SOXFT1REV,SharedXft1Rev) -+SharedLibReferences(XFT1,NX_Xft,$(XFT1LIBSRC),SOXFT1REV,SharedXft1Rev) - #else --ProjectUnsharedLibReferences(XFT1,Xft,$(XFT1LIBSRC),XBuildLibDir) -+ProjectUnsharedLibReferences(XFT1,NX_Xft,$(XFT1LIBSRC),XBuildLibDir) - #endif - - #ifndef Xft1ClientDepLibs -@@ -3589,9 +3589,9 @@ ProjectUnsharedLibReferences(XFT1,Xft,$( - #ifndef SharedXftRev - #define SharedXftRev 2.1.2 - #endif --SharedLibReferences(XFT,Xft,$(XFTLIBSRC),SOXFTREV,SharedXftRev) -+SharedLibReferences(XFT,NX_Xft,$(XFTLIBSRC),SOXFTREV,SharedXftRev) - #else --ProjectUnsharedLibReferences(XFT,Xft,$(XFTLIBSRC),XBuildLibDir) -+ProjectUnsharedLibReferences(XFT,NX_Xft,$(XFTLIBSRC),XBuildLibDir) - #endif - - #ifndef XftClientDepLibs -@@ -3622,9 +3622,9 @@ ProjectUnsharedLibReferences(XFT,Xft,$(X - #ifndef SharedFontconfigRev - #define SharedFontconfigRev 1.0.4 - #endif --SharedLibReferences(FONTCONFIG,fontconfig,$(FONTCONFIGLIBSRC),SOFONTCONFIGREV,SharedFontconfigRev) -+SharedLibReferences(FONTCONFIG,NX_fontconfig,$(FONTCONFIGLIBSRC),SOFONTCONFIGREV,SharedFontconfigRev) - #else --ProjectUnsharedLibReferences(FONTCONFIG,fontconfig,$(FONTCONFIGLIBSRC),XBuildLibDir) -+ProjectUnsharedLibReferences(FONTCONFIG,NX_fontconfig,$(FONTCONFIGLIBSRC),XBuildLibDir) - #endif - - #ifdef UseInstalled -@@ -3827,9 +3827,9 @@ LIBPNGLIB = -L$(LIBPNGLIBDIR) LinkerRunt - # ifndef SharedxkbfileRev - # define SharedxkbfileRev 1.0 - # endif --SharedLibReferences(XKBFILE,xkbfile,$(XKBFILESRC),SOXKBFILEREV, SharedxkbfileRev) -+SharedLibReferences(XKBFILE,NX_xkbfile,$(XKBFILESRC),SOXKBFILEREV, SharedxkbfileRev) - #else --ProjectUnsharedLibReferences(XKBFILE,xkbfile,$(XKBFILELIBSRC),XBuildLibDir) -+ProjectUnsharedLibReferences(XKBFILE,NX_xkbfile,$(XKBFILELIBSRC),XBuildLibDir) - #endif - - #if BuildXKBlib -@@ -3899,9 +3899,9 @@ ProjectUnsharedLibReferences(XKBFILE,xkb - # ifndef SharedxkbuiRev - # define SharedxkbuiRev 1.0 - # endif --SharedLibReferences(XKBUI,xkbui,$(XKBUISRC),SOXKBUIREV, SharedxkbuiRev) -+SharedLibReferences(XKBUI,NX_xkbui,$(XKBUISRC),SOXKBUIREV, SharedxkbuiRev) - #else --ProjectUnsharedLibReferences(XKBUI,xkbui,$(XKBUILIBSRC),XBuildLibDir) -+ProjectUnsharedLibReferences(XKBUI,NX_xkbui,$(XKBUILIBSRC),XBuildLibDir) - #endif - - #ifndef XkbuiLibs -@@ -3974,9 +3974,9 @@ EXTRAXAWCLIENTLIBS = ExtraXawClientLibs - #ifndef SharedXTrapRev - #define SharedXTrapRev 6.4 - #endif --SharedLibReferences(XTRAP,XTrap,$(XTRAPLIBSRC),SOXTRAPREV,SharedXTrapRev) -+SharedLibReferences(XTRAP,NX_XTrap,$(XTRAPLIBSRC),SOXTRAPREV,SharedXTrapRev) - #else --ProjectUnsharedLibReferences(XTRAP,XTrap,$(XTRAPLIBSRC),XBuildLibDir) -+ProjectUnsharedLibReferences(XTRAP,NX_XTrap,$(XTRAPLIBSRC),XBuildLibDir) - #endif - - #ifndef NeedDefaultDepLibs ---- a/nx-X11/config/cf/lnxLib.rules -+++ b/nx-X11/config/cf/lnxLib.rules -@@ -389,7 +389,7 @@ JUMP_LDLIBS_libc = `$(CC) --print-libgcc - XCOMM libX11.so (X11, SM, ICE) - JUMP_ROOT_X11 = $(XLIBSRC) - JUMP_IS_HOST_X11 = YES --JUMP_STUBLIBS_X11 = libX11.sa libSM.sa libICE.sa -+JUMP_STUBLIBS_X11 = libNX_X11.sa libNX_SM.sa libNX_ICE.sa - JUMP_SIBDIRS_X11 = $(JUMP_ROOT_SM) $(JUMP_ROOT_ICE) - JUMP_DIR_X11 = $(JUMP_ROOT_X11)/shared - JUMP_DEFS_X11 = $(XDMAUTHDEFS) $(XKB_DEFINES) -@@ -400,9 +400,9 @@ JUMP_EXPORT_X11 = $(JUMP_DIR_X11)/jump.v - JUMP_ADDRESS_X11 = 0x60200000 - JUMP_JUMPTABLESIZE_X11 = 0x4000 - JUMP_GOTSIZE_X11 = 4096 --JUMP_STUBNAMES_X11 = libX11 libSM libICE -+JUMP_STUBNAMES_X11 = libNX_X11 libNX_SM libNX_ICE - JUMP_STUBS_IMPORT_X11 = $(LIBC_SA) --JUMP_SIBARS_X11 = jump/libSM.a~ jump/libICE.a~ -+JUMP_SIBARS_X11 = jump/libNX_SM.a~ jump/libNX_ICE.a~ - JUMP_LDLIBS_X11 = $(JUMP_SIBARS_X11) $(JUMP_LDLIBS_libc) - - XCOMM libSM (part of libX11.so) -@@ -435,9 +435,9 @@ JUMP_JUMPTABLESIZE_Xt = 0x4000 - JUMP_GOTSIZE_Xt = 4096 - JUMP_STUBNAMES_Xt = libXt libXmu libXext libXi libXtst libXp - JUMP_STUBS_IMPORT_Xt = $(JUMP_STUBS_IMPORT_X11) --JUMP_SIBARS_Xt = jump/libXmu.a~ jump/libXext.a~ jump/libXi.a~ jump/libXtst.a~ jump/libXp.a~ --JUMP_LDLIBS_Xt = $(JUMP_SIBARS_Xt) $(JUMP_ROOT_ICE)/libICE.sa \ -- $(JUMP_ROOT_SM)/libSM.sa $(JUMP_ROOT_X11)/libX11.sa $(JUMP_LDLIBS_libc) -+JUMP_SIBARS_Xt = jump/libNX_Xmu.a~ jump/libNX_Xext.a~ jump/libNX_Xi.a~ jump/libNX_Xtst.a~ jump/libNX_Xp.a~ -+JUMP_LDLIBS_Xt = $(JUMP_SIBARS_Xt) $(JUMP_ROOT_ICE)/libNX_ICE.sa \ -+ $(JUMP_ROOT_SM)/libNX_SM.sa $(JUMP_ROOT_X11)/libNX_X11.sa $(JUMP_LDLIBS_libc) - - XCOMM libXmu (part of libXt.so) - JUMP_ROOT_Xmu = $(XMUSRC) -@@ -485,8 +485,8 @@ JUMP_JUMPTABLESIZE_Xaw = 0x4000 - JUMP_GOTSIZE_Xaw = 4096 - JUMP_STUBNAMES_Xaw = libXaw - JUMP_STUBS_IMPORT_Xaw = $(JUMP_STUBS_IMPORT_X11) --JUMP_LDLIBS_Xaw = $(JUMP_ROOT_Xt)/libXt.sa $(JUMP_ROOT_Xt)/libXmu.sa \ -- $(JUMP_ROOT_Xt)/libXext.sa $(JUMP_ROOT_X11)/libX11.sa \ -+JUMP_LDLIBS_Xaw = $(JUMP_ROOT_Xt)/libNX_Xt.sa $(JUMP_ROOT_Xt)/libNX_Xmu.sa \ -+ $(JUMP_ROOT_Xt)/libNX_Xext.sa $(JUMP_ROOT_X11)/libNX_X11.sa \ - $(JUMP_LDLIBS_libc) - - # endif /* !UseInstalled */ ---- a/nx-X11/config/cf/lnxLib.tmpl -+++ b/nx-X11/config/cf/lnxLib.tmpl -@@ -9,7 +9,7 @@ XCOMM $XFree86: xc/config/cf/lnxLib.tmpl - - #ifndef FixupLibReferences - #define FixupLibReferences() @@\ --XMULIBONLY = -lXmu @@\ -+XMULIBONLY = -lNX_Xmu @@\ - XMULIB = $(XMULIBONLY) $(XTOOLLIB) $(XLIB) - #endif - -@@ -66,7 +66,7 @@ XMULIB = $(XMULIBONLY) $(XTOOLLIB) $(XLI - - #ifndef FixupLibReferences - #define FixupLibReferences() @@\ --XMULIB = -lXmu $(XLIB) -+XMULIB = -lNX_Xmu $(XLIB) - #endif - - #endif /* UseElfFormat */ ---- a/nx-X11/lib/X11/Imakefile -+++ b/nx-X11/lib/X11/Imakefile -@@ -82,7 +82,7 @@ NX_XCOMPEXTCONFIGTARGET = $(NX_XCOMPEXTL - #define DoExtraLib SharedLibX11 - #define DoDebugLib DebugLibX11 - #define DoProfileLib ProfileLibX11 --#define LibName X11 -+#define LibName NX_X11 - #define SoRev SOXLIBREV - #define HugeLibrary YES - #define IncSubdir X11 ---- a/nx-X11/lib/XRes/Imakefile -+++ b/nx-X11/lib/XRes/Imakefile -@@ -4,7 +4,7 @@ XCOMM $XFree86: xc/lib/XRes/Imakefile,v - #define DoSharedLib SharedLibXRes - #define DoDebugLib DebugLibXRes - #define DoProfileLib ProfileLibXRes --#define LibName XRes -+#define LibName NX_XRes - #define SoRev SOXRESREV - #define LibHeaders NO - ---- a/nx-X11/lib/Xau/Imakefile -+++ b/nx-X11/lib/Xau/Imakefile -@@ -10,7 +10,7 @@ XCOMM $XFree86: xc/lib/Xau/Imakefile,v 3 - #define DoExtraLib SharedLibXau - #define DoDebugLib DebugLibXau - #define DoProfileLib ProfileLibXau --#define LibName Xau -+#define LibName NX_Xau - #define SoRev SOXAUTHREV - #define IncSubdir X11 - ---- a/nx-X11/lib/Xcomposite/Imakefile -+++ b/nx-X11/lib/Xcomposite/Imakefile -@@ -14,7 +14,7 @@ SOXCOMPOSITEREV=1.0.0 - #define DoDebugLib DebugLibXcomposite - #define DoProfileLib ProfileLibXcomposite - --#define LibName Xcomposite -+#define LibName NX_Xcomposite - #define SoRev SOXCOMPOSITEREV - #define IncSubdir X11 - #define IncSubSubdir extensions ---- a/nx-X11/lib/Xcomposite/xcomposite.pc.in -+++ b/nx-X11/lib/Xcomposite/xcomposite.pc.in -@@ -7,4 +7,4 @@ Name: Xcomposite - Description: X Composite Library - Version: @VERSION@ - Cflags: -I${includedir} @XCOMPOSITE_CFLAGS@ @X_CFLAGS@ --Libs: -L${libdir} -lXcomposite @XCOMPOSITE_LIBS@ @X_LIBS@ -+Libs: -L${libdir} -lNX_Xcomposite @XCOMPOSITE_LIBS@ @X_LIBS@ ---- a/nx-X11/lib/Xcursor/Imakefile -+++ b/nx-X11/lib/Xcursor/Imakefile -@@ -15,7 +15,7 @@ SOXCURSORREV=1.0.2 - #define DoDebugLib DebugLibXcursor - #define DoProfileLib ProfileLibXcursor - --#define LibName Xcursor -+#define LibName NX_Xcursor - #define SoRev SOXCURSORREV - #define IncSubdir X11 - #define IncSubSubdir Xcursor ---- a/nx-X11/lib/Xcursor/xcursor.pc.in -+++ b/nx-X11/lib/Xcursor/xcursor.pc.in -@@ -12,4 +12,4 @@ Description: X Cursor Library - Version: @VERSION@ - Requires: xrender - Cflags: -I${includedir} ${xrendercflags} ${xcflags} --Libs: -L${libdir} -lXcursor ${xrenderlibs} ${xlibs} -+Libs: -L${libdir} -lNX_Xcursor ${xrenderlibs} ${xlibs} ---- a/nx-X11/lib/Xdamage/Imakefile -+++ b/nx-X11/lib/Xdamage/Imakefile -@@ -14,7 +14,7 @@ SOXDAMAGEREV=1.0.1 - #define DoDebugLib DebugLibXdamage - #define DoProfileLib ProfileLibXdamage - --#define LibName Xdamage -+#define LibName NX_Xdamage - #define SoRev SOXDAMAGEREV - #define IncSubdir X11 - #define IncSubSubdir extensions ---- a/nx-X11/lib/Xdamage/xdamage.pc.in -+++ b/nx-X11/lib/Xdamage/xdamage.pc.in -@@ -7,4 +7,4 @@ Name: Xdamage - Description: X Damage Library - Version: @VERSION@ - Cflags: -I${includedir} @XDAMAGE_CFLAGS@ @X_CFLAGS@ --Libs: -L${libdir} -lXdamage @XDAMAGE_LIBS@ @X_LIBS@ -+Libs: -L${libdir} -lNX_Xdamage @XDAMAGE_LIBS@ @X_LIBS@ ---- a/nx-X11/lib/Xdmcp/Imakefile -+++ b/nx-X11/lib/Xdmcp/Imakefile -@@ -10,7 +10,7 @@ XCOMM $XFree86: xc/lib/Xdmcp/Imakefile,v - #define DoExtraLib SharedLibXdmcp - #define DoDebugLib DebugLibXdmcp - #define DoProfileLib ProfileLibXdmcp --#define LibName Xdmcp -+#define LibName NX_Xdmcp - #define SoRev SOXDMCPREV - #define IncSubdir X11 - ---- a/nx-X11/lib/Xext/Imakefile -+++ b/nx-X11/lib/Xext/Imakefile -@@ -10,7 +10,7 @@ XCOMM $XFree86: xc/lib/Xext/Imakefile,v - #define DoExtraLib SharedLibXext - #define DoDebugLib DebugLibXext - #define DoProfileLib ProfileLibXext --#define LibName Xext -+#define LibName NX_Xext - #define SoRev SOXEXTREV - #define LibHeaders NO - ---- a/nx-X11/lib/Xfixes/Imakefile -+++ b/nx-X11/lib/Xfixes/Imakefile -@@ -14,7 +14,7 @@ SOXFIXESREV=3.0.0 - #define DoDebugLib DebugLibXfixes - #define DoProfileLib ProfileLibXfixes - --#define LibName Xfixes -+#define LibName NX_Xfixes - #define SoRev SOXFIXESREV - #define IncSubdir X11 - #define IncSubSubdir extensions ---- a/nx-X11/lib/Xfixes/xfixes.pc.in -+++ b/nx-X11/lib/Xfixes/xfixes.pc.in -@@ -7,4 +7,4 @@ Name: Xfixes - Description: X Fixes Library - Version: @VERSION@ - Cflags: -I${includedir} @X_CFLAGS@ --Libs: -L${libdir} -lXfixes @X_LIBS@ -+Libs: -L${libdir} -lNX_Xfixes @X_LIBS@ ---- a/nx-X11/lib/Xinerama/Imakefile -+++ b/nx-X11/lib/Xinerama/Imakefile -@@ -4,7 +4,7 @@ XCOMM $XFree86: xc/lib/Xinerama/Imakefil - #define DoSharedLib SharedLibXinerama - #define DoDebugLib DebugLibXinerama - #define DoProfileLib ProfileLibXinerama --#define LibName Xinerama -+#define LibName NX_Xinerama - #define SoRev SOXINERAMAREV - #define LibHeaders NO - ---- a/nx-X11/lib/Xpm/Imakefile -+++ b/nx-X11/lib/Xpm/Imakefile -@@ -12,7 +12,7 @@ XCOMM $XFree86: xc/lib/Xpm/Imakefile,v 1 - #define DoDebugLib DebugLibXpm - #define DoProfileLib ProfileLibXpm - #define HasSharedData NO --#define LibName Xpm -+#define LibName NX_Xpm - #define SoRev SOXPMREV - #define IncSubdir X11 - ---- a/nx-X11/lib/Xrandr/Imakefile -+++ b/nx-X11/lib/Xrandr/Imakefile -@@ -5,7 +5,7 @@ XCOMM $XdotOrg: xc/lib/Xrandr/Imakefile, - #define DoSharedLib SharedLibXrandr - #define DoDebugLib DebugLibXrandr - #define DoProfileLib ProfileLibXrandr --#define LibName Xrandr -+#define LibName NX_Xrandr - #define SoRev SOXRANDRREV - #define IncSubdir X11 - #define IncSubSubdir extensions ---- a/nx-X11/lib/Xrender/Imakefile -+++ b/nx-X11/lib/Xrender/Imakefile -@@ -74,7 +74,7 @@ clean:: - #define DoSharedLib SharedLibXrender - #define DoDebugLib DebugLibXrender - #define DoProfileLib ProfileLibXrender --#define LibName Xrender -+#define LibName NX_Xrender - #define SoRev SOXRENDERREV - - #ifdef XBuildIncDir ---- a/nx-X11/lib/Xrender/xrender.pc.in -+++ b/nx-X11/lib/Xrender/xrender.pc.in -@@ -8,4 +8,4 @@ Description: X Render Library - Version: @VERSION@ - Requires: @X_REQUIRES@ - Cflags: -I${includedir} @RENDER_CFLAGS@ @X_NON_PKG_CFLAGS@ --Libs: -L${libdir} -lXrender @X_NON_PKG_LIBS@ -+Libs: -L${libdir} -lNX_Xrender @X_NON_PKG_LIBS@ ---- a/nx-X11/lib/Xtst/Imakefile -+++ b/nx-X11/lib/Xtst/Imakefile -@@ -10,7 +10,7 @@ XCOMM $XFree86: xc/lib/Xtst/Imakefile,v - #define DoExtraLib SharedLibXtst - #define DoDebugLib DebugLibXtst - #define DoProfileLib ProfileLibXtst --#define LibName Xtst -+#define LibName NX_Xtst - #define SoRev SOXTESTREV - #define LibHeaders NO - ---- a/nx-X11/lib/font/Imakefile -+++ b/nx-X11/lib/font/Imakefile -@@ -31,7 +31,7 @@ XCOMM $XFree86: xc/lib/font/Imakefile,v - STUBDIRS = stubs - #endif - --LIBNAME = Xfont -+LIBNAME = NX_Xfont - SOREV = $(SOFONTREV) - - #ifndef SeparateSharedCompile ---- a/nx-X11/lib/oldX/Imakefile -+++ b/nx-X11/lib/oldX/Imakefile -@@ -10,7 +10,7 @@ XCOMM $XFree86: xc/lib/oldX/Imakefile,v - #define DoExtraLib SharedOldX - #define DoDebugLib DebugOldX - #define DoProfileLib ProfileOldX --#define LibName oldX -+#define LibName NX_oldX - #define SoRev SOOLDXREV - #define IncSubdir X11 - ---- a/nx-X11/lib/xkbfile/Imakefile -+++ b/nx-X11/lib/xkbfile/Imakefile -@@ -11,7 +11,7 @@ XCOMM $XFree86: xc/lib/xkbfile/Imakefile - #define DoDebugLib DebugLibxkbfile - #define DoProfileLib ProfileLibxkbfile - #define HasSharedData NO --#define LibName xkbfile -+#define LibName NX_xkbfile - #define SoRev SOXKBFILEREV - #define IncSubdir X11 - #define IncSubSubdir extensions ---- a/nx-X11/lib/xkbui/Imakefile -+++ b/nx-X11/lib/xkbui/Imakefile -@@ -6,7 +6,7 @@ XCOMM $XFree86: xc/lib/xkbui/Imakefile,v - #define DoDebugLib DebugLibxkbui - #define DoProfileLib ProfileLibxkbui - #define HasSharedData NO --#define LibName xkbui -+#define LibName NX_xkbui - #define SoRev SOXKBUIREV - #define IncSubdir X11 - #define IncSubSubdir extensions ---- a/nx-X11/programs/Xserver/Imakefile -+++ b/nx-X11/programs/Xserver/Imakefile -@@ -313,7 +313,7 @@ XPFBLIBS = dix/LibraryTargetName(xpstubs - FONTBASE = $(FONTLIBSRC)/fontbase.o \ - $(FONTLIBSRC)/LibraryTargetName(fontbase) - #if XserverStaticFontLib -- FONT = $(FONTLIBSRC)/LibraryTargetName(Xfont) $(FREETYPE2LIB) -+ FONT = $(FONTLIBSRC)/LibraryTargetName(NX_Xfont) $(FREETYPE2LIB) - #else - FONT = $(LDPRELIB) $(XFONTLIB) $(FREETYPE2LIB) - #endif -@@ -994,7 +994,7 @@ NXAGENTOBJS = hw/nxagent/miinitext.o - dix/main.o - #endif - --XPMLIB = -lXpm -+XPMLIB = -lNX_Xpm - NXAGENT = hw/nxagent/LibraryTargetName(nxagent) - NXAGENTLIBS = PreFbLibs $(NXAGENT) FbPostFbLibs $(NXAGENT) $(MI) - NXAGENTSYSLIBS = $(FONTLIBS) $(LDPRELIBS) $(XLIB) $(SYSLIBS) $(XPMLIB) -@@ -1012,18 +1012,18 @@ $(NXAGENTOBJS) $(NXAGENTLIBS) $(NXAGENTS - - #if defined(SunArchitecture) - NXAGENTNXLIBS = -L ../../../nxcomp -L ../../../nxcompext -L ../../../nxcompshad \ -- -lXcomp -lXcompext -lXcompshad -lrt -L/usr/sfw/lib -lXrender -lXfixes \ -- -L../../../nx-X11/exports/lib -lXtst -lXdamage -lXrandr -lXcomposite -lXdmcp \ -+ -lXcomp -lXcompext -lXcompshad -lrt -L/usr/sfw/lib -lNX_Xrender -lNX_Xfixes \ -+ -L../../../nx-X11/exports/lib -lNX_Xtst -lNX_Xdamage -lNX_Xrandr -lNX_Xcomposite -lNX_Xdmcp \ - `pkg-config --libs libxml-2.0` - #elif defined(cygwinArchitecture) - NXAGENTNXLIBS = -L ../../../nxcomp -L ../../../nxcompext \ -- -lXcomp -lXcompext -lXrender -lX11 -lXext -lXcomposite -lXfixes \ -- -L ../../../nxcompshad -lXcompshad -L../../../nx-X11/exports/lib -lXtst -lXdmcp \ -+ -lXcomp -lXcompext -lNX_Xrender -lX11 -lNX_Xext -lNX_Xcomposite -lNX_Xfixes \ -+ -L ../../../nxcompshad -lXcompshad -L../../../nx-X11/exports/lib -lNX_Xtst -lNX_Xdmcp \ - `pkg-config --libs libxml-2.0` - #else - NXAGENTNXLIBS = -L ../../../nxcomp -L ../../../nxcompext -L ../../../nxcompshad \ -- -lXcomp -lXcompext -lXcompshad -lXrender -lX11 -lXext -lXfixes \ -- -L../../../nx-X11/exports/lib -lXtst -lXdamage -lXrandr -lXcomposite -lXinerama -lXdmcp \ -+ -lXcomp -lXcompext -lXcompshad -lNX_Xrender -lNX_X11 -lNX_Xext -lNX_Xfixes \ -+ -L../../../nx-X11/exports/lib -lNX_Xtst -lNX_Xdamage -lNX_Xrandr -lNX_Xcomposite -lNX_Xinerama -lNX_Xdmcp \ - `pkg-config --libs libxml-2.0` - #endif - -@@ -1078,7 +1078,7 @@ nxagent_static_nolibs: nxagent - else exit 0; fi - $(CCLINK) -o nxagent_static_nolibs -Wl,-Bstatic $(LDOPTIONS) $(NXAGENTOBJS) \ - $(NXAGENTLIBS) $(LOADABLEEXTS) $(LIBCWRAPPER) $(LDLIBS) $(FONTLIBS) \ -- $(LDPRELIBS) $(SYSLIBS) -Wl,-Bdynamic -lXext -lX11 $(EXTRA_LOAD_FLAGS) -+ $(LDPRELIBS) $(SYSLIBS) -Wl,-Bdynamic -lNX_Xext -lNX_X11 $(EXTRA_LOAD_FLAGS) - #endif /* NXAgentServer */ - - #if defined(XnonServer) && XnonServer ---- a/nxcompext/Makefile.in -+++ b/nxcompext/Makefile.in -@@ -42,12 +42,12 @@ CCINCLUDES = -I. -I../nxcomp - CCDEFINES = - - LDFLAGS = @LDFLAGS@ -L../nxcomp --LIBS = @LIBS@ -lz -lX11 -lXcomp -+LIBS = @LIBS@ -lz -lNX_X11 -lXcomp - - # - # Only if THREADS is defined - # --# LIBS = @LIBS@ -lz -ljpeg -lpthread -lX11 -lXcomp -+# LIBS = @LIBS@ -lz -ljpeg -lpthread -lNX_X11 -lXcomp - # - - srcdir = @srcdir@ ---- a/nxcompshad/Makefile.in -+++ b/nxcompshad/Makefile.in -@@ -48,7 +48,7 @@ CCINCLUDES = - CCDEFINES = - - LDFLAGS = @LDFLAGS@ --LIBS = @LIBS@ -lX11 -+LIBS = @LIBS@ -lNX_X11 - - # - # Only if THREADS is defined. -@@ -139,7 +139,7 @@ all: depend $(LIBARCHIVE) $(LIBDLL) - - else - --EXTRALIBS = -lXtst -lXrandr -lXdamage -+EXTRALIBS = -lNX_Xtst -lNX_Xrandr -lNX_Xdamage - - all: depend $(LIBFULL) $(LIBLOAD) $(LIBSHARED) $(LIBARCHIVE) - diff --git a/debian/patches/0601_nx-X11_build-option-changes-to-not-use-bundled-libraries.full.patch b/debian/patches/0601_nx-X11_build-option-changes-to-not-use-bundled-libraries.full.patch deleted file mode 100644 index 6301b64ba..000000000 --- a/debian/patches/0601_nx-X11_build-option-changes-to-not-use-bundled-libraries.full.patch +++ /dev/null @@ -1,99 +0,0 @@ -Description: Do not build bundled libraries. -Author: Orion Poplawski <orion@nwra.com> -Abstract: - This commit has been submitted by Orion in two - portions. One was submitted to X2Go BTS and created - on Wed, 10 Jul 2013. - . - The other portion has been taken from the Fedora - package by Mike Gabriel and worked into this - patch on Fri, 06 Dec 2013. ---- - nx-X11/config/cf/host.def | 10 +++++++--- - nx-X11/lib/font/include/Imakefile | 2 +- - 2 files changed, 8 insertions(+), 4 deletions(-) - ---- a/nx-X11/config/cf/host.def -+++ b/nx-X11/config/cf/host.def -@@ -311,6 +311,7 @@ XCOMM $XFree86: xc/config/cf/xf86site.de - * - #define BuildFreeType NO - */ -+#define BuildFreeType NO - - /* - * To set non-default build options for the underlying FreeType libraries, -@@ -892,7 +893,7 @@ XCOMM $XFree86: xc/config/cf/xf86site.de - * - #define HasFreetype2 NO - */ --#define HasFreetype2 NO -+#define HasFreetype2 YES - - /* - * To use a FreeType library already installed outside the default search -@@ -909,7 +910,7 @@ XCOMM $XFree86: xc/config/cf/xf86site.de - * - #define HasFontconfig NO - */ --#define HasFontconfig NO -+#define HasFontconfig YES - - /* - * To use a Fontconfig library already installed outside the default search -@@ -925,7 +926,7 @@ XCOMM $XFree86: xc/config/cf/xf86site.de - * - #define HasExpat NO - */ --#define HasExpat NO -+#define HasExpat YES - - /* - * To use a Expat library already installed outside the default search -@@ -961,7 +962,7 @@ XCOMM $XFree86: xc/config/cf/xf86site.de - - #define SharedLibXdmcp YES - --#define BuildXaw7 YES -+#define BuildXaw7 NO - - #else /* #if !defined(NXZaurusXServer) && !defined(NXiPAQXServer) && !defined(DarwinArchitecture) */ - -@@ -1019,3 +1020,11 @@ XCOMM $XFree86: xc/config/cf/xf86site.de - #endif - - #endif /* #if !defined(NXZaurusXServer) && !defined(NXiPAQXServer) && !defined(DarwinArchitecture) */ -+ -+#define BuildRman NO -+#define BuildFontEncLib NO -+#define BuildXcursorLibrary NO -+#define BuildXftLibrary NO -+#define BuildXft1Library NO -+#define SharedLibFont NO -+#define BuildLoadableXlibI18n NO ---- a/nx-X11/lib/font/include/Imakefile -+++ b/nx-X11/lib/font/include/Imakefile -@@ -1,5 +1,5 @@ - XCOMM $Xorg$ -- HEADERS = bitmap.h bufio.h fntfil.h fntfilio.h fntfilst.h fontenc.h \ -+ HEADERS = bitmap.h bufio.h fntfil.h fntfilio.h fntfilst.h \ - fontencc.h fontmisc.h fontmod.h fontshow.h fontutil.h \ - fontxlfd.h - all:: ---- a/nx-X11/lib/Imakefile -+++ b/nx-X11/lib/Imakefile -@@ -213,14 +213,8 @@ XEXTLIBDIR = Xext - - #if BuildLibraries - OLDXLIBDIR = oldX --ICELIBDIR = ICE --SMLIBDIR = SM --XTLIBDIR = Xt --XMULIBDIR = Xmu --XMUULIBDIR = Xmuu - XPMLIBDIR = Xpm - XTSTLIBDIR = Xtst --FSLIBDIR = FS - #endif - - diff --git a/debian/patches/0602_nx-X11_initgroups.full.patch b/debian/patches/0602_nx-X11_initgroups.full.patch deleted file mode 100644 index 8a7cc1763..000000000 --- a/debian/patches/0602_nx-X11_initgroups.full.patch +++ /dev/null @@ -1,63 +0,0 @@ -Description: Be compliant with POS36-C: Observe correct revocation order while relinquishing privileges -Author: Orion Poplawski <orion@cora.nwra.com> -Abstract: - The Fedora review of NX (redistributed) caught the following rpmlint issue: - . - This executable is calling setuid and setgid without setgroups or initgroups. - There is a high probability this mean it didn't relinquish all groups, and this - would be a potential security issue to be fixed. Seek POS36-C on the web for - details about the problem. - . - Ref POS36-C: - https://www.securecoding.cert.org/confluence/display/seccode/POS36-C.+Observe+correct+revocation+order+while+relinquishing+privileges - . - This patch adds initgroups() calls to the code to initialize the supplemental group list. ---- a/nx-X11/programs/Xserver/os/utils.c -+++ b/nx-X11/programs/Xserver/os/utils.c -@@ -112,6 +112,9 @@ OR PERFORMANCE OF THIS SOFTWARE. - #include <sys/stat.h> - #include <ctype.h> /* for isspace */ - #include <stdarg.h> -+#include <sys/types.h> -+#include <grp.h> -+#include <pwd.h> - - #if defined(DGUX) - #include <sys/resource.h> -@@ -1770,6 +1773,7 @@ System(char *command) - void (*csig)(int); - #endif - int status; -+ struct passwd *pwent; - - if (!command) - return(1); -@@ -1791,6 +1795,9 @@ System(char *command) - case -1: /* error */ - p = -1; - case 0: /* child */ -+ pwent = getpwuid(getuid()); -+ if (initgroups(pwent->pw_name,getgid()) == -1) -+ _exit(127); - if (setgid(getgid()) == -1) - _exit(127); - if (setuid(getuid()) == -1) ---- a/nxcomp/Pipe.cpp -+++ b/nxcomp/Pipe.cpp -@@ -21,6 +21,7 @@ - #include <pwd.h> - #include <sys/types.h> - #include <sys/wait.h> -+#include <grp.h> - - #include "Pipe.h" - #include "Misc.h" -@@ -234,6 +235,8 @@ FILE *Popen(char * const parameters[], c - // Child. - // - -+ struct passwd *pwent = getpwuid(getuid()); -+ if (pwent) initgroups(pwent->pw_name,getgid()); - setgid(getgid()); - setuid(getuid()); - diff --git a/debian/patches/0603_nx-X11_compilation_warnings.full.patch b/debian/patches/0603_nx-X11_compilation_warnings.full.patch deleted file mode 100644 index 37e687a53..000000000 --- a/debian/patches/0603_nx-X11_compilation_warnings.full.patch +++ /dev/null @@ -1,38 +0,0 @@ -Description: Handle some serious compilation warnings -Author: Mirraz Mirraz <mirraz1@rambler.ru> ---- a/nx-X11/extras/Mesa/src/mesa/shader/arbprogparse.c -+++ b/nx-X11/extras/Mesa/src/mesa/shader/arbprogparse.c -@@ -3259,7 +3259,6 @@ parse_vp_instruction (GLcontext * ctx, G - vp->SrcReg[0].Swizzle = SWIZZLE_NOOP; - vp->SrcReg[1].Swizzle = SWIZZLE_NOOP; - vp->SrcReg[2].Swizzle = SWIZZLE_NOOP; -- vp->SrcReg[3].Swizzle = SWIZZLE_NOOP; - vp->DstReg.WriteMask = 0xf; - - switch (type) { ---- a/nx-X11/lib/X11/imLcPrs.c -+++ b/nx-X11/lib/X11/imLcPrs.c -@@ -589,7 +589,7 @@ parseline( - - l = _Xmbstoutf8(local_utf8_buf, rhs_string_mb, LOCAL_UTF8_BUFSIZE - 1); - if (l == LOCAL_UTF8_BUFSIZE - 1) { -- local_wc_buf[l] = '\0'; -+ local_utf8_buf[l] = '\0'; - } - if( (rhs_string_utf8 = (char *)Xmalloc(l + 1)) == NULL ) { - Xfree( rhs_string_wc ); ---- a/nx-X11/programs/Xserver/xkb/ddxLoad.c -+++ b/nx-X11/programs/Xserver/xkb/ddxLoad.c -@@ -37,6 +37,12 @@ THE USE OR PERFORMANCE OF THIS SOFTWARE. - #include <errno.h> - #include <stdio.h> - #include <ctype.h> -+ -+/* stat() */ -+#include <sys/types.h> -+#include <sys/stat.h> -+#include <unistd.h> -+ - #define NEED_EVENTS 1 - #include <X11/X.h> - #include <X11/Xos.h> diff --git a/debian/patches/0605_nxcomp_Types.h-dont-use-STL-internals-on-libc++.full+lite.patch b/debian/patches/0605_nxcomp_Types.h-dont-use-STL-internals-on-libc++.full+lite.patch deleted file mode 100644 index 0eead3d5d..000000000 --- a/debian/patches/0605_nxcomp_Types.h-dont-use-STL-internals-on-libc++.full+lite.patch +++ /dev/null @@ -1,52 +0,0 @@ -Description: In Types.h, don't use STL internals on libc++. -Author: Clemens Lang <cal@macports.org> -Abstract: - The nx-libs-lite package does not compile on OS X Mavericks because - Apple's clang compilers now default to compiling against the libc++ STL - rather than (their outdated copy of) libstdc++. - . - While the compiler still allows changing that, we should not rely on - this being possible forever. - . - The compiler chokes in Types.h, specifically the clear() methods in - subclasses of vectors that use implementation details of the GNU STL. - The attached patch fixes these compilation issues by not overriding the - clear() method when compiling against libc++, since the libc++ headers - seem to do essentially the same as the overriden method. ---- a/nxcomp/Types.h -+++ b/nxcomp/Types.h -@@ -55,6 +55,9 @@ class T_data : public vector < unsigned - return &*(vector < unsigned char >::begin()); - } - -+ // Avoid overriding clear() when using libc++. Fiddling with STL internals -+ // doesn't really seem like a good idea to me anyway. -+ #ifndef _LIBCPP_VECTOR - void clear() - { - #if defined(__STL_USE_STD_ALLOCATORS) || defined(__GLIBCPP_INTERNAL_VECTOR_H) -@@ -95,12 +98,16 @@ class T_data : public vector < unsigned - - #endif /* #if defined(__STL_USE_STD_ALLOCATORS) || defined(__GLIBCPP_INTERNAL_VECTOR_H) */ - } -+ #endif /* #ifdef _LIBCPP_VECTOR */ - }; - - class T_messages : public vector < Message * > - { - public: - -+ // Avoid overriding clear() when using libc++. Fiddling with STL internals -+ // doesn't really seem like a good idea to me anyway. -+ #ifndef _LIBCPP_VECTOR - void clear() - { - #if defined(__STL_USE_STD_ALLOCATORS) || defined(__GLIBCPP_INTERNAL_VECTOR_H) -@@ -141,6 +148,7 @@ class T_messages : public vector < Messa - - #endif /* #if defined(__STL_USE_STD_ALLOCATORS) || defined(__GLIBCPP_INTERNAL_VECTOR_H) */ - } -+ #endif /* #ifndef _LIBCPP_VECTOR */ - }; - - typedef md5_byte_t * T_checksum; diff --git a/debian/patches/0606_nx-X11_build-on-aarch64.full.patch b/debian/patches/0606_nx-X11_build-on-aarch64.full.patch deleted file mode 100644 index bcfcd9ec2..000000000 --- a/debian/patches/0606_nx-X11_build-on-aarch64.full.patch +++ /dev/null @@ -1,77 +0,0 @@ -Description: Provide build support for aarch64 architecture -Author: Orion Poplawski <orion@cora.nwra.com> ---- a/nx-X11/config/cf/Imake.cf -+++ b/nx-X11/config/cf/Imake.cf -@@ -908,6 +908,9 @@ XCOMM Keep cpp from replacing path eleme - # endif - # undef __ARMEB__ - # endif -+# ifdef __aarch64__ -+# define Arm64Architecture -+# endif - # ifdef mc68000 - # define Mc68020Architecture - # undef mc68000 ---- a/nx-X11/config/cf/linux.cf -+++ b/nx-X11/config/cf/linux.cf -@@ -844,6 +844,16 @@ InstallNamedTargetNoClobber(install,file - # define ServerExtraDefines -DGCCUSESGAS XFree86ServerDefines - #endif /* Arm32Achitecture */ - -+#ifdef Arm64Architecture -+# define DefaultCCOptions -+# ifndef OptimizedCDebugFlags -+# define OptimizedCDebugFlags -O3 -+# endif -+# define LinuxMachineDefines -D__aarch64__ -U__arm -Uarm -+# define ServerOSDefines XFree86ServerOSDefines -DDDXTIME -+# define ServerExtraDefines -DGCCUSESGAS XFree86ServerDefines -+#endif /* Arm64Achitecture */ -+ - #ifdef HPArchitecture - # define OptimizedCDebugFlags -O2 GccAliasingArgs - # define LinuxMachineDefines -D__hppa__ ---- a/nx-X11/config/cf/Imake.tmpl -+++ b/nx-X11/config/cf/Imake.tmpl -@@ -526,6 +526,10 @@ XCOMM the platform-specific parameters - - #define ByteOrder X_BIG_ENDIAN - #elif defined(Arm32Architecture) - #define ByteOrder X_LITTLE_ENDIAN -+#elif defined(Arm64ebArchitecture) -+#define ByteOrder X_BIG_ENDIAN -+#elif defined(Arm64Architecture) -+#define ByteOrder X_LITTLE_ENDIAN - #elif defined(RsArchitecture) - #define ByteOrder X_BIG_ENDIAN - #elif defined(PpcArchitecture) || defined(Ppc64Architecture) ---- a/nx-X11/programs/Xserver/include/servermd.h -+++ b/nx-X11/programs/Xserver/include/servermd.h -@@ -154,6 +154,28 @@ SOFTWARE. - - #endif /* __arm32__ */ - -+#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 -+ -+# if defined(XF86MONOVGA) || defined(XF86VGA16) -+# define BITMAP_SCANLINE_UNIT 8 -+# endif -+ -+#define GLYPHPADBYTES 4 -+#define GETLEFTBITS_ALIGNMENT 1 -+#define LARGE_INSTRUCTION_CACHE -+#define AVOID_MEMORY_READ -+ -+#endif /* __aarch64__ */ -+ - #if defined (hpux) || defined __hppa__ - - #define IMAGE_BYTE_ORDER MSBFirst diff --git a/debian/patches/0607_nxcomp_macosx-X11-launcher-in-private-tmp.full+lite.patch b/debian/patches/0607_nxcomp_macosx-X11-launcher-in-private-tmp.full+lite.patch deleted file mode 100644 index 8c7eb30f7..000000000 --- a/debian/patches/0607_nxcomp_macosx-X11-launcher-in-private-tmp.full+lite.patch +++ /dev/null @@ -1,14 +0,0 @@ -Description: Detection for Mac OS X's launchd service on Mac OS X 10.10 and beyond -Author: Mike Gabriel <mike.gabriel@das-netzwerkteam.de> - ---- a/nxcomp/Loop.cpp -+++ b/nxcomp/Loop.cpp -@@ -4183,7 +4183,7 @@ int SetupDisplaySocket(int &xServerAddrF - - #ifdef __APPLE__ - -- if (strncasecmp(display, "/tmp/launch", 11) == 0) -+ if ((strncasecmp(display, "/tmp/launch", 11) == 0) || (strncasecmp(display, "/private/tmp/com.apple.launchd", 30) == 0)) - { - #ifdef TEST - *logofs << "Loop: Using launchd service on socket '" diff --git a/debian/patches/0610_nxcompext_use-MAKEDEPEND-in-path.full.patch b/debian/patches/0610_nxcompext_use-MAKEDEPEND-in-path.full.patch deleted file mode 100644 index da7924f81..000000000 --- a/debian/patches/0610_nxcompext_use-MAKEDEPEND-in-path.full.patch +++ /dev/null @@ -1,47 +0,0 @@ -Description: Discover makedepend in $PATH. Especially important for MacPorts (OS X.) -Author: Clemens Lang <cal@macports.org> - v2: Mihai Moldovan <ionic@ionic.de> - ---- a/nxcompext/configure.in -+++ b/nxcompext/configure.in -@@ -219,18 +219,15 @@ CFLAGS="$CFLAGS -DVERSION=\\\"${VERSION} - dnl Find makedepend somewhere. - - AC_SUBST(MAKEDEPEND) -+MAKEDEPEND="$(which makedepend)" - --if test -x "../nx-X11/config/makedepend/makedepend" ; then -- MAKEDEPEND=../nx-X11/config/makedepend/makedepend --else -- if test -x "/usr/X11R6/bin/makedepend" ; then -- MAKEDEPEND=/usr/X11R6/bin/makedepend -- else -- if test -x "/usr/openwin/bin/makedepend" ; then -- MAKEDEPEND=/usr/openwin/bin/makedepend -- else -- MAKEDEPEND=/usr/bin/makedepend -- fi -+# Try to desperately find makedepend. -+# Set MAKEDEPEND to the shipped makedepend binary. This will not -+# exist in nx-libs-lite, though, in which case MAKEDEPEND -+# will stay empty. -+if test -z "${MAKEDEPEND}"; then -+ if test -x "../nx-X11/config/makedepend/makedepend"; then -+ MAKEDEPEND="../nx-X11/config/makedepend/makedepend" - fi - fi - ---- a/nxcompext/Makefile.in -+++ b/nxcompext/Makefile.in -@@ -144,9 +144,9 @@ depends: depend.status - depend: depend.status - - depend.status: -- if [ -x $(MAKEDEPEND) ] ; then \ -+ if [ -n "$(MAKEDEPEND)" ] && [ -x "$(MAKEDEPEND)" ] ; then \ - $(MAKEDEPEND) $(CXXINCLUDES) $(CCINCLUDES) \ -- $(DEPENDINCLUDES) -f Makefile $(MSRC) $(CSRC) \ -+ $(DEPENDINCLUDES) -f Makefile $(MSRC) $(CSRC) \ - $(CXXSRC) 2>/dev/null; \ - fi - touch depend.status diff --git a/debian/patches/0611_nxcompshad_use-MAKEDEPEND-in-path.full.patch b/debian/patches/0611_nxcompshad_use-MAKEDEPEND-in-path.full.patch deleted file mode 100644 index 329a48937..000000000 --- a/debian/patches/0611_nxcompshad_use-MAKEDEPEND-in-path.full.patch +++ /dev/null @@ -1,47 +0,0 @@ -Description: Discover makedepend in $PATH. Especially important for MacPorts (OS X.) -Author: Clemens Lang <cal@macports.org> - v2: Mihai Moldovan <ionic@ionic.de> - ---- a/nxcompshad/configure.in -+++ b/nxcompshad/configure.in -@@ -269,18 +269,15 @@ fi - dnl Find makedepend somewhere. - - AC_SUBST(MAKEDEPEND) -+MAKEDEPEND="$(which makedepend)" - --if test -x "../nx-X11/config/makedepend/makedepend" ; then -- MAKEDEPEND=../nx-X11/config/makedepend/makedepend --else -- if test -x "/usr/X11R6/bin/makedepend" ; then -- MAKEDEPEND=/usr/X11R6/bin/makedepend -- else -- if test -x "/usr/openwin/bin/makedepend" ; then -- MAKEDEPEND=/usr/openwin/bin/makedepend -- else -- MAKEDEPEND=makedepend -- fi -+# Try to desperately find makedepend. -+# Set MAKEDEPEND to the shipped makedepend binary. This will not -+# exist in nx-libs-lite, though, in which case MAKEDEPEND -+# will stay empty. -+if test -z "${MAKEDEPEND}"; then -+ if test -x "../nx-X11/config/makedepend/makedepend"; then -+ MAKEDEPEND="../nx-X11/config/makedepend/makedepend" - fi - fi - ---- a/nxcompshad/Makefile.in -+++ b/nxcompshad/Makefile.in -@@ -179,9 +179,9 @@ depends: depend.status - depend: depend.status - - depend.status: -- if [ -x $(MAKEDEPEND) ] ; then \ -+ if [ -n "$(MAKEDEPEND)" ] && [ -x "$(MAKEDEPEND)" ] ; then \ - $(MAKEDEPEND) $(CXXINCLUDES) $(CCINCLUDES) \ -- $(DEPENDINCLUDES) -f Makefile $(MSRC) $(CSRC) $(CXXSRC) 2>/dev/null; \ -+ $(DEPENDINCLUDES) -f Makefile $(MSRC) $(CSRC) $(CXXSRC) 2>/dev/null; \ - fi - touch depend.status - diff --git a/debian/patches/0612_nxproxy_use-MAKEDEPEND-in-path.full+lite.patch b/debian/patches/0612_nxproxy_use-MAKEDEPEND-in-path.full+lite.patch deleted file mode 100644 index c43788c9c..000000000 --- a/debian/patches/0612_nxproxy_use-MAKEDEPEND-in-path.full+lite.patch +++ /dev/null @@ -1,47 +0,0 @@ -Description: Discover makedepend in $PATH. Especially important for MacPorts (OS X.) -Author: Clemens Lang <cal@macports.org> - v2: Mihai Moldovan <ionic@ionic.de> - ---- a/nxproxy/configure.in -+++ b/nxproxy/configure.in -@@ -167,18 +167,15 @@ fi - dnl Find makedepend somewhere. - - AC_SUBST(MAKEDEPEND) -+MAKEDEPEND="$(which makedepend)" - --if test -x "../nx-X11/config/makedepend/makedepend" ; then -- MAKEDEPEND=../nx-X11/config/makedepend/makedepend --else -- if test -x "/usr/X11R6/bin/makedepend" ; then -- MAKEDEPEND=/usr/X11R6/bin/makedepend -- else -- if test -x "/usr/openwin/bin/makedepend" ; then -- MAKEDEPEND=/usr/openwin/bin/makedepend -- else -- MAKEDEPEND=makedepend -- fi -+# Try to desperately find makedepend. -+# Set MAKEDEPEND to the shipped makedepend binary. This will not -+# exist in nx-libs-lite, though, in which case MAKEDEPEND -+# will stay empty. -+if test -z "${MAKEDEPEND}"; then -+ if test -x "../nx-X11/config/makedepend/makedepend"; then -+ MAKEDEPEND="../nx-X11/config/makedepend/makedepend" - fi - fi - ---- a/nxproxy/Makefile.in -+++ b/nxproxy/Makefile.in -@@ -80,9 +80,9 @@ depends: depend.status - depend: depend.status - - depend.status: -- if [ -x $(MAKEDEPEND) ] ; then \ -+ if [ -n "$(MAKEDEPEND)" ] && [ -x "$(MAKEDEPEND)" ] ; then \ - $(MAKEDEPEND) $(CXXINCLUDES) $(CCINCLUDES) \ -- $(DEPENDINCLUDES) -f Makefile $(MSRC) $(CSRC) $(CXXSRC) 2>/dev/null; \ -+ $(DEPENDINCLUDES) -f Makefile $(MSRC) $(CSRC) $(CXXSRC) 2>/dev/null; \ - fi - touch depend.status - diff --git a/debian/patches/0613_nxcomp_use-dynamiclib-flag-on-OS-X.full+lite.patch b/debian/patches/0613_nxcomp_use-dynamiclib-flag-on-OS-X.full+lite.patch deleted file mode 100644 index 04369f0d7..000000000 --- a/debian/patches/0613_nxcomp_use-dynamiclib-flag-on-OS-X.full+lite.patch +++ /dev/null @@ -1,19 +0,0 @@ -Description: Fix dynamic library linking on OS X. Use -dynamiclib instead of -bundle. -Author: Clemens Lang <cal@macports.org> - ---- a/nxcomp/configure.in -+++ b/nxcomp/configure.in -@@ -183,11 +183,11 @@ if test "$FreeBSD" = yes; then - fi - - dnl Under Darwin we don't have support for -soname option and --dnl we need the -bundle flag. Under Solaris, instead, we need -+dnl we need the -dynamiclib flag. Under Solaris, instead, we need - dnl the options -G -h. - - if test "$DARWIN" = yes; then -- LDFLAGS="$LDFLAGS -bundle" -+ LDFLAGS="$LDFLAGS -dynamiclib" - elif test "$SUN" = yes; then - LDFLAGS="$LDFLAGS -G -h \$(LIBLOAD)" - else diff --git a/debian/patches/0614_nxcompshad_use-dynamiclib-flag-on-OS-X.full.patch b/debian/patches/0614_nxcompshad_use-dynamiclib-flag-on-OS-X.full.patch deleted file mode 100644 index a75424511..000000000 --- a/debian/patches/0614_nxcompshad_use-dynamiclib-flag-on-OS-X.full.patch +++ /dev/null @@ -1,19 +0,0 @@ -Description: Fix dynamic library linking on OS X. Use -dynamiclib instead of -bundle. -Author: Clemens Lang <cal@macports.org> - ---- a/nxcompshad/configure.in -+++ b/nxcompshad/configure.in -@@ -175,11 +175,11 @@ if test "$FreeBSD" = yes; then - fi - - dnl Under Darwin we don't have support for -soname option and --dnl we need the -bundle flag. Under Solaris, instead, we need -+dnl we need the -dynamiclib flag. Under Solaris, instead, we need - dnl the options -G -h. - - if test "$DARWIN" = yes; then -- LDFLAGS="$LDFLAGS -bundle" -+ LDFLAGS="$LDFLAGS -dynamiclib" - elif test "$SUN" = yes; then - LDFLAGS="$LDFLAGS -G -h \$(LIBLOAD)" - else diff --git a/debian/patches/0620_nxcompext_use-correct-library-naming-scheme-on-OS-X.full.patch b/debian/patches/0620_nxcompext_use-correct-library-naming-scheme-on-OS-X.full.patch deleted file mode 100644 index 2a2ff66cb..000000000 --- a/debian/patches/0620_nxcompext_use-correct-library-naming-scheme-on-OS-X.full.patch +++ /dev/null @@ -1,56 +0,0 @@ -Description: Use the correct library naming scheme on OS X. It differs from other UNIX-based systems. -Author: Clemens Lang <cal@macports.org> -v2: Make sure only the first three digits are used for current_version. (Mihai Moldovan) - ---- a/nxcompext/Makefile.in -+++ b/nxcompext/Makefile.in -@@ -82,9 +82,18 @@ DEPENDINCLUDES = -I/usr/include/c++ -I/ - LIBRARY = Xcompext - - LIBNAME = lib$(LIBRARY) -+ifeq ($(shell uname),Darwin) -+LIBFULL = lib$(LIBRARY).$(VERSION).dylib -+LIBLOAD = lib$(LIBRARY).$(LIBVERSION).dylib -+LIBSHARED = lib$(LIBRARY).dylib -+COMP_VER = $(shell echo '$(VERSION)' | cut -d '.' -f 1-3) -+LIBFLAGS = -install_name $(libdir)/$(LIBLOAD) -compatibility_version $(LIBVERSION) -current_version $(COMP_VER) -+else - LIBFULL = lib$(LIBRARY).so.$(VERSION) - LIBLOAD = lib$(LIBRARY).so.$(LIBVERSION) - LIBSHARED = lib$(LIBRARY).so -+LIBFLAGS = -+endif - LIBARCHIVE = lib$(LIBRARY).a - - LIBCYGSHARED = cyg$(LIBRARY).dll -@@ -113,7 +122,7 @@ COBJ = $(CSRC:.c=.o) - CXXOBJ = $(CXXSRC:.cpp=.o) - - $(LIBFULL): $(CXXOBJ) $(COBJ) -- $(CXX) -o $@ $(LDFLAGS) $(CXXOBJ) $(COBJ) $(LIBS) -+ $(CXX) -o $@ $(LDFLAGS) $(LIBFLAGS) $(CXXOBJ) $(COBJ) $(LIBS) - - $(LIBLOAD): $(LIBFULL) - rm -f $(LIBLOAD) -@@ -159,8 +168,8 @@ install.lib: all - ./mkinstalldirs $(DESTDIR)${libdir} - ./mkinstalldirs $(DESTDIR)${includedir}/nx - $(INSTALL_DATA) $(LIBFULL) $(DESTDIR)${libdir} -- $(INSTALL_LINK) libXcompext.so.3 $(DESTDIR)${libdir} -- $(INSTALL_LINK) libXcompext.so $(DESTDIR)${libdir} -+ $(INSTALL_LINK) $(LIBLOAD) $(DESTDIR)${libdir} -+ $(INSTALL_LINK) $(LIBSHARED) $(DESTDIR)${libdir} - $(INSTALL_DATA) NX*.h $(DESTDIR)${includedir}/nx - echo "Running ldconfig tool, this may take a while..." && ldconfig || true - -@@ -172,8 +181,8 @@ uninstall.bin: - - uninstall.lib: - $(RM_FILE) $(DESTDIR)${libdir}/$(LIBFULL) -- $(RM_FILE) $(DESTDIR)${libdir}/libXcompext.so.3 -- $(RM_FILE) $(DESTDIR)${libdir}/libXcompext.so -+ $(RM_FILE) $(DESTDIR)${libdir}/$(LIBLOAD) -+ $(RM_FILE) $(DESTDIR)${libdir}/$(LIBSHARED) - $(RM_FILE) $(DESTDIR)${includedir}/nx/NXlib.h - $(RM_FILE) $(DESTDIR)${includedir}/nx/NXlibint.h - echo "Running ldconfig tool, this may take a while..." && ldconfig || true diff --git a/debian/patches/0621_nxcompshad_use-correct-library-naming-scheme-on-OS-X.full.patch b/debian/patches/0621_nxcompshad_use-correct-library-naming-scheme-on-OS-X.full.patch deleted file mode 100644 index 95767c90b..000000000 --- a/debian/patches/0621_nxcompshad_use-correct-library-naming-scheme-on-OS-X.full.patch +++ /dev/null @@ -1,60 +0,0 @@ -Description: Use the correct library naming scheme on OS X. It differs from other UNIX-based systems. -Author: Clemens Lang <cal@macports.org> -v2: Make sure only the first three digits are used for current_version. (Mihai Moldovan) - ---- a/nxcompshad/Makefile.in -+++ b/nxcompshad/Makefile.in -@@ -103,9 +103,18 @@ DEPENDINCLUDES = -I/usr/include/g++ -I/u - LIBRARY = Xcompshad - - LIBNAME = lib$(LIBRARY) -+ifeq ($(shell uname),Darwin) -+LIBFULL = lib$(LIBRARY).$(VERSION).dylib -+LIBLOAD = lib$(LIBRARY).$(LIBVERSION).dylib -+LIBSHARED = lib$(LIBRARY).dylib -+COMP_VER = $(shell echo '$(VERSION)' | cut -d '.' -f 1-3) -+LIBFLAGS = -install_name $(libdir)/$(LIBLOAD) -compatibility_version $(LIBVERSION) -current_version $(COMP_VER) -+else - LIBFULL = lib$(LIBRARY).so.$(VERSION) - LIBLOAD = lib$(LIBRARY).so.$(LIBVERSION) - LIBSHARED = lib$(LIBRARY).so -+LIBFLAGS = -+endif - LIBARCHIVE = lib$(LIBRARY).a - - MSRC = Main.c -@@ -146,7 +155,7 @@ all: depend $(LIBFULL) $(LIBLOAD) $(LIBS - endif - - $(LIBFULL): $(CXXOBJ) $(COBJ) -- $(CXX) -o $@ $(LDFLAGS) $(CXXOBJ) $(COBJ) $(LIBS) $(EXTRALIBS) -+ $(CXX) -o $@ $(LDFLAGS) $(LIBFLAGS) $(CXXOBJ) $(COBJ) $(LIBS) $(EXTRALIBS) - - $(LIBLOAD): $(LIBFULL) - rm -f $(LIBLOAD) -@@ -193,9 +202,9 @@ install.lib: all - $(INSTALL_DIR) $(DESTDIR)${libdir} - $(INSTALL_DIR) $(DESTDIR)${includedir}/nx - $(INSTALL_DATA) $(LIBFULL) $(DESTDIR)${libdir} -- $(INSTALL_LINK) libXcompshad.so.3 $(DESTDIR)${libdir} -- $(INSTALL_LINK) libXcompshad.so $(DESTDIR)${libdir} -- $(INSTALL_DATA) *.a $(DESTDIR)${libdir} -+ $(INSTALL_LINK) $(LIBLOAD) $(DESTDIR)${libdir} -+ $(INSTALL_LINK) $(LIBSHARED) $(DESTDIR)${libdir} -+ $(INSTALL_DATA) $(LIBARCHIVE) $(DESTDIR)${libdir} - $(INSTALL_DATA) *.h $(DESTDIR)${includedir}/nx - echo "Running ldconfig tool, this may take a while..." && ldconfig || true - -@@ -207,9 +216,9 @@ uninstall.bin: - - uninstall.lib: - $(RM_FILE) $(DESTDIR)${libdir}/$(LIBFULL) -- $(RM_FILE) $(DESTDIR)${libdir}/libXcompshad.so.3 -- $(RM_FILE) $(DESTDIR)${libdir}/libXcompshad.so -- $(RM_FILE) $(DESTDIR)${libdir}/libXcompshad.a -+ $(RM_FILE) $(DESTDIR)${libdir}/$(LIBLOAD) -+ $(RM_FILE) $(DESTDIR)${libdir}/$(LIBSHARED) -+ $(RM_FILE) $(DESTDIR)${libdir}/$(LIBARCHIVE) - for header in *.h; do $(RM_FILE) $(DESTDIR)${includedir}/nx/$$header; done - $(RM_DIR) $(DESTDIR)${libdir}/nx/ - $(RM_DIR) $(DESTDIR)${includedir}/nx/ diff --git a/debian/patches/0630_nx-X11_fix-underlinking-dlopen-dlsym.full.patch b/debian/patches/0630_nx-X11_fix-underlinking-dlopen-dlsym.full.patch deleted file mode 100644 index 6c0ebca64..000000000 --- a/debian/patches/0630_nx-X11_fix-underlinking-dlopen-dlsym.full.patch +++ /dev/null @@ -1,15 +0,0 @@ -Description: Link to libdl to fix undefined references to 'dlopen' and 'dlsym'. -Author: Bernard Cafarelli <voyageur@gentoo.org> -v2: generally link to libdl in all of nx-X11. (Mike Gabriel) - ---- a/nx-X11/config/cf/lnxLib.tmpl -+++ b/nx-X11/config/cf/lnxLib.tmpl -@@ -17,7 +17,7 @@ XMULIB = $(XMULIBONLY) $(XTOOLLIB) $(XLI - #define XawClientLibs $(XAWLIB) $(XMULIBONLY) $(XTOOLLIB) $(XPMLIB) $(EXTRAXAWCLIENTLIBS) $(XLIB) - #endif - --#define SharedX11Reqs -+#define SharedX11Reqs $(LDPRELIB) -ldl - #define SharedXlibi18nReqs $(LDPRELIB) $(XONLYLIB) - #define SharedOldXReqs $(LDPRELIB) $(XONLYLIB) - #define SharedXtReqs $(LDPRELIB) $(XONLYLIB) $(SMLIB) $(ICELIB) diff --git a/debian/patches/0640_nx-X11_fix-underlinking-libNX_Xcomposite_damage_fixes.full.patch b/debian/patches/0640_nx-X11_fix-underlinking-libNX_Xcomposite_damage_fixes.full.patch deleted file mode 100644 index c24d311d4..000000000 --- a/debian/patches/0640_nx-X11_fix-underlinking-libNX_Xcomposite_damage_fixes.full.patch +++ /dev/null @@ -1,15 +0,0 @@ -Description: Prevent underlinking by linking to libNX_X{11,damage,fixes). -Author: Mike Gabriel <mike.gabriel@das-netzwerkteam.de> - ---- a/nx-X11/config/cf/lnxLib.tmpl -+++ b/nx-X11/config/cf/lnxLib.tmpl -@@ -61,6 +61,9 @@ XMULIB = $(XMULIBONLY) $(XTOOLLIB) $(XLI - #define SharedXxf86vmReqs $(LDPRELIB) $(XLIB) - #define SharedxkbfileReqs $(LDPRELIB) $(XONLYLIB) - #define SharedxkbuiReqs $(LDPRELIB) $(XKBFILELIB) $(XONLYLIB) -+#define SharedXfixesReqs $(LDPRELIB) $(XLIB) -+#define SharedXdamageReqs $(LDPRELIB) $(XLIB) -+#define SharedXcompositeReqs $(LDPRELIB) $(XDAMAGELIB) $(XFIXESLIB) $(XLIB) - - #else /* UseElfFormat */ - diff --git a/debian/patches/0650_nxcompshad_link-to-NX_Xext.full.patch b/debian/patches/0650_nxcompshad_link-to-NX_Xext.full.patch deleted file mode 100644 index c147f15b7..000000000 --- a/debian/patches/0650_nxcompshad_link-to-NX_Xext.full.patch +++ /dev/null @@ -1,14 +0,0 @@ -Description: Prevent underlinking by linking to libNX_Xext. -Author: Mike Gabriel <mike.gabriel@das-netzwerkteam.de> - ---- a/nxcompshad/Makefile.in -+++ b/nxcompshad/Makefile.in -@@ -148,7 +148,7 @@ all: depend $(LIBARCHIVE) $(LIBDLL) - - else - --EXTRALIBS = -lNX_Xtst -lNX_Xrandr -lNX_Xdamage -+EXTRALIBS = -lNX_Xext -lNX_Xtst -lNX_Xrandr -lNX_Xdamage - - all: depend $(LIBFULL) $(LIBLOAD) $(LIBSHARED) $(LIBARCHIVE) - diff --git a/debian/patches/0660_nxcomp_fix-negotiation-in-stage-10-error.full+lite.patch b/debian/patches/0660_nxcomp_fix-negotiation-in-stage-10-error.full+lite.patch deleted file mode 100644 index 3d4c584fb..000000000 --- a/debian/patches/0660_nxcomp_fix-negotiation-in-stage-10-error.full+lite.patch +++ /dev/null @@ -1,67 +0,0 @@ -commit f982cbc85e9ffff24a6a348c3637b54a7e8cbc34 -Author: Vadim Troshchinskiy <vtroshchinskiy@qindel.com> -Date: Wed May 20 15:47:45 2015 +0200 - -Fix negotiation in stage 10 error - -Problem fixed by adding a select() call to implement a timeout, -and retrying writes if needed. - -v2: backport to nx-libs 3.5.0.x (Mihai Moldovan) - ---- a/nxcomp/Loop.cpp -+++ b/nxcomp/Loop.cpp -@@ -8073,16 +8073,52 @@ int ReadRemoteData(int fd, char *buffer, - int WriteLocalData(int fd, const char *buffer, int size) - { - int position = 0; -+ int ret = 0; -+ fd_set writeSet; -+ struct timeval selectTs = {30, 0}; - - while (position < size) - { -+ -+ // A write to a non-blocking socket may fail with EAGAIN. The problem is -+ // that cache data is done in several writes, and there's no easy way -+ // to handle failure without rewriting a significant amount of code. -+ // -+ // Bailing out of the outer loop would result in restarting the sending -+ // of the entire cache list, which would confuse the other side. -+ -+ FD_ZERO(&writeSet); -+ FD_SET(fd, &writeSet); -+ -+ ret = select(fd+1, NULL, &writeSet, NULL, &selectTs); -+ -+ #ifdef DEBUG -+ *logofs << "Loop: WriteLocalData: select() returned with a code of " << ret << " and remaining timeout of " -+ << selectTs.tv_sec << " sec, " << selectTs.tv_usec << "usec\n" << logofs_flush; -+ #endif -+ -+ if ( ret < 0 ) -+ { -+ *logofs << "Loop: Error in select() when writing data to FD#" << fd << ": " << strerror(EGET()) << "\n" << logofs_flush; -+ -+ if ( EGET() == EINTR ) -+ continue; -+ -+ return -1; -+ } -+ else if ( ret == 0 ) -+ { -+ *logofs << "Loop: Timeout expired in select() when writing data to FD#" << fd << ": " << strerror(EGET()) << "\n" << logofs_flush; -+ return -1; -+ } -+ - int result = write(fd, buffer + position, size - position); - - getNewTimestamp(); - - if (result <= 0) - { -- if (result < 0 && EGET() == EINTR) -+ if (result < 0 && (EGET() == EINTR || EGET() == EAGAIN || EGET() == EWOULDBLOCK)) - { - continue; - } diff --git a/debian/patches/0990_fix-DEBUG-and-TEST-builds.full.patch b/debian/patches/0990_fix-DEBUG-and-TEST-builds.full.patch deleted file mode 100644 index 4b88e157a..000000000 --- a/debian/patches/0990_fix-DEBUG-and-TEST-builds.full.patch +++ /dev/null @@ -1,328 +0,0 @@ -Author: Mihai Moldovan <ionic@ionic.de> -Description: Several fixes for building debug versions of NX -Abstract: - (1) In nx-X11/programs/Xserver/dix: - . - Fix several compile errors when specifying -DDEBUG globally. Previous GCC - versions were more liberal and the code thus compiled. - . - Also initialize/reset a count variable correctly. - . - . - (2) In nx-X11/programs/Xserver/hw/nxagent/Render.c: - . - Check for pSrc->pDrawable to exist instead of having nxagent segfault when - it does not. - . - This enables the possibility of compiling all nxagent modules in TEST mode. - ---- a/nx-X11/programs/Xserver/dix/dixfonts.c -+++ b/nx-X11/programs/Xserver/dix/dixfonts.c -@@ -2203,7 +2203,7 @@ dump_char_ascii(CharInfoPtr cip) - byte = 0; - for (l = 0; l <= (cip->metrics.rightSideBearing - - cip->metrics.leftSideBearing); l++) { -- if (maskTab[l & 7] & row[l >> 3]) -+ if (maskTab[l & 7] & (((int*)row)[l >> 3])) - putchar('X'); - else - putchar('.'); ---- a/nx-X11/programs/Xserver/hw/nxagent/Render.c -+++ b/nx-X11/programs/Xserver/hw/nxagent/Render.c -@@ -946,7 +946,7 @@ void nxagentChangePicture(PicturePtr pPi - - #ifdef TEST - -- if (pPicture -> pDrawable -> type == DRAWABLE_PIXMAP) -+ if (pPicture && pPicture->pDrawable && pPicture -> pDrawable -> type == DRAWABLE_PIXMAP) - { - fprintf(stderr, "nxagentChangePicture: %sPixmap [%p] Picture [%p][%p].\n", - nxagentIsShmPixmap((PixmapPtr)pPicture -> pDrawable) ? "Shared " : "", -@@ -1008,7 +1008,7 @@ void nxagentComposite(CARD8 op, PictureP - - #ifdef DEBUG - -- if (pSrc -> pDrawable != NULL) -+ if (pSrc && pSrc -> pDrawable != NULL) - { - fprintf(stderr, "nxagentComposite: Source Picture [%lu][%p] with drawable [%s%s][%p].\n", - nxagentPicturePriv(pSrc) -> picture, (void *) pSrc, -@@ -1018,14 +1018,16 @@ void nxagentComposite(CARD8 op, PictureP - (void *) pSrc -> pDrawable); - } - -- fprintf(stderr, "nxagentComposite: Destination Picture [%lu][%p] with drawable [%s%s][%p].\n", -- nxagentPicturePriv(pDst) -> picture, (void *) pDst, -- (pDst -> pDrawable -> type == DRAWABLE_PIXMAP && -- nxagentIsShmPixmap((PixmapPtr) pDst -> pDrawable)) ? "Shared " : "", -- pDst -> pDrawable -> type == DRAWABLE_PIXMAP ? "Pixmap" : "Window", -- (void *) pDst -> pDrawable); -+ if (pDst && pDst->pDrawable) { -+ fprintf(stderr, "nxagentComposite: Destination Picture [%lu][%p] with drawable [%s%s][%p].\n", -+ nxagentPicturePriv(pDst) -> picture, (void *) pDst, -+ (pDst -> pDrawable -> type == DRAWABLE_PIXMAP && -+ nxagentIsShmPixmap((PixmapPtr) pDst -> pDrawable)) ? "Shared " : "", -+ pDst -> pDrawable -> type == DRAWABLE_PIXMAP ? "Pixmap" : "Window", -+ (void *) pDst -> pDrawable); -+ } - -- if (pMask) -+ if (pMask && pMask->pDrawable) - { - fprintf(stderr, "nxagentComposite: Mask Picture [%lu][%p] with drawable [%s%s][%p].\n", - nxagentPicturePriv(pMask) -> picture, (void *) pMask, -@@ -1042,12 +1044,13 @@ void nxagentComposite(CARD8 op, PictureP - pDstRegion = nxagentCreateRegion(pDst -> pDrawable, NULL, xDst, yDst, width, height); - - #ifdef TEST -- fprintf(stderr, "nxagentComposite: WARNING! Prevented operation on region [%d,%d,%d,%d] " -- "for drawable at [%p] with type [%s].\n", pDstRegion -> extents.x1, -- pDstRegion -> extents.y1, pDstRegion -> extents.x2, pDstRegion -> extents.y2, -- (void *) pDst -> pDrawable, -- pDst -> pDrawable -> type == DRAWABLE_PIXMAP ? "pixmap" : "window"); -- -+ if ((pDstRegion) && (pDst && pDst->pDrawable)) { -+ fprintf(stderr, "nxagentComposite: WARNING! Prevented operation on region [%d,%d,%d,%d] " -+ "for drawable at [%p] with type [%s].\n", pDstRegion -> extents.x1, -+ pDstRegion -> extents.y1, pDstRegion -> extents.x2, pDstRegion -> extents.y2, -+ (void *) pDst -> pDrawable, -+ pDst -> pDrawable -> type == DRAWABLE_PIXMAP ? "pixmap" : "window"); -+ } - #endif - - nxagentMarkCorruptedRegion(pDst -> pDrawable, pDstRegion); -@@ -1176,10 +1179,12 @@ void nxagentGlyphs(CARD8 op, PicturePtr - } - - #ifdef TEST -- fprintf(stderr, "nxagentGlyphs: Called with source [%s][%p] destination [%s][%p] and size id [%d].\n", -- (pSrc -> pDrawable -> type == DRAWABLE_PIXMAP ? "pixmap" : "window"), (void *) pSrc, -- (pDst -> pDrawable -> type == DRAWABLE_PIXMAP ? "pixmap" : "window"), (void *) pDst, -- sizeID); -+ if ((pSrc && pSrc->pDrawable) && (pDst && pDst->pDrawable)) { -+ fprintf(stderr, "nxagentGlyphs: Called with source [%s][%p] destination [%s][%p] and size id [%d].\n", -+ (pSrc -> pDrawable -> type == DRAWABLE_PIXMAP ? "pixmap" : "window"), (void *) pSrc, -+ (pDst -> pDrawable -> type == DRAWABLE_PIXMAP ? "pixmap" : "window"), (void *) pDst, -+ sizeID); -+ } - #endif - - pForm = NULL; -@@ -1264,9 +1269,11 @@ void nxagentGlyphs(CARD8 op, PicturePtr - nxagentDrawableStatus(pSrc -> pDrawable) == NotSynchronized) - { - #ifdef TEST -- fprintf(stderr, "nxagentGlyphs: Synchronizing source [%s] at [%p].\n", -- pSrc -> pDrawable -> type == DRAWABLE_PIXMAP ? "pixmap" : "window", -- (void *) pSrc -> pDrawable); -+ if (pSrc && pSrc->pDrawable) { -+ fprintf(stderr, "nxagentGlyphs: Synchronizing source [%s] at [%p].\n", -+ pSrc -> pDrawable -> type == DRAWABLE_PIXMAP ? "pixmap" : "window", -+ (void *) pSrc -> pDrawable); -+ } - #endif - - /* -@@ -1280,12 +1287,14 @@ void nxagentGlyphs(CARD8 op, PicturePtr - if (pSrc -> repeat == 1 || nxagentGlyphsExtents == NullBox) - { - #ifdef DEBUG -- fprintf(stderr, "nxagentGlyphs: Synchronizing source [%s] at [%p] " -- "with geometry [%d,%d,%d,%d].\n", -- (pSrc -> pDrawable -> type == DRAWABLE_PIXMAP ? "pixmap" : "window"), -- (void *) pSrc -> pDrawable, pSrc -> pDrawable -> x, pSrc -> pDrawable -> y, -- pSrc -> pDrawable -> x + pSrc -> pDrawable -> width, -- pSrc -> pDrawable -> y + pSrc -> pDrawable -> height); -+ if (pSrc && pSrc->pDrawable) { -+ fprintf(stderr, "nxagentGlyphs: Synchronizing source [%s] at [%p] " -+ "with geometry [%d,%d,%d,%d].\n", -+ (pSrc -> pDrawable -> type == DRAWABLE_PIXMAP ? "pixmap" : "window"), -+ (void *) pSrc -> pDrawable, pSrc -> pDrawable -> x, pSrc -> pDrawable -> y, -+ pSrc -> pDrawable -> x + pSrc -> pDrawable -> width, -+ pSrc -> pDrawable -> y + pSrc -> pDrawable -> height); -+ } - #endif - - nxagentSynchronizeBox(pSrc -> pDrawable, NullBox, NEVER_BREAK); -@@ -1293,12 +1302,14 @@ void nxagentGlyphs(CARD8 op, PicturePtr - else - { - #ifdef DEBUG -- fprintf(stderr, "nxagentGlyphs: Synchronizing region [%d,%d,%d,%d] of source [%s] at [%p] " -- "with geometry [%d,%d,%d,%d].\n", glyphBox.x1, glyphBox.y1, glyphBox.x2, glyphBox.y2, -- (pSrc -> pDrawable -> type == DRAWABLE_PIXMAP ? "pixmap" : "window"), -- (void *) pSrc -> pDrawable, pSrc -> pDrawable -> x, pSrc -> pDrawable -> y, -- pSrc -> pDrawable -> x + pSrc -> pDrawable -> width, -- pSrc -> pDrawable -> y + pSrc -> pDrawable -> height); -+ if (pSrc && pSrc->pDrawable) { -+ fprintf(stderr, "nxagentGlyphs: Synchronizing region [%d,%d,%d,%d] of source [%s] at [%p] " -+ "with geometry [%d,%d,%d,%d].\n", glyphBox.x1, glyphBox.y1, glyphBox.x2, glyphBox.y2, -+ (pSrc -> pDrawable -> type == DRAWABLE_PIXMAP ? "pixmap" : "window"), -+ (void *) pSrc -> pDrawable, pSrc -> pDrawable -> x, pSrc -> pDrawable -> y, -+ pSrc -> pDrawable -> x + pSrc -> pDrawable -> width, -+ pSrc -> pDrawable -> y + pSrc -> pDrawable -> height); -+ } - #endif - - nxagentSynchronizeBox(pSrc -> pDrawable, &glyphBox, NEVER_BREAK); -@@ -1314,20 +1325,24 @@ void nxagentGlyphs(CARD8 op, PicturePtr - nxagentDrawableStatus(pDst -> pDrawable) == NotSynchronized) - { - #ifdef TEST -- fprintf(stderr, "nxagentGlyphs: Synchronizing destination [%s] at [%p].\n", -- pDst -> pDrawable -> type == DRAWABLE_PIXMAP ? "pixmap" : "window", -- (void *) pDst -> pDrawable); -+ if (pDst && pDst->pDrawable) { -+ fprintf(stderr, "nxagentGlyphs: Synchronizing destination [%s] at [%p].\n", -+ pDst -> pDrawable -> type == DRAWABLE_PIXMAP ? "pixmap" : "window", -+ (void *) pDst -> pDrawable); -+ } - #endif - - if (nxagentGlyphsExtents == NullBox) - { - #ifdef DEBUG -- fprintf(stderr, "nxagentGlyphs: Synchronizing destination [%s] at [%p] " -- "with geometry [%d,%d,%d,%d].\n", -- (pDst -> pDrawable -> type == DRAWABLE_PIXMAP ? "pixmap" : "window"), -- (void *) pDst -> pDrawable, pDst -> pDrawable -> x, pDst -> pDrawable -> y, -- pDst -> pDrawable -> x + pDst -> pDrawable -> width, -- pDst -> pDrawable -> y + pDst -> pDrawable -> height); -+ if (pDst && pDst->pDrawable) { -+ fprintf(stderr, "nxagentGlyphs: Synchronizing destination [%s] at [%p] " -+ "with geometry [%d,%d,%d,%d].\n", -+ (pDst -> pDrawable -> type == DRAWABLE_PIXMAP ? "pixmap" : "window"), -+ (void *) pDst -> pDrawable, pDst -> pDrawable -> x, pDst -> pDrawable -> y, -+ pDst -> pDrawable -> x + pDst -> pDrawable -> width, -+ pDst -> pDrawable -> y + pDst -> pDrawable -> height); -+ } - #endif - - nxagentSynchronizeBox(pDst -> pDrawable, NullBox, NEVER_BREAK); -@@ -1335,12 +1350,14 @@ void nxagentGlyphs(CARD8 op, PicturePtr - else - { - #ifdef DEBUG -- fprintf(stderr, "nxagentGlyphs: Synchronizing region [%d,%d,%d,%d] of destination [%s] at [%p] " -- "with geometry [%d,%d,%d,%d].\n", glyphBox.x1, glyphBox.y1, glyphBox.x2, glyphBox.y2, -- (pDst -> pDrawable -> type == DRAWABLE_PIXMAP ? "pixmap" : "window"), -- (void *) pDst -> pDrawable, pDst -> pDrawable -> x, pDst -> pDrawable -> y, -- pDst -> pDrawable -> x + pDst -> pDrawable -> width, -- pDst -> pDrawable -> y + pDst -> pDrawable -> height); -+ if (pDst && pDst->pDrawable) { -+ fprintf(stderr, "nxagentGlyphs: Synchronizing region [%d,%d,%d,%d] of destination [%s] at [%p] " -+ "with geometry [%d,%d,%d,%d].\n", glyphBox.x1, glyphBox.y1, glyphBox.x2, glyphBox.y2, -+ (pDst -> pDrawable -> type == DRAWABLE_PIXMAP ? "pixmap" : "window"), -+ (void *) pDst -> pDrawable, pDst -> pDrawable -> x, pDst -> pDrawable -> y, -+ pDst -> pDrawable -> x + pDst -> pDrawable -> width, -+ pDst -> pDrawable -> y + pDst -> pDrawable -> height); -+ } - #endif - - nxagentSynchronizeBox(pDst -> pDrawable, &glyphBox, NEVER_BREAK); -@@ -1355,9 +1372,11 @@ void nxagentGlyphs(CARD8 op, PicturePtr - nxagentSetDrawableContainGlyphs(pDst -> pDrawable, 1); - - #ifdef TEST -- fprintf(stderr, "nxagentGlyphs: Glyph flag set on drawable [%s][%p].\n", -- pDst -> pDrawable -> type == DRAWABLE_PIXMAP ? "pixmap" : "window", -- (void *) pDst -> pDrawable); -+ if (pDst && pDst->pDrawable) { -+ fprintf(stderr, "nxagentGlyphs: Glyph flag set on drawable [%s][%p].\n", -+ pDst -> pDrawable -> type == DRAWABLE_PIXMAP ? "pixmap" : "window", -+ (void *) pDst -> pDrawable); -+ } - #endif - - #ifdef SPLIT_GLYPH_LISTS -@@ -1569,9 +1588,11 @@ void nxagentCompositeRects(CARD8 op, Pic - } - - #ifdef TEST -- fprintf(stderr, "nxagentCompositeRects: Called for picture at [%p] with [%s] at [%p].\n", -- (void *) pDst, (pDst -> pDrawable -> type == DRAWABLE_PIXMAP ? "pixmap" : "window"), -- (void *) pDst -> pDrawable); -+ if (pDst && pDst->pDrawable) { -+ fprintf(stderr, "nxagentCompositeRects: Called for picture at [%p] with [%s] at [%p].\n", -+ (void *) pDst, (pDst -> pDrawable -> type == DRAWABLE_PIXMAP ? "pixmap" : "window"), -+ (void *) pDst -> pDrawable); -+ } - #endif - - /* -@@ -1678,10 +1699,11 @@ FIXME: Is this useful or just a waste of - - #ifdef TEST - -- fprintf(stderr, "nxagentTrapezoids: Source is a [%s] of geometry [%d,%d].\n", -- (pSrc -> pDrawable -> type == DRAWABLE_PIXMAP ? "pixmap" : "window"), -- pSrc -> pDrawable -> width, pSrc -> pDrawable -> height); -- -+ if (pSrc && pSrc->pDrawable) { -+ fprintf(stderr, "nxagentTrapezoids: Source is a [%s] of geometry [%d,%d].\n", -+ (pSrc -> pDrawable -> type == DRAWABLE_PIXMAP ? "pixmap" : "window"), -+ pSrc -> pDrawable -> width, pSrc -> pDrawable -> height); -+ } - if (pSrc ->pDrawable != pDst -> pDrawable) - { - fprintf(stderr, "nxagentTrapezoids: Destination is a [%s] of geometry [%d,%d].\n", -@@ -1702,11 +1724,13 @@ FIXME: Is this useful or just a waste of - nxagentTrapezoidExtents) == rgnIN) - { - #ifdef TEST -- fprintf(stderr, "nxagentTrapezoids: WARNING! Prevented operation on region [%d,%d,%d,%d] already dirty " -- "for drawable [%s][%p].\n", nxagentTrapezoidExtents -> x1, nxagentTrapezoidExtents -> y1, -- nxagentTrapezoidExtents -> x2, nxagentTrapezoidExtents -> y2, -- pDst -> pDrawable -> type == DRAWABLE_PIXMAP ? "pixmap" : "window", -- (void *) pDst -> pDrawable); -+ if (pDst && pDst->pDrawable) { -+ fprintf(stderr, "nxagentTrapezoids: WARNING! Prevented operation on region [%d,%d,%d,%d] already dirty " -+ "for drawable [%s][%p].\n", nxagentTrapezoidExtents -> x1, nxagentTrapezoidExtents -> y1, -+ nxagentTrapezoidExtents -> x2, nxagentTrapezoidExtents -> y2, -+ pDst -> pDrawable -> type == DRAWABLE_PIXMAP ? "pixmap" : "window", -+ (void *) pDst -> pDrawable); -+ } - #endif - - if (pDst -> pDrawable -> type == DRAWABLE_PIXMAP) -@@ -1732,11 +1756,13 @@ FIXME: Is this useful or just a waste of - nxagentTrapezoidExtents -> y2 - nxagentTrapezoidExtents -> y1); - - #ifdef TEST -- fprintf(stderr, "nxagentTrapezoids: WARNING! Prevented operation on region [%d,%d,%d,%d] " -- "for drawable [%s][%p].\n", pDstRegion -> extents.x1, pDstRegion -> extents.y1, -- pDstRegion -> extents.x2, pDstRegion -> extents.y2, -- pDst -> pDrawable -> type == DRAWABLE_PIXMAP ? "pixmap" : "window", -- (void *) pDst -> pDrawable); -+ if (pDst && pDst->pDrawable) { -+ fprintf(stderr, "nxagentTrapezoids: WARNING! Prevented operation on region [%d,%d,%d,%d] " -+ "for drawable [%s][%p].\n", pDstRegion -> extents.x1, pDstRegion -> extents.y1, -+ pDstRegion -> extents.x2, pDstRegion -> extents.y2, -+ pDst -> pDrawable -> type == DRAWABLE_PIXMAP ? "pixmap" : "window", -+ (void *) pDst -> pDrawable); -+ } - #endif - - nxagentMarkCorruptedRegion(pDst -> pDrawable, pDstRegion); ---- a/nx-X11/programs/Xserver/hw/nxagent/X/NXdispatch.c -+++ b/nx-X11/programs/Xserver/hw/nxagent/X/NXdispatch.c -@@ -735,7 +735,7 @@ Reply Total Cached Bits In Bits Out - - client->sequence++; - #ifdef DEBUG -- if (client->requestLogIndex == MAX_REQUEST_LOG) -+ if ((client->requestLogIndex >= MAX_REQUEST_LOG) || (client->requestLogIndex <= 0)) - client->requestLogIndex = 0; - client->requestLog[client->requestLogIndex] = MAJOROP; - client->requestLogIndex++; ---- a/nx-X11/programs/Xserver/hw/nxagent/X/NXdixfonts.c -+++ b/nx-X11/programs/Xserver/hw/nxagent/X/NXdixfonts.c -@@ -2351,7 +2351,7 @@ dump_char_ascii(CharInfoPtr cip) - byte = 0; - for (l = 0; l <= (cip->metrics.rightSideBearing - - cip->metrics.leftSideBearing); l++) { -- if (maskTab[l & 7] & row[l >> 3]) -+ if (maskTab[l & 7] & (((int *)row)[l >> 3])) - putchar('X'); - else - putchar('.'); diff --git a/debian/patches/0991_fix-hr-typos.full+lite.patch b/debian/patches/0991_fix-hr-typos.full+lite.patch deleted file mode 100644 index ca5bc6fe1..000000000 --- a/debian/patches/0991_fix-hr-typos.full+lite.patch +++ /dev/null @@ -1,97 +0,0 @@ -Description: Fix several typos in nxcomp -Author: Mike Gabriel <mike.gabriel@das-netzwerkteam.de> - ---- a/nxcomp/CHANGELOG -+++ b/nxcomp/CHANGELOG -@@ -668,7 +668,7 @@ nxcomp-2.0.0-70 - - nxcomp-2.0.0-69 - --- Changed the format of the persistent cache to accomodate the new -+- Changed the format of the persistent cache to accommodate the new - encoding of the render opcodes. Caches from the 1.4.0 and 1.5.0 - should be still loaded and saved correctly when connected to and - old version of the library. ---- a/nxcomp/ClientReadBuffer.cpp -+++ b/nxcomp/ClientReadBuffer.cpp -@@ -29,7 +29,7 @@ unsigned int ClientReadBuffer::suggested - // - // Even if the pending data is not - // enough to make a complete message, -- // resize the buffer to accomodate -+ // resize the buffer to accommodate - // it all. - // - ---- a/nxcomp/EncodeBuffer.cpp -+++ b/nxcomp/EncodeBuffer.cpp -@@ -505,12 +505,12 @@ void EncodeBuffer::growBuffer(unsigned i - { - #ifdef PANIC - *logofs << "EncodeBuffer: PANIC! Error in context [C] " -- << "growing buffer to accomodate " << numBytes -+ << "growing buffer to accommodate " << numBytes - << " bytes .\n" << logofs_flush; - #endif - - cerr << "Error" << ": Error in context [C] " -- << "growing encode buffer to accomodate " -+ << "growing encode buffer to accommodate " - << numBytes << " bytes.\n"; - - HandleAbort(); ---- a/nxcomp/GenericChannel.cpp -+++ b/nxcomp/GenericChannel.cpp -@@ -210,7 +210,7 @@ int GenericChannel::handleRead(EncodeBuf - // All data has been read from the read buffer. - // We still need to mark the end of the encode - // buffer just before sending the frame. This -- // allows us to accomodate multiple reads in -+ // allows us to accommodate multiple reads in - // a single frame. - // - ---- a/nxcomp/ProxyReadBuffer.cpp -+++ b/nxcomp/ProxyReadBuffer.cpp -@@ -50,7 +50,7 @@ unsigned int ProxyReadBuffer::suggestedL - // - // Even if the readable data is not - // enough to make a complete message, -- // resize the buffer to accomodate -+ // resize the buffer to accommodate - // it all. - // - ---- a/nxcomp/ServerReadBuffer.cpp -+++ b/nxcomp/ServerReadBuffer.cpp -@@ -46,7 +46,7 @@ unsigned int ServerReadBuffer::suggested - // - // Even if the readable data is not - // enough to make a complete message, -- // resize the buffer to accomodate -+ // resize the buffer to accommodate - // it all. - // - ---- a/nxcomp/Transport.h -+++ b/nxcomp/Transport.h -@@ -226,7 +226,7 @@ class Transport - protected: - - // -- // Make room in the buffer to accomodate -+ // Make room in the buffer to accommodate - // at least size bytes. - // - ---- a/nxcomp/Types.h -+++ b/nxcomp/Types.h -@@ -179,7 +179,7 @@ typedef set < File *, T_older > T_files; - typedef list < int > T_list; - - // --// Used to accomodate data to be read and -+// Used to accommodate data to be read and - // written to a socket. - // - diff --git a/debian/patches/0991_fix-hr-typos.full.patch b/debian/patches/0991_fix-hr-typos.full.patch deleted file mode 100644 index 69f53aaf0..000000000 --- a/debian/patches/0991_fix-hr-typos.full.patch +++ /dev/null @@ -1,36 +0,0 @@ -Description: Fix several typos in nx-X11 -Author: Mike Gabriel <mike.gabriel@das-netzwerkteam.de> - ---- a/nx-X11/extras/Mesa/src/mesa/main/debug.c -+++ b/nx-X11/extras/Mesa/src/mesa/main/debug.c -@@ -43,7 +43,7 @@ const char *_mesa_prim_name[GL_POLYGON+4 - "GL_QUAD_STRIP", - "GL_POLYGON", - "outside begin/end", -- "inside unkown primitive", -+ "inside unknown primitive", - "unknown state" - }; - ---- a/nx-X11/extras/Mesa/src/mesa/shader/arbprogparse.c -+++ b/nx-X11/extras/Mesa/src/mesa/shader/arbprogparse.c -@@ -4106,7 +4106,7 @@ _mesa_parse_arb_program (GLcontext * ctx - if (*inst++ != REVISION) { - _mesa_set_program_error (ctx, 0, "Grammar version mismatch"); - _mesa_error(ctx, GL_INVALID_OPERATION, -- "glProgramStringARB(Grammar verison mismatch)"); -+ "glProgramStringARB(Grammar version mismatch)"); - err = GL_TRUE; - } - else { ---- a/nx-X11/ChangeLog.X.org -+++ b/nx-X11/ChangeLog.X.org -@@ -12733,7 +12733,7 @@ Mon Jan 3 12:45:10 2005 Søren Sandman - * programs/xkill/xkill.c: (get_window_id): - Changed cursor for the 'kill' action from XC_draped_box to - XC_Pirate. If you don't like it we can change it back -- (original author unkown). -+ (original author unknown). - - * programs/xman/vendor.h: - Added 'pic' to the man page rendering command pipeline diff --git a/debian/patches/0992_fix-DEBUG-TEST-DUMP-FLUSH-TOKEN-PING-et-al-builds.full+lite.patch b/debian/patches/0992_fix-DEBUG-TEST-DUMP-FLUSH-TOKEN-PING-et-al-builds.full+lite.patch deleted file mode 100644 index 747bf78da..000000000 --- a/debian/patches/0992_fix-DEBUG-TEST-DUMP-FLUSH-TOKEN-PING-et-al-builds.full+lite.patch +++ /dev/null @@ -1,46 +0,0 @@ -From cf4ed917e2d7d6b3683ba1aa4ea4662538b69516 Mon Sep 17 00:00:00 2001 -From: Nito Martinez <Nito@Qindel.ES> -Date: Fri, 15 May 2015 22:40:05 +0200 -Subject: [PATCH] This patch is some code fixes to debug some debuging macro - usage in the NX code. - -Particularly the following macros have been tested -DTEST -DDEBUG -DDUMP -DFLUSH -DTOKEN -DSPLIT -DPING -DMIXED -DMATCH -DTIME ---- - nxcomp/Agent.h | 2 +- - nxcomp/ClearArea.cpp | 2 +- - nxcomp/Proxy.cpp | 2 +- - 3 files changed, 3 insertions(+), 3 deletions(-) - ---- a/nxcomp/Agent.h -+++ b/nxcomp/Agent.h -@@ -217,7 +217,7 @@ class Agent - - #if defined(TEST) || defined(INFO) - *logofs << "Agent: proxyCanRead() is " -- << ((int) FD_ISSET(proxy -> getFd(), &readWorkSet) -+ << ((int) FD_ISSET(proxy -> getFd(), &readWorkSet)) - << ".\n" << logofs_flush; - #endif - ---- a/nxcomp/ClearArea.cpp -+++ b/nxcomp/ClearArea.cpp -@@ -92,7 +92,7 @@ void ClearAreaStore::dumpIdentity(const - - ClearAreaMessage *clearArea = (ClearAreaMessage *) message; - -- *logofs << name() << ": Identity exposures " << clearArea -> (unsigned int) exposures -+ *logofs << name() << ": Identity exposures " << (unsigned int) clearArea -> exposures - << ", window " << clearArea -> window << ", x " << clearArea -> x - << ", y " << clearArea -> y << ", width " << clearArea -> width - << ", height " << clearArea -> height << ", size " << clearArea -> size_ ---- a/nxcomp/Proxy.cpp -+++ b/nxcomp/Proxy.cpp -@@ -5176,7 +5176,7 @@ char *Proxy::handleSaveAllStores(const c - - *(cacheDumpName + DEFAULT_STRING_LENGTH - 1) = '\0'; - -- mode_t fileMode = umask(0077); -+ fileMode = umask(0077); - - cacheDump = new ofstream(cacheDumpName, ios::out); - diff --git a/debian/patches/0999_nxagent_unbrand-nxagent-brand-x2goagent.full.patch b/debian/patches/0999_nxagent_unbrand-nxagent-brand-x2goagent.full.patch deleted file mode 100644 index f48f4c02f..000000000 --- a/debian/patches/0999_nxagent_unbrand-nxagent-brand-x2goagent.full.patch +++ /dev/null @@ -1,367 +0,0 @@ -Description: Unbrand NX Agent Startup Screen / Brand X2Go Agent Startup Screen - When launched with NX Agent flavour, the startup screen gets unbranded by - this patch (the !M logo does not get shown). - . - When launched with X2Go Agent flavour, the startup screen gets branded - with the X2GO logo. -Forwarded: not-needed -Author: Oleksandr Shneyder <oleksandr.shneyder@obviously-nice.de> -Last-Update: 2012-01-11 ---- a/nx-X11/programs/Xserver/hw/nxagent/Splash.c -+++ b/nx-X11/programs/Xserver/hw/nxagent/Splash.c -@@ -35,6 +35,7 @@ - #include "Windows.h" - #include "Atoms.h" - #include "Trap.h" -+#include "Init.h" - - /* - * Set here the required log level. -@@ -53,6 +54,7 @@ int nxagentLogoDepth; - int nxagentLogoWhite; - int nxagentLogoRed; - int nxagentLogoBlack; -+int nxagentLogoGray; - - void nxagentPaintLogo(Window win, GC gc, int scale, int width, int height); - -@@ -166,6 +168,15 @@ void nxagentPaintLogo(Window win, GC gc, - XPoint m[12]; - int w, h, c, w2, h2; - -+ /* -+ * Show only X2GO Logo when running as X2Go Agent -+ */ -+ if(! nxagentX2go) -+ { -+ nxagentPixmapLogo = 0L; -+ return; -+ } -+ - #ifdef DEBUG - fprintf(stderr, "nxagenShowtLogo: Got called.\n"); - #endif -@@ -218,75 +229,146 @@ void nxagentPaintLogo(Window win, GC gc, - XSetForeground(nxagentDisplay, gc, nxagentLogoRed); - XSetBackground(nxagentDisplay, gc, nxagentLogoWhite); - -- rect[0].x = w2-10*c; rect[0].y = h2-8*c; -- rect[1].x = w2-10*c; rect[1].y = h2+8*c; -- rect[2].x = w2+10*c; rect[2].y = h2+8*c; -- rect[3].x = w2+10*c; rect[3].y = h2-8*c; -+ /* -+ * Draw X2GO Logo -+ */ - -+ /* -+ * Begin 'X'. -+ */ -+ -+ XSetForeground(nxagentDisplay, gc, nxagentLogoGray); -+ XSetBackground(nxagentDisplay, gc, nxagentLogoWhite); -+ rect[0].x = w2-7*c; rect[0].y = h2-5*c; -+ rect[1].x = w2-8*c; rect[1].y = h2-5*c; -+ rect[2].x = w2-4*c; rect[2].y = h2+3*c; -+ rect[3].x = w2-3*c; rect[3].y = h2+3*c; - XFillPolygon(nxagentDisplay, nxagentPixmapLogo, gc, rect, 4, Convex, CoordModeOrigin); - -- #ifdef NXAGENT_LOGO_DEBUG -- fprintf(stderr, "filled red rect\n"); -- #endif -+ rect[0].x = w2-4*c; rect[0].y = h2-5*c; -+ rect[1].x = w2-3*c; rect[1].y = h2-5*c; -+ rect[2].x = w2-7*c; rect[2].y = h2+3*c; -+ rect[3].x = w2-8*c; rect[3].y = h2+3*c; -+ XFillPolygon(nxagentDisplay, nxagentPixmapLogo, gc, rect, 4, Convex, CoordModeOrigin); - -- rect[0].x = w2-9*c; rect[0].y = h2-7*c; -- rect[1].x = w2-9*c; rect[1].y = h2+7*c; -- rect[2].x = w2+9*c; rect[2].y = h2+7*c; -- rect[3].x = w2+9*c; rect[3].y = h2-7*c; -+ /* -+ * End 'X'. -+ */ - -- XSetForeground(nxagentDisplay, gc, nxagentLogoWhite); -- XSetBackground(nxagentDisplay, gc, nxagentLogoRed); -+ /* -+ * Start '2'. -+ */ -+ -+ rect[0].x = w2-2*c; rect[0].y = h2-5*c; -+ rect[1].x = w2-1*c; rect[1].y = h2-5*c; -+ rect[2].x = w2-1*c; rect[2].y = h2-3*c; -+ rect[3].x = w2-2*c; rect[3].y = h2-3*c; -+ XFillPolygon(nxagentDisplay, nxagentPixmapLogo, gc, rect, 4, Convex, CoordModeOrigin); -+ -+ rect[0].x = w2-2*c; rect[0].y = h2-5*c; -+ rect[1].x = w2+2*c; rect[1].y = h2-5*c; -+ rect[2].x = w2+2*c; rect[2].y = h2-4*c; -+ rect[3].x = w2-2*c; rect[3].y = h2-4*c; -+ XFillPolygon(nxagentDisplay, nxagentPixmapLogo, gc, rect, 4, Convex, CoordModeOrigin); - -+ rect[0].x = w2+1*c; rect[0].y = h2-5*c; -+ rect[1].x = w2+2*c; rect[1].y = h2-5*c; -+ rect[2].x = w2+2*c; rect[2].y = h2-2*c; -+ rect[3].x = w2+1*c; rect[3].y = h2-2*c; - XFillPolygon(nxagentDisplay, nxagentPixmapLogo, gc, rect, 4, Convex, CoordModeOrigin); - -+ rect[0].x = w2+2*c; rect[0].y = h2-2*c; -+ rect[1].x = w2+1*c; rect[1].y = h2-2*c; -+ rect[2].x = w2-2*c; rect[2].y = h2+2*c; -+ rect[3].x = w2-1*c; rect[3].y = h2+2*c; -+ XFillPolygon(nxagentDisplay, nxagentPixmapLogo, gc, rect, 4, Convex, CoordModeOrigin); -+ -+ -+ rect[0].x = w2-2*c; rect[0].y = h2+2*c; -+ rect[1].x = w2+2*c; rect[1].y = h2+2*c; -+ rect[2].x = w2+2*c; rect[2].y = h2+3*c; -+ rect[3].x = w2-2*c; rect[3].y = h2+3*c; -+ XFillPolygon(nxagentDisplay, nxagentPixmapLogo, gc, rect, 4, Convex, CoordModeOrigin); - /* -- * Begin 'M'. -+ * End '2'. - */ - -- m[0].x = w2-3*c; m[0].y = h2-5*c; -- m[1].x = w2+7*c; m[1].y = h2-5*c; -- m[2].x = w2+7*c; m[2].y = h2+5*c; -- m[3].x = w2+5*c; m[3].y = h2+5*c; -- m[4].x = w2+5*c; m[4].y = h2-3*c; -- m[5].x = w2+3*c; m[5].y = h2-3*c; -- m[6].x = w2+3*c; m[6].y = h2+5*c; -- m[7].x = w2+1*c; m[7].y = h2+5*c; -- m[8].x = w2+1*c; m[8].y = h2-3*c; -- m[9].x = w2-1*c; m[9].y = h2-3*c; -- m[10].x = w2-1*c; m[10].y = h2+5*c; -- m[11].x = w2-3*c; m[11].y = h2+5*c; -+ /* -+ * Start 'G'. -+ */ - -- XSetForeground(nxagentDisplay, gc, nxagentLogoRed); -- XSetBackground(nxagentDisplay, gc, nxagentLogoWhite); -+ rect[0].x = w2+3*c; rect[0].y = h2-5*c; -+ rect[1].x = w2+7*c; rect[1].y = h2-5*c; -+ rect[2].x = w2+7*c; rect[2].y = h2-4*c; -+ rect[3].x = w2+3*c; rect[3].y = h2-4*c; -+ XFillPolygon(nxagentDisplay, nxagentPixmapLogo, gc, rect, 4, Convex, CoordModeOrigin); - -- XFillPolygon(nxagentDisplay, nxagentPixmapLogo, gc, m, 12, Nonconvex, CoordModeOrigin); -+ rect[0].x = w2+3*c; rect[0].y = h2-5*c; -+ rect[1].x = w2+4*c; rect[1].y = h2-5*c; -+ rect[2].x = w2+4*c; rect[2].y = h2+3*c; -+ rect[3].x = w2+3*c; rect[3].y = h2+3*c; -+ XFillPolygon(nxagentDisplay, nxagentPixmapLogo, gc, rect, 4, Convex, CoordModeOrigin); - -+ rect[0].x = w2+3*c; rect[0].y = h2+2*c; -+ rect[1].x = w2+7*c; rect[1].y = h2+2*c; -+ rect[2].x = w2+7*c; rect[2].y = h2+3*c; -+ rect[3].x = w2+3*c; rect[3].y = h2+3*c; -+ XFillPolygon(nxagentDisplay, nxagentPixmapLogo, gc, rect, 4, Convex, CoordModeOrigin); -+ -+ rect[0].x = w2+6*c; rect[0].y = h2-5*c; -+ rect[1].x = w2+7*c; rect[1].y = h2-5*c; -+ rect[2].x = w2+7*c; rect[2].y = h2-3*c; -+ rect[3].x = w2+6*c; rect[3].y = h2-3*c; -+ XFillPolygon(nxagentDisplay, nxagentPixmapLogo, gc, rect, 4, Convex, CoordModeOrigin); -+ -+ rect[0].x = w2+6*c; rect[0].y = h2-0*c; -+ rect[1].x = w2+7*c; rect[1].y = h2-0*c; -+ rect[2].x = w2+7*c; rect[2].y = h2+3*c; -+ rect[3].x = w2+6*c; rect[3].y = h2+3*c; -+ XFillPolygon(nxagentDisplay, nxagentPixmapLogo, gc, rect, 4, Convex, CoordModeOrigin); -+ -+ rect[0].x = w2+5*c; rect[0].y = h2-1*c; -+ rect[1].x = w2+7*c; rect[1].y = h2-1*c; -+ rect[2].x = w2+7*c; rect[2].y = h2+0*c; -+ rect[3].x = w2+5*c; rect[3].y = h2+0*c; -+ XFillPolygon(nxagentDisplay, nxagentPixmapLogo, gc, rect, 4, Convex, CoordModeOrigin); - /* -- * End 'M'. -+ * End 'G'. - */ - - /* -- * Begin '!'. -+ * Start 'O'. - */ - -- rect[0].x = w2-7*c; rect[0].y = h2-5*c; -- rect[1].x = w2-5*c; rect[1].y = h2-5*c; -- rect[2].x = w2-5*c; rect[2].y = h2+2*c; -- rect[3].x = w2-7*c; rect[3].y = h2+2*c; -+ rect[0].x = w2+8*c; rect[0].y = h2-5*c; -+ rect[1].x = w2+12*c; rect[1].y = h2-5*c; -+ rect[2].x = w2+12*c; rect[2].y = h2-4*c; -+ rect[3].x = w2+8*c; rect[3].y = h2-4*c; -+ XFillPolygon(nxagentDisplay, nxagentPixmapLogo, gc, rect, 4, Convex, CoordModeOrigin); - -+ rect[0].x = w2+8*c; rect[0].y = h2+3*c; -+ rect[1].x = w2+12*c; rect[1].y = h2+3*c; -+ rect[2].x = w2+12*c; rect[2].y = h2+2*c; -+ rect[3].x = w2+8*c; rect[3].y = h2+2*c; - XFillPolygon(nxagentDisplay, nxagentPixmapLogo, gc, rect, 4, Convex, CoordModeOrigin); - -- rect[0].x = w2-7*c; rect[0].y = h2+3*c; -- rect[1].x = w2-5*c; rect[1].y = h2+3*c; -- rect[2].x = w2-5*c; rect[2].y = h2+5*c; -- rect[3].x = w2-7*c; rect[3].y = h2+5*c; -+ rect[0].x = w2+8*c; rect[0].y = h2-5*c; -+ rect[1].x = w2+9*c; rect[1].y = h2-5*c; -+ rect[2].x = w2+9*c; rect[2].y = h2+3*c; -+ rect[3].x = w2+8*c; rect[3].y = h2+3*c; -+ XFillPolygon(nxagentDisplay, nxagentPixmapLogo, gc, rect, 4, Convex, CoordModeOrigin); - -+ rect[0].x = w2+11*c; rect[0].y = h2-5*c; -+ rect[1].x = w2+12*c; rect[1].y = h2-5*c; -+ rect[2].x = w2+12*c; rect[2].y = h2+3*c; -+ rect[3].x = w2+11*c; rect[3].y = h2+3*c; - XFillPolygon(nxagentDisplay, nxagentPixmapLogo, gc, rect, 4, Convex, CoordModeOrigin); - - /* -- * End 'M'. -+ * End 'O'. - */ - -+ - XSetWindowBackgroundPixmap(nxagentDisplay, win, nxagentPixmapLogo); - - #ifdef NXAGENT_LOGO_DEBUG ---- a/nx-X11/programs/Xserver/hw/nxagent/Display.c -+++ b/nx-X11/programs/Xserver/hw/nxagent/Display.c -@@ -1430,22 +1430,10 @@ FIXME: Use of nxagentParentWindow is str - g = pV.green_mask; - b = pV.blue_mask; - -- if (!pV.red_mask || !pV.green_mask || !pV.blue_mask) -- { -- nxagentLogoBlack = 0x000000; -- nxagentLogoRed = 0xff0000; -- nxagentLogoWhite = 0xffffff; -- } -- else -- { -- for (or=0, off=0x800000; (r&(off>>or)) == 0; or++); -- for (og=0, off=0x800000; (g&(off>>og)) == 0; og++); -- for (ob=0, off=0x800000; (b&(off>>ob)) == 0; ob++); -- -- nxagentLogoRed = nxagentLogoColor(0xff0000); -- nxagentLogoBlack = nxagentLogoColor(0x000000); -- nxagentLogoWhite = 0xffffff; -- } -+ nxagentLogoBlack = 0x000000; -+ nxagentLogoRed = 0xff0000; -+ nxagentLogoWhite = 0xffffff; -+ nxagentLogoGray = 0x222222; - - #ifdef WATCH - -@@ -2696,22 +2684,10 @@ Bool nxagentReconnectDisplay(void *p0) - g = pV.green_mask; - b = pV.blue_mask; - -- if (!pV.red_mask || !pV.green_mask || !pV.blue_mask) -- { -- nxagentLogoBlack = 0x000000; -- nxagentLogoRed = 0xff0000; -- nxagentLogoWhite = 0xffffff; -- } -- else -- { -- for (or=0, off=0x800000; (r&(off>>or)) == 0; or++); -- for (og=0, off=0x800000; (g&(off>>og)) == 0; og++); -- for (ob=0, off=0x800000; (b&(off>>ob)) == 0; ob++); -- -- nxagentLogoRed = nxagentLogoColor(0xff0000); -- nxagentLogoBlack = nxagentLogoColor(0x000000); -- nxagentLogoWhite = 0xffffff; -- } -+ nxagentLogoBlack = 0x000000; -+ nxagentLogoRed = 0xff0000; -+ nxagentLogoWhite = 0xffffff; -+ nxagentLogoGray = 0x222222; - - useXpmIcon = nxagentMakeIcon(nxagentDisplay, &nxagentIconPixmap, &nxagentIconShape); - ---- a/nx-X11/programs/Xserver/hw/nxagent/Splash.h -+++ b/nx-X11/programs/Xserver/hw/nxagent/Splash.h -@@ -33,6 +33,7 @@ extern int nxagentLogoDepth; - extern int nxagentLogoWhite; - extern int nxagentLogoRed; - extern int nxagentLogoBlack; -+extern int nxagentLogoGray; - - extern Window nxagentSplashWindow; - ---- a/nx-X11/programs/Xserver/os/oscolor.c -+++ b/nx-X11/programs/Xserver/os/oscolor.c -@@ -53,7 +53,19 @@ SOFTWARE. - #include <sys/stat.h> - #include <unistd.h> - --static char* nxAltRgbPaths[] = {"/etc/nxagent/rgb", "/usr/share/nx/rgb", "/usr/local/share/nx/rgb", "/usr/NX/share/rgb", "/usr/share/X11/rgb", "/etc/X11/rgb"}; -+/* FIXME: we need more intelligent code (like provided by the nxagentX2go -+ * var in hw/nxagent/Init.h) to detect our current runtime mode (running -+ * as x2goagent, running as nxagent) -+ */ -+static char* nxAltRgbPaths[] = {"/etc/x2go/rgb", \ -+ "/usr/share/x2go/rgb", \ -+ "/usr/local/share/x2go/rgb", \ -+ "/etc/nxagent/rgb", \ -+ "/usr/share/nx/rgb", \ -+ "/usr/local/share/nx/rgb", \ -+ "/usr/NX/share/rgb", \ -+ "/usr/share/X11/rgb", \ -+ "/etc/X11/rgb"}; - static char _NXRgbPath[1024]; - - #endif ---- a/nx-X11/programs/Xserver/hw/nxagent/Keyboard.c -+++ b/nx-X11/programs/Xserver/hw/nxagent/Keyboard.c -@@ -62,6 +62,7 @@ is" without express or implied warranty. - - #include "globals.h" - #include "property.h" -+#include "Init.h" - - #include <X11/extensions/XKB.h> - -@@ -138,8 +139,11 @@ extern Status XkbGetContro - #ifndef XKB_ALTERNATE_BASE_DIRECTORY - #define XKB_ALTERNATE_BASE_DIRECTORY "/usr/X11R6/lib/X11/xkb" - #endif --#ifndef XKB_CONFIG_FILE --#define XKB_CONFIG_FILE "/etc/nxagent/nxagent.keyboard" -+#ifndef XKB_CONFIG_FILE_NX -+#define XKB_CONFIG_FILE_NX "/etc/nxagent/nxagent.keyboard" -+#endif -+#ifndef XKB_CONFIG_FILE_X2GO -+#define XKB_CONFIG_FILE_X2GO "/etc/x2go/x2goagent.keyboard" - #endif - #ifndef XKB_DFLT_RULES_FILE - #define XKB_DFLT_RULES_FILE "xfree86" -@@ -988,7 +992,10 @@ XkbError: - - XkbGetControls(nxagentDisplay, XkbAllControlsMask, xkb); - -- nxagentXkbConfigFilePathSize = strlen(XKB_CONFIG_FILE); -+ if (nxagentX2go) -+ nxagentXkbConfigFilePathSize = strlen(XKB_CONFIG_FILE_X2GO); -+ else -+ nxagentXkbConfigFilePathSize = strlen(XKB_CONFIG_FILE_NX); - - nxagentXkbConfigFilePath = malloc((nxagentXkbConfigFilePathSize + 1) * sizeof(char)); - -@@ -997,7 +1004,10 @@ XkbError: - FatalError("nxagentKeyboardProc: malloc failed."); - } - -- strcpy(nxagentXkbConfigFilePath, XKB_CONFIG_FILE); -+ if (nxagentX2go) -+ nxagentXkbConfigFilePathSize = strlen(XKB_CONFIG_FILE_X2GO); -+ else -+ nxagentXkbConfigFilePathSize = strlen(XKB_CONFIG_FILE_NX); - - #ifdef TEST - fprintf(stderr, "nxagentKeyboardProc: nxagentXkbConfigFilePath [%s].\n", diff --git a/debian/patches/1001-LZW-decompress-fix-for-CVE-2011-2895-From-xorg-.full.patch b/debian/patches/1001-LZW-decompress-fix-for-CVE-2011-2895-From-xorg-.full.patch deleted file mode 100644 index cd37bca41..000000000 --- a/debian/patches/1001-LZW-decompress-fix-for-CVE-2011-2895-From-xorg-.full.patch +++ /dev/null @@ -1,24 +0,0 @@ -From af55da1e9c1a6a352b24823a8f7062c288ffbbc0 Mon Sep 17 00:00:00 2001 -From: Mike DePaulo <mikedep333@gmail.com> -Date: Sun, 8 Feb 2015 19:15:20 -0500 -Subject: [PATCH 01/40] LZW decompress: fix for CVE-2011-2895 From - xorg/lib/Xfont commit d11ee5886e9d9ec610051a206b135a4cdc1e09a0 - - Specially crafted LZW stream can crash an application using libXfont - that is used to open untrusted font files. With X server, this may - allow privilege escalation when exploited ---- - nx-X11/lib/font/fontfile/decompress.c | 2 ++ - 1 file changed, 2 insertions(+) - ---- a/nx-X11/lib/font/fontfile/decompress.c -+++ b/nx-X11/lib/font/fontfile/decompress.c -@@ -261,6 +261,8 @@ BufCompressedFill (BufFilePtr f) - */ - while ( code >= 256 ) - { -+ if (stackp - de_stack >= STACK_SIZE - 1) -+ return BUFFILEEOF; - *stackp++ = file->tab_suffix[code]; - code = file->tab_prefix[code]; - } diff --git a/debian/patches/1002-Fix-CVE-2011-4028-File-disclosure-vulnerability.full.patch b/debian/patches/1002-Fix-CVE-2011-4028-File-disclosure-vulnerability.full.patch deleted file mode 100644 index a2dcdd653..000000000 --- a/debian/patches/1002-Fix-CVE-2011-4028-File-disclosure-vulnerability.full.patch +++ /dev/null @@ -1,24 +0,0 @@ -From df4a3b7270539843ae76275485ca76efcdf361d9 Mon Sep 17 00:00:00 2001 -From: Mike DePaulo <mikedep333@gmail.com> -Date: Sun, 8 Feb 2015 19:16:38 -0500 -Subject: [PATCH 02/40] Fix CVE-2011-4028: File disclosure vulnerability. - upstream xorg/xserver commit 6ba44b91e37622ef8c146d8f2ac92d708a18ed34 - -use O_NOFOLLOW to open the existing lock file, so symbolic links -aren't followed, thus avoid revealing if it point to an existing -file. ---- - nx-X11/programs/Xserver/os/utils.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - ---- a/nx-X11/programs/Xserver/os/utils.c -+++ b/nx-X11/programs/Xserver/os/utils.c -@@ -483,7 +483,7 @@ LockServer(void) - /* - * Read the pid from the existing file - */ -- lfd = open(LockFile, O_RDONLY); -+ lfd = open(LockFile, O_RDONLY|O_NOFOLLOW); - if (lfd < 0) { - unlink(tmp); - FatalError("Can't read lock file %s\n", LockFile); diff --git a/debian/patches/1003-Avoid-use-after-free-in-dix-dixfonts.c-doImageT.full.patch b/debian/patches/1003-Avoid-use-after-free-in-dix-dixfonts.c-doImageT.full.patch deleted file mode 100644 index 63d23622d..000000000 --- a/debian/patches/1003-Avoid-use-after-free-in-dix-dixfonts.c-doImageT.full.patch +++ /dev/null @@ -1,115 +0,0 @@ -From 72790a55862f9a2232ba0cd7b072bbe3887cd820 Mon Sep 17 00:00:00 2001 -From: Mike DePaulo <mikedep333@gmail.com> -Date: Sun, 8 Feb 2015 20:01:27 -0500 -Subject: [PATCH 03/40] Avoid use-after-free in dix/dixfonts.c: doImageText() - [CVE-2013-4396] from xorg/Xserver - http://lists.x.org/archives/xorg-announce/2013-October/002332.html - -Save a pointer to the passed in closure structure before copying it -and overwriting the *c pointer to point to our copy instead of the -original. If we hit an error, once we free(c), reset c to point to -the original structure before jumping to the cleanup code that -references *c. - -Since one of the errors being checked for is whether the server was -able to malloc(c->nChars * itemSize), the client can potentially pass -a number of characters chosen to cause the malloc to fail and the -error path to be taken, resulting in the read from freed memory. - -Since the memory is accessed almost immediately afterwards, and the -X server is mostly single threaded, the odds of the free memory having -invalid contents are low with most malloc implementations when not using -memory debugging features, but some allocators will definitely overwrite -the memory there, leading to a likely crash. - -v2: Apply to NXdixfonts.c rather than dixfonts.c (Mike DePaulo) -v3: backport v2 to nx-libs 3.5.0.x (Mihai Moldovan) - ---- - nx-X11/programs/Xserver/dix/dixfonts.c | 5 +++++ - 1 file changed, 5 insertions(+) - ---- a/nx-X11/programs/Xserver/dix/dixfonts.c -+++ b/nx-X11/programs/Xserver/dix/dixfonts.c -@@ -1559,6 +1559,7 @@ doImageText(ClientPtr client, register I - GC *pGC; - unsigned char *data; - ITclosurePtr new_closure; -+ ITclosurePtr old_closure; - - /* We're putting the client to sleep. We need to - save some state. Similar problem to that handled -@@ -1571,6 +1572,7 @@ doImageText(ClientPtr client, register I - err = BadAlloc; - goto bail; - } -+ old_closure = c; - *new_closure = *c; - c = new_closure; - -@@ -1578,6 +1580,7 @@ doImageText(ClientPtr client, register I - if (!data) - { - xfree(c); -+ c = old_closure; - err = BadAlloc; - goto bail; - } -@@ -1589,6 +1592,7 @@ doImageText(ClientPtr client, register I - { - xfree(c->data); - xfree(c); -+ c = old_closure; - err = BadAlloc; - goto bail; - } -@@ -1602,6 +1606,7 @@ doImageText(ClientPtr client, register I - FreeScratchGC(pGC); - xfree(c->data); - xfree(c); -+ c = old_closure; - err = BadAlloc; - goto bail; - } ---- a/nx-X11/programs/Xserver/hw/nxagent/NXdixfonts.c -+++ b/nx-X11/programs/Xserver/hw/nxagent/NXdixfonts.c -@@ -1711,6 +1711,7 @@ doImageText(client, c) - GC *pGC; - unsigned char *data; - ITclosurePtr new_closure; -+ ITclosurePtr old_closure; - - /* We're putting the client to sleep. We need to - save some state. Similar problem to that handled -@@ -1723,6 +1724,7 @@ doImageText(client, c) - err = BadAlloc; - goto bail; - } -+ old_closure = c; - *new_closure = *c; - c = new_closure; - -@@ -1730,6 +1732,7 @@ doImageText(client, c) - if (!data) - { - xfree(c); -+ c = old_closure; - err = BadAlloc; - goto bail; - } -@@ -1741,6 +1744,7 @@ doImageText(client, c) - { - xfree(c->data); - xfree(c); -+ c = old_closure; - err = BadAlloc; - goto bail; - } -@@ -1759,6 +1763,7 @@ doImageText(client, c) - FreeScratchGC(pGC); - xfree(c->data); - xfree(c); -+ c = old_closure; - err = BadAlloc; - goto bail; - } diff --git a/debian/patches/1004-CVE-2013-6462-unlimited-sscanf-overflows-stack-.full.patch b/debian/patches/1004-CVE-2013-6462-unlimited-sscanf-overflows-stack-.full.patch deleted file mode 100644 index 4147b463e..000000000 --- a/debian/patches/1004-CVE-2013-6462-unlimited-sscanf-overflows-stack-.full.patch +++ /dev/null @@ -1,25 +0,0 @@ -From ac6694378e0ed4bdffa6e1318c9d4beda24a6b0e Mon Sep 17 00:00:00 2001 -From: Mike DePaulo <mikedep333@gmail.com> -Date: Sun, 8 Feb 2015 20:12:25 -0500 -Subject: [PATCH 04/40] CVE-2013-6462: unlimited sscanf overflows stack buffer - in bdfReadCharacters() from xorg/lib/libXfont - http://lists.x.org/archives/xorg-announce/2014-January/002389.html - -Fixes cppcheck warning: - [lib/libXfont/src/bitmap/bdfread.c:341]: (warning) - scanf without field width limits can crash with huge input data. ---- - nx-X11/lib/font/bitmap/bdfread.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - ---- a/nx-X11/lib/font/bitmap/bdfread.c -+++ b/nx-X11/lib/font/bitmap/bdfread.c -@@ -344,7 +344,7 @@ bdfReadCharacters(FontFilePtr file, Font - char charName[100]; - int ignore; - -- if (sscanf((char *) line, "STARTCHAR %s", charName) != 1) { -+ if (sscanf((char *) line, "STARTCHAR %99s", charName) != 1) { - bdfError("bad character name in BDF file\n"); - goto BAILOUT; /* bottom of function, free and return error */ - } diff --git a/debian/patches/1005-CVE-2014-0209-integer-overflow-of-realloc-size-.full.patch b/debian/patches/1005-CVE-2014-0209-integer-overflow-of-realloc-size-.full.patch deleted file mode 100644 index 66b8cd68d..000000000 --- a/debian/patches/1005-CVE-2014-0209-integer-overflow-of-realloc-size-.full.patch +++ /dev/null @@ -1,38 +0,0 @@ -From f53f2474d5d33cca04c4c7744ecc50cec41ba94f Mon Sep 17 00:00:00 2001 -From: Mike DePaulo <mikedep333@gmail.com> -Date: Sun, 8 Feb 2015 20:28:30 -0500 -Subject: [PATCH 05/40] CVE-2014-0209: integer overflow of realloc() size in - FontFileAddEntry() from xorg/lib/libXfont commit - 2f5e57317339c526e6eaee1010b0e2ab8089c42e -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -FontFileReadDirectory() opens a fonts.dir file, and reads over every -line in an fscanf loop. For each successful entry read (font name, -file name) a call is made to FontFileAddFontFile(). - -FontFileAddFontFile() will add a font file entry (for the font name -and file) each time it’s called, by calling FontFileAddEntry(). -FontFileAddEntry() will do the actual adding. If the table it has -to add to is full, it will do a realloc, adding 100 more entries -to the table size without checking to see if that will overflow the -int used to store the size. ---- - nx-X11/lib/font/fontfile/fontdir.c | 5 +++++ - 1 file changed, 5 insertions(+) - ---- a/nx-X11/lib/font/fontfile/fontdir.c -+++ b/nx-X11/lib/font/fontfile/fontdir.c -@@ -185,6 +185,11 @@ FontFileAddEntry(FontTablePtr table, Fon - if (table->sorted) - return (FontEntryPtr) 0; /* "cannot" happen */ - if (table->used == table->size) { -+ if (table->size >= ((INT32_MAX / sizeof(FontEntryRec)) - 100)) -+ /* If we've read so many entries we're going to ask for 2gb -+ or more of memory, something is so wrong with this font -+ directory that we should just give up before we overflow. */ -+ return NULL; - newsize = table->size + 100; - entry = (FontEntryPtr) xrealloc(table->entries, - newsize * sizeof(FontEntryRec)); diff --git a/debian/patches/1006-CVE-2014-0209-integer-overflow-of-realloc-size-.full.patch b/debian/patches/1006-CVE-2014-0209-integer-overflow-of-realloc-size-.full.patch deleted file mode 100644 index 2539859bf..000000000 --- a/debian/patches/1006-CVE-2014-0209-integer-overflow-of-realloc-size-.full.patch +++ /dev/null @@ -1,41 +0,0 @@ -From 36f1dae749acb065eaefca56d42d19ef6822a001 Mon Sep 17 00:00:00 2001 -From: Mike DePaulo <mikedep333@gmail.com> -Date: Sun, 8 Feb 2015 20:53:14 -0500 -Subject: [PATCH 06/40] CVE-2014-0209: integer overflow of realloc() size in - lexAlias() from xorg/lib/libXfont commit - 05c8020a49416dd8b7510cbba45ce4f3fc81a7dc - -lexAlias() reads from a file in a loop. It does this by starting with a -64 byte buffer. If that size limit is hit, it does a realloc of the -buffer size << 1, basically doubling the needed length every time the -length limit is hit. - -Eventually, this will shift out to 0 (for a length of ~4gig), and that -length will be passed on to realloc(). A length of 0 (with a valid -pointer) causes realloc to free the buffer on most POSIX platforms, -but the caller will still have a pointer to it, leading to use after -free issues. ---- - nx-X11/lib/font/fontfile/dirfile.c | 4 ++++ - 1 file changed, 4 insertions(+) - ---- a/nx-X11/lib/font/fontfile/dirfile.c -+++ b/nx-X11/lib/font/fontfile/dirfile.c -@@ -45,6 +45,7 @@ in this Software without prior written a - #include <sys/types.h> - #include <sys/stat.h> - #include <errno.h> -+#include <limits.h> - - static Bool AddFileNameAliases ( FontDirectoryPtr dir ); - static int ReadFontAlias ( char *directory, Bool isFile, -@@ -373,6 +374,9 @@ lexAlias(FILE *file, char **lexToken) - int nsize; - char *nbuf; - -+ if (tokenSize >= (INT_MAX >> 2)) -+ /* Stop before we overflow */ -+ return EALLOC; - nsize = tokenSize ? (tokenSize << 1) : 64; - nbuf = (char *) xrealloc(tokenBuf, nsize); - if (!nbuf) diff --git a/debian/patches/1007-CVE-2014-0210-unvalidated-length-in-_fs_recv_co.full.patch b/debian/patches/1007-CVE-2014-0210-unvalidated-length-in-_fs_recv_co.full.patch deleted file mode 100644 index c0fa2cdae..000000000 --- a/debian/patches/1007-CVE-2014-0210-unvalidated-length-in-_fs_recv_co.full.patch +++ /dev/null @@ -1,70 +0,0 @@ -From 31322c2bd9be76493a5a04a23ea68e063fe3b7e6 Mon Sep 17 00:00:00 2001 -From: Mike DePaulo <mikedep333@gmail.com> -Date: Sun, 8 Feb 2015 21:03:33 -0500 -Subject: [PATCH 07/40] CVE-2014-0210: unvalidated length in - _fs_recv_conn_setup() from xorg/lib/libXfont commit - 891e084b26837162b12f841060086a105edde86d - -The connection setup reply from the font server can include a list -of alternate servers to contact if this font server stops working. - -The reply specifies a total size of all the font server names, and -then provides a list of names. _fs_recv_conn_setup() allocated the -specified total size for copying the names to, but didn't check to -make sure it wasn't copying more data to that buffer than the size -it had allocated. - -v2: use xfree() instead of free() for nx-libs 3.6.x (Mihai Moldovan) ---- - nx-X11/lib/font/fc/fserve.c | 21 ++++++++++++++++++--- - 1 file changed, 18 insertions(+), 3 deletions(-) - ---- a/nx-X11/lib/font/fc/fserve.c -+++ b/nx-X11/lib/font/fc/fserve.c -@@ -2782,7 +2782,7 @@ _fs_recv_conn_setup (FSFpePtr conn) - int ret; - fsConnSetup *setup; - FSFpeAltPtr alts; -- int i, alt_len; -+ unsigned int i, alt_len; - int setup_len; - char *alt_save, *alt_names; - -@@ -2809,9 +2809,9 @@ _fs_recv_conn_setup (FSFpePtr conn) - } - if (setup->num_alternates) - { -+ size_t alt_name_len = setup->alternate_len << 2; - alts = (FSFpeAltPtr) xalloc (setup->num_alternates * -- sizeof (FSFpeAltRec) + -- (setup->alternate_len << 2)); -+ sizeof (FSFpeAltRec) + alt_name_len); - if (alts) - { - alt_names = (char *) (setup + 1); -@@ -2820,10 +2820,25 @@ _fs_recv_conn_setup (FSFpePtr conn) - { - alts[i].subset = alt_names[0]; - alt_len = alt_names[1]; -+ if (alt_len >= alt_name_len) { -+ /* -+ * Length is longer than setup->alternate_len -+ * told us to allocate room for, assume entire -+ * alternate list is corrupted. -+ */ -+#ifdef DEBUG -+ fprintf (stderr, -+ "invalid alt list (length %lx >= %lx)\n", -+ (long) alt_len, (long) alt_name_len); -+#endif -+ xfree(alts); -+ return FSIO_ERROR; -+ } - alts[i].name = alt_save; - memcpy (alt_save, alt_names + 2, alt_len); - alt_save[alt_len] = '\0'; - alt_save += alt_len + 1; -+ alt_name_len -= alt_len + 1; - alt_names += _fs_pad_length (alt_len + 2); - } - conn->numAlts = setup->num_alternates; diff --git a/debian/patches/1008-Don-t-crash-when-we-receive-an-FS_Error-from-th.full.patch b/debian/patches/1008-Don-t-crash-when-we-receive-an-FS_Error-from-th.full.patch deleted file mode 100644 index 4dad6b8cd..000000000 --- a/debian/patches/1008-Don-t-crash-when-we-receive-an-FS_Error-from-th.full.patch +++ /dev/null @@ -1,22 +0,0 @@ -From a2c7cd9fef2d7d108e224ab47e77130dc98b249d Mon Sep 17 00:00:00 2001 -From: Mike DePaulo <mikedep333@gmail.com> -Date: Sun, 8 Feb 2015 21:33:30 -0500 -Subject: [PATCH 08/40] Don't crash when we receive an FS_Error from the font - server (Guillem Jover). from xorg/lib/libXfont commit - bfb8a71f4f7e5c5ed4278cb3ee271bf9990d276d - ---- - nx-X11/lib/font/fc/fserve.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - ---- a/nx-X11/lib/font/fc/fserve.c -+++ b/nx-X11/lib/font/fc/fserve.c -@@ -2366,7 +2366,7 @@ fs_read_list_info(FontPathElementPtr fpe - _fs_free_props (&binfo->info); - - rep = (fsListFontsWithXInfoReply *) fs_get_reply (conn, &ret); -- if (rep == 0) -+ if (!rep || rep->type == FS_Error) - { - if (ret == FSIO_BLOCK) - return StillWorking; diff --git a/debian/patches/1009-CVE-2014-0210-unvalidated-lengths-when-reading-.full.patch b/debian/patches/1009-CVE-2014-0210-unvalidated-lengths-when-reading-.full.patch deleted file mode 100644 index eded3517a..000000000 --- a/debian/patches/1009-CVE-2014-0210-unvalidated-lengths-when-reading-.full.patch +++ /dev/null @@ -1,153 +0,0 @@ -From 50e80a06c84375e39af02b24f01a949cb565a49d Mon Sep 17 00:00:00 2001 -From: Mike DePaulo <mikedep333@gmail.com> -Date: Sun, 8 Feb 2015 21:39:55 -0500 -Subject: [PATCH 09/40] CVE-2014-0210: unvalidated lengths when reading replies - from font server from xorg/lib/libXfont commit - cbb64aef35960b2882be721f4b8fbaa0fb649d12 - -Functions to handle replies to font server requests were casting replies -from the generic form to reply specific structs without first checking -that the reply was at least as long as the struct being cast to. ---- - nx-X11/lib/font/fc/fserve.c | 44 ++++++++++++++++++++++++++++++++++++++------ - 1 file changed, 38 insertions(+), 6 deletions(-) - ---- a/nx-X11/lib/font/fc/fserve.c -+++ b/nx-X11/lib/font/fc/fserve.c -@@ -94,6 +94,12 @@ in this Software without prior written a - (pci)->descent || \ - (pci)->characterWidth) - -+/* -+ * SIZEOF(r) is in bytes, length fields in the protocol are in 32-bit words, -+ * so this converts for doing size comparisons. -+ */ -+#define LENGTHOF(r) (SIZEOF(r) >> 2) -+ - extern void ErrorF(const char *f, ...); - - static int fs_read_glyphs ( FontPathElementPtr fpe, FSBlockDataPtr blockrec ); -@@ -209,9 +215,22 @@ _fs_add_rep_log (FSFpePtr conn, fsGeneri - rep->sequenceNumber, - conn->reqbuffer[i].opcode); - } -+ -+#define _fs_reply_failed(rep, name, op) do { \ -+ if (rep) { \ -+ if (rep->type == FS_Error) \ -+ fprintf (stderr, "Error: %d Request: %s\n", \ -+ ((fsError *)rep)->request, #name); \ -+ else \ -+ fprintf (stderr, "Bad Length for %s Reply: %d %s %d\n", \ -+ #name, rep->length, op, LENGTHOF(name)); \ -+ } \ -+} while (0) -+ - #else - #define _fs_add_req_log(conn,op) ((conn)->current_seq++) - #define _fs_add_rep_log(conn,rep) -+#define _fs_reply_failed(rep,name,op) - #endif - - static Bool -@@ -693,13 +712,15 @@ fs_read_open_font(FontPathElementPtr fpe - int ret; - - rep = (fsOpenBitmapFontReply *) fs_get_reply (conn, &ret); -- if (!rep || rep->type == FS_Error) -+ if (!rep || rep->type == FS_Error || -+ (rep->length != LENGTHOF(fsOpenBitmapFontReply))) - { - if (ret == FSIO_BLOCK) - return StillWorking; - if (rep) - _fs_done_read (conn, rep->length << 2); - fs_cleanup_bfont (bfont); -+ _fs_reply_failed (rep, fsOpenBitmapFontReply, "!="); - return BadFontName; - } - -@@ -835,13 +856,15 @@ fs_read_query_info(FontPathElementPtr fp - int ret; - - rep = (fsQueryXInfoReply *) fs_get_reply (conn, &ret); -- if (!rep || rep->type == FS_Error) -+ if (!rep || rep->type == FS_Error || -+ (rep->length < LENGTHOF(fsQueryXInfoReply))) - { - if (ret == FSIO_BLOCK) - return StillWorking; - if (rep) - _fs_done_read (conn, rep->length << 2); - fs_cleanup_bfont (bfont); -+ _fs_reply_failed (rep, fsQueryXInfoReply, "<"); - return BadFontName; - } - -@@ -962,13 +985,15 @@ fs_read_extent_info(FontPathElementPtr f - FontInfoRec *fi = &bfont->pfont->info; - - rep = (fsQueryXExtents16Reply *) fs_get_reply (conn, &ret); -- if (!rep || rep->type == FS_Error) -+ if (!rep || rep->type == FS_Error || -+ (rep->length < LENGTHOF(fsQueryXExtents16Reply))) - { - if (ret == FSIO_BLOCK) - return StillWorking; - if (rep) - _fs_done_read (conn, rep->length << 2); - fs_cleanup_bfont (bfont); -+ _fs_reply_failed (rep, fsQueryXExtents16Reply, "<"); - return BadFontName; - } - -@@ -1833,13 +1858,15 @@ fs_read_glyphs(FontPathElementPtr fpe, F - unsigned long minchar, maxchar; - - rep = (fsQueryXBitmaps16Reply *) fs_get_reply (conn, &ret); -- if (!rep || rep->type == FS_Error) -+ if (!rep || rep->type == FS_Error || -+ (rep->length < LENGTHOF(fsQueryXBitmaps16Reply))) - { - if (ret == FSIO_BLOCK) - return StillWorking; - if (rep) - _fs_done_read (conn, rep->length << 2); - err = AllocError; -+ _fs_reply_failed (rep, fsQueryXBitmaps16Reply, "<"); - goto bail; - } - -@@ -2243,12 +2270,14 @@ fs_read_list(FontPathElementPtr fpe, FSB - int err; - - rep = (fsListFontsReply *) fs_get_reply (conn, &ret); -- if (!rep || rep->type == FS_Error) -+ if (!rep || rep->type == FS_Error || -+ (rep->length < LENGTHOF(fsListFontsReply))) - { - if (ret == FSIO_BLOCK) - return StillWorking; - if (rep) - _fs_done_read (conn, rep->length << 2); -+ _fs_reply_failed (rep, fsListFontsReply, "<"); - return AllocError; - } - data = (char *) rep + SIZEOF (fsListFontsReply); -@@ -2366,12 +2395,15 @@ fs_read_list_info(FontPathElementPtr fpe - _fs_free_props (&binfo->info); - - rep = (fsListFontsWithXInfoReply *) fs_get_reply (conn, &ret); -- if (!rep || rep->type == FS_Error) -+ if (!rep || rep->type == FS_Error || -+ ((rep->nameLength != 0) && -+ (rep->length < LENGTHOF(fsListFontsWithXInfoReply)))) - { - if (ret == FSIO_BLOCK) - return StillWorking; - binfo->status = FS_LFWI_FINISHED; - err = AllocError; -+ _fs_reply_failed (rep, fsListFontsWithXInfoReply, "<"); - goto done; - } - /* diff --git a/debian/patches/1010-CVE-2014-0211-Integer-overflow-in-fs_get_reply-.full.patch b/debian/patches/1010-CVE-2014-0211-Integer-overflow-in-fs_get_reply-.full.patch deleted file mode 100644 index d37836fc2..000000000 --- a/debian/patches/1010-CVE-2014-0211-Integer-overflow-in-fs_get_reply-.full.patch +++ /dev/null @@ -1,60 +0,0 @@ -From 2d724c1a0416895dd39bf33678f42cbb4c51b1ae Mon Sep 17 00:00:00 2001 -From: Mike DePaulo <mikedep333@gmail.com> -Date: Sun, 8 Feb 2015 21:43:42 -0500 -Subject: [PATCH 10/40] CVE-2014-0211: Integer overflow in - fs_get_reply/_fs_start_read from xorg/lib/libXfont commit - 0f1a5d372c143f91a602bdf10c917d7eabaee09b - -fs_get_reply() would take any reply size, multiply it by 4 and pass to -_fs_start_read. If that size was bigger than the current reply buffer -size, _fs_start_read would add it to the existing buffer size plus the -buffer size increment constant and realloc the buffer to that result. - -This math could overflow, causing the code to allocate a smaller -buffer than the amount it was about to read into that buffer from -the network. It could also succeed, allowing the remote font server -to cause massive allocations in the X server, possibly using up all -the address space in a 32-bit X server, allowing the triggering of -other bugs in code that fails to handle malloc failure properly. - -This patch protects against both problems, by disconnecting any -font server trying to feed us more than (the somewhat arbitrary) -64 mb in a single reply. ---- - nx-X11/lib/font/fc/fserve.c | 18 ++++++++++++++++++ - 1 file changed, 18 insertions(+) - ---- a/nx-X11/lib/font/fc/fserve.c -+++ b/nx-X11/lib/font/fc/fserve.c -@@ -100,6 +100,9 @@ in this Software without prior written a - */ - #define LENGTHOF(r) (SIZEOF(r) >> 2) - -+/* Somewhat arbitrary limit on maximum reply size we'll try to read. */ -+#define MAX_REPLY_LENGTH ((64 * 1024 * 1024) >> 2) -+ - extern void ErrorF(const char *f, ...); - - static int fs_read_glyphs ( FontPathElementPtr fpe, FSBlockDataPtr blockrec ); -@@ -630,6 +633,21 @@ fs_get_reply (FSFpePtr conn, int *error) - - rep = (fsGenericReply *) buf; - -+ /* -+ * Refuse to accept replies longer than a maximum reasonable length, -+ * before we pass to _fs_start_read, since it will try to resize the -+ * incoming connection buffer to this size. Also avoids integer overflow -+ * on 32-bit systems. -+ */ -+ if (rep->length > MAX_REPLY_LENGTH) -+ { -+ ErrorF("fserve: reply length %d > MAX_REPLY_LENGTH, disconnecting" -+ " from font server\n", rep->length); -+ _fs_connection_died (conn); -+ *error = FSIO_ERROR; -+ return 0; -+ } -+ - ret = _fs_start_read (conn, rep->length << 2, &buf); - if (ret != FSIO_READY) - { diff --git a/debian/patches/1011-CVE-2014-0210-unvalidated-length-fields-in-fs_r.full.patch b/debian/patches/1011-CVE-2014-0210-unvalidated-length-fields-in-fs_r.full.patch deleted file mode 100644 index 9a75a01c8..000000000 --- a/debian/patches/1011-CVE-2014-0210-unvalidated-length-fields-in-fs_r.full.patch +++ /dev/null @@ -1,134 +0,0 @@ -From e29bbd5bf0565eaf7c02f85a57b87f66531fa6b3 Mon Sep 17 00:00:00 2001 -From: Mike DePaulo <mikedep333@gmail.com> -Date: Sun, 8 Feb 2015 22:08:09 -0500 -Subject: [PATCH 11/40] CVE-2014-0210: unvalidated length fields in - fs_read_query_info() from xorg/lib/libXfont commit - 491291cabf78efdeec8f18b09e14726a9030cc8f - -fs_read_query_info() parses a reply from the font server. The reply -contains embedded length fields, none of which are validated. This -can cause out of bound reads in either fs_read_query_info() or in -_fs_convert_props() which it calls to parse the fsPropInfo in the reply. - -v2: apply correctly on nx-libs 3.6.x (Mihai Moldovan) ---- - nx-X11/lib/font/fc/fsconvert.c | 19 ++++++++++++++----- - nx-X11/lib/font/fc/fserve.c | 43 +++++++++++++++++++++++++++++++++++++++--- - 2 files changed, 54 insertions(+), 8 deletions(-) - ---- a/nx-X11/lib/font/fc/fsconvert.c -+++ b/nx-X11/lib/font/fc/fsconvert.c -@@ -123,6 +123,10 @@ _fs_convert_props(fsPropInfo *pi, fsProp - for (i = 0; i < nprops; i++, dprop++, is_str++) - { - memcpy(&local_off, off_adr, SIZEOF(fsPropOffset)); -+ if ((local_off.name.position >= pi->data_len) || -+ (local_off.name.length > -+ (pi->data_len - local_off.name.position))) -+ goto bail; - dprop->name = MakeAtom(&pdc[local_off.name.position], - local_off.name.length, 1); - if (local_off.type != PropTypeString) { -@@ -130,15 +134,20 @@ _fs_convert_props(fsPropInfo *pi, fsProp - dprop->value = local_off.value.position; - } else { - *is_str = TRUE; -+ if ((local_off.value.position >= pi->data_len) || -+ (local_off.value.length > -+ (pi->data_len - local_off.value.position))) -+ goto bail; - dprop->value = (INT32) MakeAtom(&pdc[local_off.value.position], - local_off.value.length, 1); - if (dprop->value == BAD_RESOURCE) - { -- xfree (pfi->props); -- pfi->nprops = 0; -- pfi->props = 0; -- pfi->isStringProp = 0; -- return -1; -+ bail: -+ xfree (pfi->props); -+ pfi->nprops = 0; -+ pfi->props = 0; -+ pfi->isStringProp = 0; -+ return -1; - } - } - off_adr += SIZEOF(fsPropOffset); ---- a/nx-X11/lib/font/fc/fserve.c -+++ b/nx-X11/lib/font/fc/fserve.c -@@ -865,6 +865,7 @@ fs_read_query_info(FontPathElementPtr fp - FSFpePtr conn = (FSFpePtr) fpe->private; - fsQueryXInfoReply *rep; - char *buf; -+ long bufleft = 0; /* length of reply left to use */ - fsPropInfo *pi; - fsPropOffset *po; - pointer pd; -@@ -895,7 +896,10 @@ fs_read_query_info(FontPathElementPtr fp - - buf = (char *) rep; - buf += SIZEOF(fsQueryXInfoReply); -- -+ -+ bufleft = rep->length << 2; -+ bufleft -= SIZEOF(fsQueryXInfoReply); -+ - /* move the data over */ - fsUnpack_XFontInfoHeader(rep, pInfo); - -@@ -903,19 +907,52 @@ fs_read_query_info(FontPathElementPtr fp - _fs_init_fontinfo(conn, pInfo); - - /* Compute offsets into the reply */ -+ if (bufleft < SIZEOF(fsPropInfo)) -+ { -+ ret = -1; -+#ifdef DEBUG -+ fprintf(stderr, "fsQueryXInfo: bufleft (%ld) < SIZEOF(fsPropInfo)\n", -+ bufleft); -+#endif -+ goto bail; -+ } - pi = (fsPropInfo *) buf; - buf += SIZEOF (fsPropInfo); -- -+ bufleft -= SIZEOF (fsPropInfo); -+ -+ if ((bufleft / SIZEOF (fsPropOffset)) < pi->num_offsets) -+ { -+ ret = -1; -+#ifdef DEBUG -+ fprintf(stderr, -+ "fsQueryXInfo: (bufleft / SIZEOF (fsPropOffset)) (%ld) < pi->num_offsets (%d)\n", -+ bufleft / SIZEOF (fsPropOffset), pi->num_offsets); -+#endif -+ goto bail; -+ } - po = (fsPropOffset *) buf; - buf += pi->num_offsets * SIZEOF(fsPropOffset); -+ bufleft -= pi->num_offsets * SIZEOF(fsPropOffset); - -+ if (bufleft < pi->data_len) -+ { -+ ret = -1; -+#ifdef DEBUG -+ fprintf(stderr, -+ "fsQueryXInfo: bufleft (%ld) < data_len (%d)\n", -+ bufleft, pi->data_len); -+#endif -+ goto bail; -+ } - pd = (pointer) buf; - buf += pi->data_len; -+ bufleft -= pi->data_len; - - /* convert the properties and step over the reply */ - ret = _fs_convert_props(pi, po, pd, pInfo); -+ bail: - _fs_done_read (conn, rep->length << 2); -- -+ - if (ret == -1) - { - fs_cleanup_bfont (bfont); diff --git a/debian/patches/1012-CVE-2014-0211-integer-overflow-in-fs_read_exten.full.patch b/debian/patches/1012-CVE-2014-0211-integer-overflow-in-fs_read_exten.full.patch deleted file mode 100644 index be0dded23..000000000 --- a/debian/patches/1012-CVE-2014-0211-integer-overflow-in-fs_read_exten.full.patch +++ /dev/null @@ -1,43 +0,0 @@ -From bb7abd9da9badc6cb825c636867cbef827141f36 Mon Sep 17 00:00:00 2001 -From: Mike DePaulo <mikedep333@gmail.com> -Date: Sun, 8 Feb 2015 22:19:01 -0500 -Subject: [PATCH 12/40] CVE-2014-0211: integer overflow in - fs_read_extent_info() from xorg/lib/libXfont commit - c578408c1fd4db09e4e3173f8a9e65c81cc187c1 - -fs_read_extent_info() parses a reply from the font server. -The reply contains a 32bit number of elements field which is used -to calculate a buffer length. There is an integer overflow in this -calculation which can lead to memory corruption. ---- - nx-X11/lib/font/fc/fserve.c | 12 +++++++++++- - 1 file changed, 11 insertions(+), 1 deletion(-) - ---- a/nx-X11/lib/font/fc/fserve.c -+++ b/nx-X11/lib/font/fc/fserve.c -@@ -73,6 +73,7 @@ in this Software without prior written a - #include "fservestr.h" - #include <X11/fonts/fontutil.h> - #include <errno.h> -+#include <limits.h> - - #include <time.h> - #define Time_t time_t -@@ -1061,7 +1062,16 @@ fs_read_extent_info(FontPathElementPtr f - numInfos *= 2; - haveInk = TRUE; - } -- ci = pCI = (CharInfoPtr) xalloc(sizeof(CharInfoRec) * numInfos); -+ if (numInfos >= (INT_MAX / sizeof(CharInfoRec))) { -+#ifdef DEBUG -+ fprintf(stderr, -+ "fsQueryXExtents16: numInfos (%d) >= %ld\n", -+ numInfos, (INT_MAX / sizeof(CharInfoRec))); -+#endif -+ pCI = NULL; -+ } -+ else -+ pCI = malloc(sizeof(CharInfoRec) * numInfos); - - if (!pCI) - { diff --git a/debian/patches/1013-CVE-2014-0211-integer-overflow-in-fs_alloc_glyp.full.patch b/debian/patches/1013-CVE-2014-0211-integer-overflow-in-fs_alloc_glyp.full.patch deleted file mode 100644 index d6d460b9a..000000000 --- a/debian/patches/1013-CVE-2014-0211-integer-overflow-in-fs_alloc_glyp.full.patch +++ /dev/null @@ -1,29 +0,0 @@ -From a0bed4d9fce8ffc96f13ca13b95d2a7913d20719 Mon Sep 17 00:00:00 2001 -From: Mike DePaulo <mikedep333@gmail.com> -Date: Sun, 8 Feb 2015 22:23:51 -0500 -Subject: [PATCH 13/40] CVE-2014-0211: integer overflow in fs_alloc_glyphs() - from xorg/lib/libXfont commit a42f707f8a62973f5e8bbcd08afb10a79e9cee33 - -fs_alloc_glyphs() is a malloc wrapper used by the font code. -It contains a classic integer overflow in the malloc() call, -which can cause memory corruption. ---- - nx-X11/lib/font/fc/fsconvert.c | 7 ++++++- - 1 file changed, 6 insertions(+), 1 deletion(-) - ---- a/nx-X11/lib/font/fc/fsconvert.c -+++ b/nx-X11/lib/font/fc/fsconvert.c -@@ -762,7 +762,12 @@ fs_alloc_glyphs (FontPtr pFont, int size - FSGlyphPtr glyphs; - FSFontPtr fsfont = (FSFontPtr) pFont->fontPrivate; - -- glyphs = xalloc (sizeof (FSGlyphRec) + size); -+ if (size < (INT_MAX - sizeof (FSGlyphRec))) -+ glyphs = xalloc (sizeof (FSGlyphRec) + size); -+ else -+ glyphs = NULL; -+ if (glyphs == NULL) -+ return NULL; - glyphs->next = fsfont->glyphs; - fsfont->glyphs = glyphs; - return (pointer) (glyphs + 1); diff --git a/debian/patches/1014-CVE-2014-0210-unvalidated-length-fields-in-fs_r.full.patch b/debian/patches/1014-CVE-2014-0210-unvalidated-length-fields-in-fs_r.full.patch deleted file mode 100644 index d1a4f1ecc..000000000 --- a/debian/patches/1014-CVE-2014-0210-unvalidated-length-fields-in-fs_r.full.patch +++ /dev/null @@ -1,33 +0,0 @@ -From d2b96c5d59766f96181de95da1906fd6e32785ba Mon Sep 17 00:00:00 2001 -From: Mike DePaulo <mikedep333@gmail.com> -Date: Sun, 8 Feb 2015 22:26:16 -0500 -Subject: [PATCH 14/40] CVE-2014-0210: unvalidated length fields in - fs_read_extent_info() from xorg/lib/libXfont commit - a3f21421537620fc4e1f844a594a4bcd9f7e2bd8 - -Looping over the extents in the reply could go past the end of the -reply buffer if the reply indicated more extents than could fit in -the specified reply length. ---- - nx-X11/lib/font/fc/fserve.c | 10 ++++++++++ - 1 file changed, 10 insertions(+) - ---- a/nx-X11/lib/font/fc/fserve.c -+++ b/nx-X11/lib/font/fc/fserve.c -@@ -1070,6 +1070,16 @@ fs_read_extent_info(FontPathElementPtr f - #endif - pCI = NULL; - } -+ else if (numExtents > ((rep->length - LENGTHOF(fsQueryXExtents16Reply)) -+ / LENGTHOF(fsXCharInfo))) { -+#ifdef DEBUG -+ fprintf(stderr, -+ "fsQueryXExtents16: numExtents (%d) > (%d - %d) / %d\n", -+ numExtents, rep->length, -+ LENGTHOF(fsQueryXExtents16Reply), LENGTHOF(fsXCharInfo)); -+#endif -+ pCI = NULL; -+ } - else - pCI = malloc(sizeof(CharInfoRec) * numInfos); - diff --git a/debian/patches/1015-CVE-2014-0210-unvalidated-length-fields-in-fs_r.full.patch b/debian/patches/1015-CVE-2014-0210-unvalidated-length-fields-in-fs_r.full.patch deleted file mode 100644 index 1599e0245..000000000 --- a/debian/patches/1015-CVE-2014-0210-unvalidated-length-fields-in-fs_r.full.patch +++ /dev/null @@ -1,70 +0,0 @@ -From ece51493f1d970f45e53588e33a700464a42fbab Mon Sep 17 00:00:00 2001 -From: Mike DePaulo <mikedep333@gmail.com> -Date: Sun, 8 Feb 2015 22:27:47 -0500 -Subject: [PATCH 15/40] CVE-2014-0210: unvalidated length fields in - fs_read_glyphs() from xorg/lib/libXfont commit - 520683652564c2a4e42328ae23eef9bb63271565 - -fs_read_glyphs() parses a reply from the font server. The reply -contains embedded length fields, none of which are validated. -This can cause out of bound reads when looping over the glyph -bitmaps in the reply. ---- - nx-X11/lib/font/fc/fserve.c | 29 ++++++++++++++++++++++++++++- - 1 file changed, 28 insertions(+), 1 deletion(-) - ---- a/nx-X11/lib/font/fc/fserve.c -+++ b/nx-X11/lib/font/fc/fserve.c -@@ -1917,6 +1917,7 @@ fs_read_glyphs(FontPathElementPtr fpe, F - FontInfoPtr pfi = &pfont->info; - fsQueryXBitmaps16Reply *rep; - char *buf; -+ long bufleft; /* length of reply left to use */ - fsOffset32 *ppbits; - fsOffset32 local_off; - char *off_adr; -@@ -1948,9 +1949,33 @@ fs_read_glyphs(FontPathElementPtr fpe, F - buf = (char *) rep; - buf += SIZEOF (fsQueryXBitmaps16Reply); - -+ bufleft = rep->length << 2; -+ bufleft -= SIZEOF (fsQueryXBitmaps16Reply); -+ -+ if ((bufleft / SIZEOF (fsOffset32)) < rep->num_chars) -+ { -+#ifdef DEBUG -+ fprintf(stderr, -+ "fsQueryXBitmaps16: num_chars (%d) > bufleft (%ld) / %d\n", -+ rep->num_chars, bufleft, SIZEOF (fsOffset32)); -+#endif -+ err = AllocError; -+ goto bail; -+ } - ppbits = (fsOffset32 *) buf; - buf += SIZEOF (fsOffset32) * (rep->num_chars); -+ bufleft -= SIZEOF (fsOffset32) * (rep->num_chars); - -+ if (bufleft < rep->nbytes) -+ { -+#ifdef DEBUG -+ fprintf(stderr, -+ "fsQueryXBitmaps16: nbytes (%d) > bufleft (%ld)\n", -+ rep->nbytes, bufleft); -+#endif -+ err = AllocError; -+ goto bail; -+ } - pbitmaps = (pointer ) buf; - - if (blockrec->type == FS_LOAD_GLYPHS) -@@ -2008,7 +2033,9 @@ fs_read_glyphs(FontPathElementPtr fpe, F - */ - if (NONZEROMETRICS(&fsdata->encoding[minchar].metrics)) - { -- if (local_off.length) -+ if (local_off.length && -+ (local_off.position < rep->nbytes) && -+ (local_off.length <= (rep->nbytes - local_off.position))) - { - bits = allbits; - allbits += local_off.length; diff --git a/debian/patches/1016-CVE-2014-0210-unvalidated-length-fields-in-fs_r.full.patch b/debian/patches/1016-CVE-2014-0210-unvalidated-length-fields-in-fs_r.full.patch deleted file mode 100644 index 339f03de7..000000000 --- a/debian/patches/1016-CVE-2014-0210-unvalidated-length-fields-in-fs_r.full.patch +++ /dev/null @@ -1,56 +0,0 @@ -From ef439da38d3a4c00a4e03e7d8f83cb359cd9a230 Mon Sep 17 00:00:00 2001 -From: Mike DePaulo <mikedep333@gmail.com> -Date: Sun, 8 Feb 2015 22:35:21 -0500 -Subject: [PATCH 16/40] CVE-2014-0210: unvalidated length fields in - fs_read_list() from xorg/lib/libXfont commit - 5fa73ac18474be3032ee7af9c6e29deab163ea39 - -fs_read_list() parses a reply from the font server. The reply -contains a list of strings with embedded length fields, none of -which are validated. This can cause out of bound reads when looping -over the strings in the reply. ---- - nx-X11/lib/font/fc/fserve.c | 15 +++++++++++++++ - 1 file changed, 15 insertions(+) - ---- a/nx-X11/lib/font/fc/fserve.c -+++ b/nx-X11/lib/font/fc/fserve.c -@@ -2366,6 +2366,7 @@ fs_read_list(FontPathElementPtr fpe, FSB - FSBlockedListPtr blist = (FSBlockedListPtr) blockrec->data; - fsListFontsReply *rep; - char *data; -+ long dataleft; /* length of reply left to use */ - int length, - i, - ret; -@@ -2383,16 +2384,30 @@ fs_read_list(FontPathElementPtr fpe, FSB - return AllocError; - } - data = (char *) rep + SIZEOF (fsListFontsReply); -+ dataleft = (rep->length << 2) - SIZEOF (fsListFontsReply); - - err = Successful; - /* copy data into FontPathRecord */ - for (i = 0; i < rep->nFonts; i++) - { -+ if (dataleft < 1) -+ break; - length = *(unsigned char *)data++; -+ dataleft--; /* used length byte */ -+ if (length > dataleft) { -+#ifdef DEBUG -+ fprintf(stderr, -+ "fsListFonts: name length (%d) > dataleft (%ld)\n", -+ length, dataleft); -+#endif -+ err = BadFontName; -+ break; -+ } - err = AddFontNamesName(blist->names, data, length); - if (err != Successful) - break; - data += length; -+ dataleft -= length; - } - _fs_done_read (conn, rep->length << 2); - return err; diff --git a/debian/patches/1017-CVE-2014-0210-unvalidated-length-fields-in-fs_r.full.patch b/debian/patches/1017-CVE-2014-0210-unvalidated-length-fields-in-fs_r.full.patch deleted file mode 100644 index 7ad02bffd..000000000 --- a/debian/patches/1017-CVE-2014-0210-unvalidated-length-fields-in-fs_r.full.patch +++ /dev/null @@ -1,107 +0,0 @@ -From b65259bf3bcca15b5069cb7a6c06f95a40f79813 Mon Sep 17 00:00:00 2001 -From: Mike DePaulo <mikedep333@gmail.com> -Date: Sun, 8 Feb 2015 22:38:32 -0500 -Subject: [PATCH 17/40] CVE-2014-0210: unvalidated length fields in - fs_read_list_info() from xorg/lib/libXfont commit - d338f81df1e188eb16e1d6aeea7f4800f89c1218 - -fs_read_list_info() parses a reply from the font server. The reply -contains a number of additional data items with embedded length or -count fields, none of which are validated. This can cause out of -bound reads when looping over these items in the reply. ---- - nx-X11/lib/font/fc/fserve.c | 56 ++++++++++++++++++++++++++++++++++++++++++++- - 1 file changed, 55 insertions(+), 1 deletion(-) - ---- a/nx-X11/lib/font/fc/fserve.c -+++ b/nx-X11/lib/font/fc/fserve.c -@@ -2501,6 +2501,7 @@ fs_read_list_info(FontPathElementPtr fpe - FSBlockedListInfoPtr binfo = (FSBlockedListInfoPtr) blockrec->data; - fsListFontsWithXInfoReply *rep; - char *buf; -+ long bufleft; - FSFpePtr conn = (FSFpePtr) fpe->private; - fsPropInfo *pi; - fsPropOffset *po; -@@ -2537,7 +2538,8 @@ fs_read_list_info(FontPathElementPtr fpe - } - - buf = (char *) rep + SIZEOF (fsListFontsWithXInfoReply); -- -+ bufleft = (rep->length << 2) - SIZEOF (fsListFontsWithXInfoReply); -+ - /* - * The original FS implementation didn't match - * the spec, version 1 was respecified to match the FS. -@@ -2545,19 +2547,71 @@ fs_read_list_info(FontPathElementPtr fpe - */ - if (conn->fsMajorVersion <= 1) - { -+ if (rep->nameLength > bufleft) { -+#ifdef DEBUG -+ fprintf(stderr, -+ "fsListFontsWithXInfo: name length (%d) > bufleft (%ld)\n", -+ (int) rep->nameLength, bufleft); -+#endif -+ err = AllocError; -+ goto done; -+ } -+ /* binfo->name is a 256 char array, rep->nameLength is a CARD8 */ - memcpy (binfo->name, buf, rep->nameLength); - buf += _fs_pad_length (rep->nameLength); -+ bufleft -= _fs_pad_length (rep->nameLength); - } - pi = (fsPropInfo *) buf; -+ if (SIZEOF (fsPropInfo) > bufleft) { -+#ifdef DEBUG -+ fprintf(stderr, -+ "fsListFontsWithXInfo: PropInfo length (%d) > bufleft (%ld)\n", -+ (int) SIZEOF (fsPropInfo), bufleft); -+#endif -+ err = AllocError; -+ goto done; -+ } -+ bufleft -= SIZEOF (fsPropInfo); - buf += SIZEOF (fsPropInfo); - po = (fsPropOffset *) buf; -+ if (pi->num_offsets > (bufleft / SIZEOF (fsPropOffset))) { -+#ifdef DEBUG -+ fprintf(stderr, -+ "fsListFontsWithXInfo: offset length (%d * %d) > bufleft (%ld)\n", -+ pi->num_offsets, (int) SIZEOF (fsPropOffset), bufleft); -+#endif -+ err = AllocError; -+ goto done; -+ } -+ bufleft -= pi->num_offsets * SIZEOF (fsPropOffset); - buf += pi->num_offsets * SIZEOF (fsPropOffset); - pd = (pointer) buf; -+ if (pi->data_len > bufleft) { -+#ifdef DEBUG -+ fprintf(stderr, -+ "fsListFontsWithXInfo: data length (%d) > bufleft (%ld)\n", -+ pi->data_len, bufleft); -+#endif -+ err = AllocError; -+ goto done; -+ } -+ bufleft -= pi->data_len; - buf += pi->data_len; - if (conn->fsMajorVersion > 1) - { -+ if (rep->nameLength > bufleft) { -+#ifdef DEBUG -+ fprintf(stderr, -+ "fsListFontsWithXInfo: name length (%d) > bufleft (%ld)\n", -+ (int) rep->nameLength, bufleft); -+#endif -+ err = AllocError; -+ goto done; -+ } -+ /* binfo->name is a 256 char array, rep->nameLength is a CARD8 */ - memcpy (binfo->name, buf, rep->nameLength); - buf += _fs_pad_length (rep->nameLength); -+ bufleft -= _fs_pad_length (rep->nameLength); - } - - #ifdef DEBUG diff --git a/debian/patches/1018-unchecked-malloc-may-allow-unauthed-client-to-c.full.patch b/debian/patches/1018-unchecked-malloc-may-allow-unauthed-client-to-c.full.patch deleted file mode 100644 index 15137cad4..000000000 --- a/debian/patches/1018-unchecked-malloc-may-allow-unauthed-client-to-c.full.patch +++ /dev/null @@ -1,38 +0,0 @@ -From 37e7fb1f64b29ef06ec4d69ab0b7afa99c613383 Mon Sep 17 00:00:00 2001 -From: Alan Coopersmith <alan.coopersmith@oracle.com> -Date: Fri, 17 Jan 2014 18:54:03 -0800 -Subject: [PATCH 18/40] unchecked malloc may allow unauthed client to crash - Xserver [CVE-2014-8091] - -authdes_ezdecode() calls malloc() using a length provided by the -connection handshake sent by a newly connected client in order -to authenticate to the server, so should be treated as untrusted. - -It didn't check if malloc() failed before writing to the newly -allocated buffer, so could lead to a server crash if the server -fails to allocate memory (up to UINT16_MAX bytes, since the len -field is a CARD16 in the X protocol). - -Reported-by: Ilja Van Sprundel <ivansprundel@ioactive.com> -Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com> -Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net> - -Conflicts: - os/rpcauth.c ---- - nx-X11/programs/Xserver/os/rpcauth.c | 4 ++++ - 1 file changed, 4 insertions(+) - ---- a/nx-X11/programs/Xserver/os/rpcauth.c -+++ b/nx-X11/programs/Xserver/os/rpcauth.c -@@ -78,6 +78,10 @@ authdes_ezdecode(char *inmsg, int len) - SVCXPRT xprt; - - temp_inmsg = (char *) xalloc(len); -+ if (temp_inmsg == NULL) { -+ why = AUTH_FAILED; /* generic error, since there is no AUTH_BADALLOC */ -+ return NULL; -+ } - memmove(temp_inmsg, inmsg, len); - - memset((char *)&msg, 0, sizeof(msg)); diff --git a/debian/patches/1019-dix-integer-overflow-in-ProcPutImage-CVE-2014-8.full.patch b/debian/patches/1019-dix-integer-overflow-in-ProcPutImage-CVE-2014-8.full.patch deleted file mode 100644 index 5a83050b3..000000000 --- a/debian/patches/1019-dix-integer-overflow-in-ProcPutImage-CVE-2014-8.full.patch +++ /dev/null @@ -1,53 +0,0 @@ -From c1225fe6451d7a5f3741ce0fff8f54e38e0a14da Mon Sep 17 00:00:00 2001 -From: Alan Coopersmith <alan.coopersmith@oracle.com> -Date: Wed, 22 Jan 2014 21:11:16 -0800 -Subject: [PATCH 19/40] dix: integer overflow in ProcPutImage() [CVE-2014-8092 - 1/4] - -ProcPutImage() calculates a length field from a width, left pad and depth -specified by the client (if the specified format is XYPixmap). - -The calculations for the total amount of memory the server needs for the -pixmap can overflow a 32-bit number, causing out-of-bounds memory writes -on 32-bit systems (since the length is stored in a long int variable). - -v2: backport to nx-libs 3.6.x (Mike DePaulo) -v3: port to NXdispatch.c rather than dispatch.c (Mike DePaulo) -v4: backport v3 to nx-libs 3.5.0.x (Mihai Moldovan) - -Reported-by: Ilja Van Sprundel <ivansprundel@ioactive.com> -Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com> -Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net> - -Conflicts: - dix/dispatch.c ---- - nx-X11/programs/Xserver/dix/dispatch.c | 4 +++- - 1 file changed, 3 insertions(+), 1 deletion(-) - ---- a/nx-X11/programs/Xserver/dix/dispatch.c -+++ b/nx-X11/programs/Xserver/dix/dispatch.c -@@ -2071,7 +2071,9 @@ ProcPutImage(register ClientPtr client) - - tmpImage = (char *)&stuff[1]; - lengthProto = length; -- -+ if (lengthProto >= (INT32_MAX / stuff->height)) -+ return BadLength; -+ - if (((((lengthProto * stuff->height) + (unsigned)3) >> 2) + - (sizeof(xPutImageReq) >> 2)) != client->req_len) - return BadLength; ---- a/nx-X11/programs/Xserver/hw/nxagent/NXdispatch.c -+++ b/nx-X11/programs/Xserver/hw/nxagent/NXdispatch.c -@@ -2630,7 +2630,9 @@ ProcPutImage(client) - - tmpImage = (char *)&stuff[1]; - lengthProto = length; -- -+ if (lengthProto >= (INT32_MAX / stuff->height)) -+ return BadLength; -+ - if (((((lengthProto * stuff->height) + (unsigned)3) >> 2) + - (sizeof(xPutImageReq) >> 2)) != client->req_len) - return BadLength; diff --git a/debian/patches/1020-dix-integer-overflow-in-GetHosts-CVE-2014-8092-.full.patch b/debian/patches/1020-dix-integer-overflow-in-GetHosts-CVE-2014-8092-.full.patch deleted file mode 100644 index b4bd0179c..000000000 --- a/debian/patches/1020-dix-integer-overflow-in-GetHosts-CVE-2014-8092-.full.patch +++ /dev/null @@ -1,49 +0,0 @@ -From b6b5b14e4190048fadbfbcf063d873d318127e81 Mon Sep 17 00:00:00 2001 -From: Alan Coopersmith <alan.coopersmith@oracle.com> -Date: Mon, 6 Jan 2014 23:30:14 -0800 -Subject: [PATCH 20/40] dix: integer overflow in GetHosts() [CVE-2014-8092 2/4] - -GetHosts() iterates over all the hosts it has in memory, and copies -them to a buffer. The buffer length is calculated by iterating over -all the hosts and adding up all of their combined length. There is a -potential integer overflow, if there are lots and lots of hosts (with -a combined length of > ~4 gig). This should be possible by repeatedly -calling ProcChangeHosts() on 64bit machines with enough memory. - -This patch caps the list at 1mb, because multi-megabyte hostname -lists for X access control are insane. - -v2: backport to nx-libs 3.6.x (Mike DePaulo) -v3: human-readable version of "1 MB" (Mihai Moldovan) -Reported-by: Ilja Van Sprundel <ivansprundel@ioactive.com> -Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com> -Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net> - -Conflicts: - os/access.c ---- - nx-X11/programs/Xserver/os/access.c | 6 ++++++ - 1 file changed, 6 insertions(+) - ---- a/nx-X11/programs/Xserver/os/access.c -+++ b/nx-X11/programs/Xserver/os/access.c -@@ -1719,6 +1719,10 @@ GetHosts ( - { - nHosts++; - n += (((host->len + 3) >> 2) << 2) + sizeof(xHostEntry); -+ /* Could check for INT_MAX, but in reality having more than 1mb of -+ hostnames in the access list is ridiculous */ -+ if (n >= 1024*1024) -+ break; - } - if (n) - { -@@ -1730,6 +1734,8 @@ GetHosts ( - for (host = validhosts; host; host = host->next) - { - len = host->len; -+ if ((ptr + sizeof(xHostEntry) + len) > (data + n)) -+ break; - ((xHostEntry *)ptr)->family = host->family; - ((xHostEntry *)ptr)->length = len; - ptr += sizeof(xHostEntry); diff --git a/debian/patches/1021-dix-integer-overflow-in-RegionSizeof-CVE-2014-8.full.patch b/debian/patches/1021-dix-integer-overflow-in-RegionSizeof-CVE-2014-8.full.patch deleted file mode 100644 index 64d7d3e41..000000000 --- a/debian/patches/1021-dix-integer-overflow-in-RegionSizeof-CVE-2014-8.full.patch +++ /dev/null @@ -1,198 +0,0 @@ -From ed1e13a1f4e316bcf0dc0d4b2c16b1df3f075005 Mon Sep 17 00:00:00 2001 -From: Alan Coopersmith <alan.coopersmith@oracle.com> -Date: Wed, 22 Jan 2014 22:37:15 -0800 -Subject: [PATCH 21/40] dix: integer overflow in RegionSizeof() [CVE-2014-8092 - 3/4] - -RegionSizeof contains several integer overflows if a large length -value is passed in. Once we fix it to return 0 on overflow, we -also have to fix the callers to handle this error condition - -v2: Fixed limit calculation in RegionSizeof as pointed out by jcristau. -v3: backport to nx-libs 3.6.x (Mike DePaulo) - -Reported-by: Ilja Van Sprundel <ivansprundel@ioactive.com> -Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com> -Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net> -Reviewed-by: Julien Cristau <jcristau@debian.org> - -Conflicts: - dix/region.c - include/regionstr.h ---- - nx-X11/programs/Xserver/include/regionstr.h | 10 +++++--- - nx-X11/programs/Xserver/mi/miregion.c | 39 ++++++++++++++++++++--------- - 2 files changed, 34 insertions(+), 15 deletions(-) - ---- a/nx-X11/programs/Xserver/include/regionstr.h -+++ b/nx-X11/programs/Xserver/include/regionstr.h -@@ -53,6 +53,9 @@ SOFTWARE. - - typedef struct _Region RegionRec, *RegionPtr; - -+#include <stddef.h> -+#include <limits.h> -+ - #include "miscstruct.h" - - /* Return values from RectIn() */ -@@ -93,7 +96,7 @@ extern RegDataRec miBrokenData; - #define REGION_BOX(reg,i) (®ION_BOXPTR(reg)[i]) - #define REGION_TOP(reg) REGION_BOX(reg, (reg)->data->numRects) - #define REGION_END(reg) REGION_BOX(reg, (reg)->data->numRects - 1) --#define REGION_SZOF(n) (sizeof(RegDataRec) + ((n) * sizeof(BoxRec))) -+#define REGION_SZOF(n) (n < ((INT_MAX - sizeof(RegDataRec)) / sizeof(BoxRec)) ? sizeof(RegDataRec) + ((n) * sizeof(BoxRec)) : 0) - - /* Keith recommends weaning the region code of pScreen argument */ - #define REG_pScreen screenInfo.screens[0] -@@ -257,9 +260,10 @@ extern RegDataRec miBrokenData; - } \ - else \ - { \ -+ size_t rgnSize; \ - (_pReg)->extents = miEmptyBox; \ -- if (((_size) > 1) && ((_pReg)->data = \ -- (RegDataPtr)xalloc(REGION_SZOF(_size)))) \ -+ if (((_size) > 1) && ((rgnSize = REGION_SZOF(_size)) > 0) && \ -+ ((_pReg)->data = (RegDataPtr)xalloc(rgnSize))) \ - { \ - (_pReg)->data->size = (_size); \ - (_pReg)->data->numRects = 0; \ ---- a/nx-X11/programs/Xserver/mi/miregion.c -+++ b/nx-X11/programs/Xserver/mi/miregion.c -@@ -172,7 +172,6 @@ Equipment Corporation. - ((r1)->y1 <= (r2)->y1) && \ - ((r1)->y2 >= (r2)->y2) ) - --#define xallocData(n) (RegDataPtr)xalloc(REGION_SZOF(n)) - #define xfreeData(reg) if ((reg)->data && (reg)->data->size) xfree((reg)->data) - - #define RECTALLOC_BAIL(pReg,n,bail) \ -@@ -209,8 +208,9 @@ if (!(pReg)->data || (((pReg)->data->num - #define DOWNSIZE(reg,numRects) \ - if (((numRects) < ((reg)->data->size >> 1)) && ((reg)->data->size > 50)) \ - { \ -- RegDataPtr NewData; \ -- NewData = (RegDataPtr)xrealloc((reg)->data, REGION_SZOF(numRects)); \ -+ size_t NewSize = REGION_SZOF(numRects); \ -+ RegDataPtr NewData = \ -+ (NewSize > 0) ? (RegDataPtr)xrealloc((reg)->data, NewSize) : NULL; \ - if (NewData) \ - { \ - NewData->size = (numRects); \ -@@ -337,7 +337,7 @@ miRegionCreate(rect, size) - int size; - { - register RegionPtr pReg; -- -+ size_t newSize; - pReg = (RegionPtr)xalloc(sizeof(RegionRec)); - if (!pReg) - return &miBrokenRegion; -@@ -349,7 +349,9 @@ miRegionCreate(rect, size) - else - { - pReg->extents = miEmptyBox; -- if ((size > 1) && (pReg->data = xallocData(size))) -+ newSize = REGION_SZOF(size); -+ if ((size > 1) && (newSize > 0) && -+ (pReg->data = xalloc(newSize))) - { - pReg->data->size = size; - pReg->data->numRects = 0; -@@ -371,6 +373,8 @@ miRegionInit(pReg, rect, size) - BoxPtr rect; - int size; - { -+ size_t newSize; -+ - if (rect) - { - pReg->extents = *rect; -@@ -379,7 +383,9 @@ miRegionInit(pReg, rect, size) - else - { - pReg->extents = miEmptyBox; -- if ((size > 1) && (pReg->data = xallocData(size))) -+ newSize = REGION_SZOF(size); -+ if ((size > 1) && (newSize > 0) && -+ (pReg->data = xalloc(newSize))) - { - pReg->data->size = size; - pReg->data->numRects = 0; -@@ -423,11 +429,13 @@ miRectAlloc( - int n) - { - RegDataPtr data; -+ size_t rgnSize; - - if (!pRgn->data) - { - n++; -- pRgn->data = xallocData(n); -+ rgnSize = REGION_SZOF(n); -+ pRgn->data = (rgnSize > 0) ? xalloc(rgnSize) : NULL; - if (!pRgn->data) - return miRegionBreak (pRgn); - pRgn->data->numRects = 1; -@@ -435,7 +443,8 @@ miRectAlloc( - } - else if (!pRgn->data->size) - { -- pRgn->data = xallocData(n); -+ rgnSize = REGION_SZOF(n); -+ pRgn->data = (rgnSize > 0) ? xalloc(rgnSize) : NULL; - if (!pRgn->data) - return miRegionBreak (pRgn); - pRgn->data->numRects = 0; -@@ -449,7 +458,8 @@ miRectAlloc( - n = 250; - } - n += pRgn->data->numRects; -- data = (RegDataPtr)xrealloc(pRgn->data, REGION_SZOF(n)); -+ rgnSize = REGION_SZOF(n); -+ data = (rgnSize > 0) ? xrealloc(pRgn->data, rgnSize) : NULL; - if (!data) - return miRegionBreak (pRgn); - pRgn->data = data; -@@ -476,8 +486,10 @@ miRegionCopy(dst, src) - } - if (!dst->data || (dst->data->size < src->data->numRects)) - { -+ size_t newSize = REGION_SZOF(src->data->numRects); - xfreeData(dst); -- dst->data = xallocData(src->data->numRects); -+ -+ dst->data = newSize > 0 ? xalloc(newSize) : NULL; - if (!dst->data) - return miRegionBreak (dst); - dst->data->size = src->data->numRects; -@@ -1667,6 +1679,7 @@ miRectsToRegion(nrects, prect, ctype) - register BoxPtr pBox; - register int i; - int x1, y1, x2, y2; -+ size_t newSize; - - pRgn = miRegionCreate(NullBox, 0); - if (REGION_NAR (pRgn)) -@@ -1691,7 +1704,8 @@ miRectsToRegion(nrects, prect, ctype) - } - return pRgn; - } -- pData = xallocData(nrects); -+ newSize = REGION_SZOF(nrects); -+ pData = newSize > 0 ? xalloc(newSize) : NULL; - if (!pData) - { - miRegionBreak (pRgn); -@@ -2206,8 +2220,9 @@ miRegionDataCopy( - } - if (!dst->data || (dst->data->size < src->data->numRects)) - { -+ size_t newSize = REGION_SZOF(src->data->numRects); - xfreeData(dst); -- dst->data = xallocData(src->data->numRects); -+ dst->data = newSize > 0 ? xalloc(newSize) : NULL; - if (!dst->data) - return miRegionBreak (dst); - } diff --git a/debian/patches/1022-dix-integer-overflow-in-REQUEST_FIXED_SIZE-CVE-.full.patch b/debian/patches/1022-dix-integer-overflow-in-REQUEST_FIXED_SIZE-CVE-.full.patch deleted file mode 100644 index 87b55abf1..000000000 --- a/debian/patches/1022-dix-integer-overflow-in-REQUEST_FIXED_SIZE-CVE-.full.patch +++ /dev/null @@ -1,41 +0,0 @@ -From 82d7279ebfa04f319e68145b3adbf65716e59584 Mon Sep 17 00:00:00 2001 -From: Alan Coopersmith <alan.coopersmith@oracle.com> -Date: Wed, 22 Jan 2014 23:44:46 -0800 -Subject: [PATCH 22/40] dix: integer overflow in REQUEST_FIXED_SIZE() - [CVE-2014-8092 4/4] - -Force use of 64-bit integers when evaluating data provided by clients -in 32-bit fields which can overflow when added or multiplied during -checks. - -Reported-by: Ilja Van Sprundel <ivansprundel@ioactive.com> -Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com> -Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net> - -RHEL5: add #include <stdint.h> for uint64_t -v3: backport to nx-libs 3.6.x (Mike DePaulo) ---- - nx-X11/programs/Xserver/include/dix.h | 5 ++++- - 1 file changed, 4 insertions(+), 1 deletion(-) - ---- a/nx-X11/programs/Xserver/include/dix.h -+++ b/nx-X11/programs/Xserver/include/dix.h -@@ -50,6 +50,8 @@ SOFTWARE. - #ifndef DIX_H - #define DIX_H - -+#include <stdint.h> -+ - #include "gc.h" - #include "window.h" - #include "input.h" -@@ -73,7 +75,8 @@ SOFTWARE. - - #define REQUEST_FIXED_SIZE(req, n)\ - if (((sizeof(req) >> 2) > client->req_len) || \ -- (((sizeof(req) + (n) + 3) >> 2) != client->req_len)) \ -+ ((n >> 2) >= client->req_len) || \ -+ ((((uint64_t) sizeof(req) + (n) + 3) >> 2) != (uint64_t) client->req_len)) \ - return(BadLength) - - #define LEGAL_NEW_RESOURCE(id,client)\ diff --git a/debian/patches/1023-dbe-unvalidated-lengths-in-DbeSwapBuffers-calls.full.patch b/debian/patches/1023-dbe-unvalidated-lengths-in-DbeSwapBuffers-calls.full.patch deleted file mode 100644 index f9fc99489..000000000 --- a/debian/patches/1023-dbe-unvalidated-lengths-in-DbeSwapBuffers-calls.full.patch +++ /dev/null @@ -1,75 +0,0 @@ -From 985ca320f841bd9a3efc484f92436b3d65ec1b31 Mon Sep 17 00:00:00 2001 -From: Alan Coopersmith <alan.coopersmith@oracle.com> -Date: Wed, 22 Jan 2014 23:12:04 -0800 -Subject: [PATCH 23/40] dbe: unvalidated lengths in DbeSwapBuffers calls - [CVE-2014-8097] - -ProcDbeSwapBuffers() has a 32bit (n) length value that it uses to read -from a buffer. The length is never validated, which can lead to out of -bound reads, and possibly returning the data read from out of bounds to -the misbehaving client via an X Error packet. - -SProcDbeSwapBuffers() swaps data (for correct endianness) before -handing it off to the real proc. While doing the swapping, the -length field is not validated, which can cause memory corruption. - -v2: reorder checks to avoid compilers optimizing out checks for overflow -that happen after we'd already have done the overflowing multiplications. -v3: backport to nx-libs 3.6.x (Mike DePaulo) - -Reported-by: Ilja Van Sprundel <ivansprundel@ioactive.com> -Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com> -Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net> - -Conflicts: - dbe/dbe.c ---- - nx-X11/programs/Xserver/dbe/dbe.c | 11 ++++++++--- - 1 file changed, 8 insertions(+), 3 deletions(-) - ---- a/nx-X11/programs/Xserver/dbe/dbe.c -+++ b/nx-X11/programs/Xserver/dbe/dbe.c -@@ -725,8 +725,8 @@ ProcDbeSwapBuffers(client) - DbeSwapInfoPtr swapInfo; - xDbeSwapInfo *dbeSwapInfo; - int error; -- register int i, j; -- int nStuff; -+ unsigned int i, j; -+ unsigned int nStuff; - - - REQUEST_AT_LEAST_SIZE(xDbeSwapBuffersReq); -@@ -734,11 +734,13 @@ ProcDbeSwapBuffers(client) - - if (nStuff == 0) - { -+ REQUEST_SIZE_MATCH(xDbeSwapBuffersReq); - return(Success); - } - - if (nStuff > UINT32_MAX / sizeof(DbeSwapInfoRec)) - return BadAlloc; -+ REQUEST_FIXED_SIZE(xDbeSwapBuffersReq, nStuff * sizeof(xDbeSwapInfo)); - - /* Get to the swap info appended to the end of the request. */ - dbeSwapInfo = (xDbeSwapInfo *)&stuff[1]; -@@ -1289,7 +1291,7 @@ SProcDbeSwapBuffers(client) - ClientPtr client; - { - REQUEST(xDbeSwapBuffersReq); -- register int i, n; -+ unsigned int i, n; - xDbeSwapInfo *pSwapInfo; - - -@@ -1297,6 +1299,9 @@ SProcDbeSwapBuffers(client) - REQUEST_AT_LEAST_SIZE(xDbeSwapBuffersReq); - - swapl(&stuff->n, n); -+ if (stuff->n > UINT32_MAX / sizeof(DbeSwapInfoRec)) -+ return BadAlloc; -+ REQUEST_FIXED_SIZE(xDbeSwapBuffersReq, stuff->n * sizeof(xDbeSwapInfo)); - - if (stuff->n != 0) - { diff --git a/debian/patches/1024-Xi-unvalidated-lengths-in-Xinput-extension-CVE-.full.patch b/debian/patches/1024-Xi-unvalidated-lengths-in-Xinput-extension-CVE-.full.patch deleted file mode 100644 index 9d23ae0d1..000000000 --- a/debian/patches/1024-Xi-unvalidated-lengths-in-Xinput-extension-CVE-.full.patch +++ /dev/null @@ -1,103 +0,0 @@ -From fde1375e373137ac52d0530b819bf9df64ab14c1 Mon Sep 17 00:00:00 2001 -From: Alan Coopersmith <alan.coopersmith@oracle.com> -Date: Sun, 26 Jan 2014 10:54:41 -0800 -Subject: [PATCH 24/40] Xi: unvalidated lengths in Xinput extension - [CVE-2014-8095] - -Multiple functions in the Xinput extension handling of requests from -clients failed to check that the length of the request sent by the -client was large enough to perform all the required operations and -thus could read or write to memory outside the bounds of the request -buffer. - -This commit includes the creation of a new REQUEST_AT_LEAST_EXTRA_SIZE -macro in include/dix.h for the common case of needing to ensure a -request is large enough to include both the request itself and a -minimum amount of extra data following the request header. - -v2: backport to nx-libs 3.6.x (Mike DePaulo) - -Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com> -Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net> - -Conflicts: - Xi/chgdctl.c - Xi/chgfctl.c - Xi/xiallowev.c - Xi/xichangecursor.c - Xi/xichangehierarchy.c - Xi/xigetclientpointer.c - Xi/xigrabdev.c - Xi/xipassivegrab.c - Xi/xiproperty.c - Xi/xiquerydevice.c - Xi/xiquerypointer.c - Xi/xiselectev.c - Xi/xisetclientpointer.c - Xi/xisetdevfocus.c - Xi/xiwarppointer.c - -[RHEL5: Xi/xi* files are XI2 ] ---- - nx-X11/programs/Xserver/Xi/chgdctl.c | 4 ++-- - nx-X11/programs/Xserver/Xi/chgfctl.c | 2 ++ - nx-X11/programs/Xserver/Xi/sendexev.c | 3 +++ - nx-X11/programs/Xserver/include/dix.h | 4 ++++ - 4 files changed, 11 insertions(+), 2 deletions(-) - ---- a/nx-X11/programs/Xserver/Xi/chgdctl.c -+++ b/nx-X11/programs/Xserver/Xi/chgdctl.c -@@ -87,7 +87,7 @@ SProcXChangeDeviceControl(client) - - REQUEST(xChangeDeviceControlReq); - swaps(&stuff->length, n); -- REQUEST_AT_LEAST_SIZE(xChangeDeviceControlReq); -+ REQUEST_AT_LEAST_EXTRA_SIZE(xChangeDeviceControlReq, sizeof(xDeviceCtl)); - swaps(&stuff->control, n); - return(ProcXChangeDeviceControl(client)); - } -@@ -111,7 +111,7 @@ ProcXChangeDeviceControl(client) - CARD32 *resolution; - - REQUEST(xChangeDeviceControlReq); -- REQUEST_AT_LEAST_SIZE(xChangeDeviceControlReq); -+ REQUEST_AT_LEAST_EXTRA_SIZE(xChangeDeviceControlReq, sizeof(xDeviceCtl)); - - len = stuff->length - (sizeof(xChangeDeviceControlReq) >>2); - dev = LookupDeviceIntRec (stuff->deviceid); ---- a/nx-X11/programs/Xserver/Xi/chgfctl.c -+++ b/nx-X11/programs/Xserver/Xi/chgfctl.c -@@ -160,6 +160,8 @@ ProcXChangeFeedbackControl(client) - xStringFeedbackCtl *f = ((xStringFeedbackCtl *) &stuff[1]); - if (client->swapped) - { -+ if (len < (sizeof(xStringFeedbackCtl) + 3) >> 2) -+ return BadLength; - swaps(&f->num_keysyms,n); - } - if (len != ((sizeof(xStringFeedbackCtl)>>2) + f->num_keysyms)) ---- a/nx-X11/programs/Xserver/Xi/sendexev.c -+++ b/nx-X11/programs/Xserver/Xi/sendexev.c -@@ -154,6 +154,9 @@ ProcXSendExtensionEvent (client) - return Success; - } - -+ if (stuff->num_events == 0) -+ return ret; -+ - /* The client's event type must be one defined by an extension. */ - - first = ((xEvent *) &stuff[1]); ---- a/nx-X11/programs/Xserver/include/dix.h -+++ b/nx-X11/programs/Xserver/include/dix.h -@@ -73,6 +73,10 @@ SOFTWARE. - if ((sizeof(req) >> 2) > client->req_len )\ - return(BadLength) - -+#define REQUEST_AT_LEAST_EXTRA_SIZE(req, extra) \ -+ if (((sizeof(req) + ((uint64_t) extra)) >> 2) > client->req_len ) \ -+ return(BadLength) -+ - #define REQUEST_FIXED_SIZE(req, n)\ - if (((sizeof(req) >> 2) > client->req_len) || \ - ((n >> 2) >= client->req_len) || \ diff --git a/debian/patches/1025-xcmisc-unvalidated-length-in-SProcXCMiscGetXIDL.full.patch b/debian/patches/1025-xcmisc-unvalidated-length-in-SProcXCMiscGetXIDL.full.patch deleted file mode 100644 index 7b1e846ae..000000000 --- a/debian/patches/1025-xcmisc-unvalidated-length-in-SProcXCMiscGetXIDL.full.patch +++ /dev/null @@ -1,24 +0,0 @@ -From 0d53194f7ef5980a7cd78950a4f3eb2b56e65746 Mon Sep 17 00:00:00 2001 -From: Alan Coopersmith <alan.coopersmith@oracle.com> -Date: Sun, 26 Jan 2014 17:18:54 -0800 -Subject: [PATCH 25/40] xcmisc: unvalidated length in SProcXCMiscGetXIDList() - [CVE-2014-8096] - -v2: backport to nx-libs 3.6.x (Mike DePaulo) - -Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com> -Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net> ---- - nx-X11/programs/Xserver/Xext/xcmisc.c | 1 + - 1 file changed, 1 insertion(+) - ---- a/nx-X11/programs/Xserver/Xext/xcmisc.c -+++ b/nx-X11/programs/Xserver/Xext/xcmisc.c -@@ -228,6 +228,7 @@ SProcXCMiscGetXIDList(client) - { - register int n; - REQUEST(xXCMiscGetXIDListReq); -+ REQUEST_SIZE_MATCH(xXCMiscGetXIDListReq); - - swaps(&stuff->length, n); - swapl(&stuff->count, n); diff --git a/debian/patches/1026-Xv-unvalidated-lengths-in-XVideo-extension-swap.full.patch b/debian/patches/1026-Xv-unvalidated-lengths-in-XVideo-extension-swap.full.patch deleted file mode 100644 index 8833996d1..000000000 --- a/debian/patches/1026-Xv-unvalidated-lengths-in-XVideo-extension-swap.full.patch +++ /dev/null @@ -1,343 +0,0 @@ -From 2abde565df5de98800cec428fe612cb979063c02 Mon Sep 17 00:00:00 2001 -From: Alan Coopersmith <alan.coopersmith@oracle.com> -Date: Sun, 26 Jan 2014 19:23:17 -0800 -Subject: [PATCH 26/40] Xv: unvalidated lengths in XVideo extension swapped - procs [CVE-2014-8099] - -v2: backport to nx-libs 3.6.x (Mike DePaulo) -v3: port to NXxvdisp.c rather than xvdisp.c (Mike DePaulo) -v4: backport v3 to nx-libs 3.5.0.x (Mihai Moldovan) - -Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com> -Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net> - -Conflicts: - Xext/xvdisp.c ---- - nx-X11/programs/Xserver/Xext/xvdisp.c | 20 ++++++++++++++++++++ - 1 file changed, 20 insertions(+) - ---- a/nx-X11/programs/Xserver/Xext/xvdisp.c -+++ b/nx-X11/programs/Xserver/Xext/xvdisp.c -@@ -1347,6 +1347,7 @@ SProcXvQueryExtension(ClientPtr client) - { - register char n; - REQUEST(xvQueryExtensionReq); -+ REQUEST_SIZE_MATCH(xvQueryExtensionReq); - swaps(&stuff->length, n); - return ProcXvQueryExtension(client); - } -@@ -1356,6 +1357,7 @@ SProcXvQueryAdaptors(ClientPtr client) - { - register char n; - REQUEST(xvQueryAdaptorsReq); -+ REQUEST_SIZE_MATCH(xvQueryAdaptorsReq); - swaps(&stuff->length, n); - swapl(&stuff->window, n); - return ProcXvQueryAdaptors(client); -@@ -1366,6 +1368,7 @@ SProcXvQueryEncodings(ClientPtr client) - { - register char n; - REQUEST(xvQueryEncodingsReq); -+ REQUEST_SIZE_MATCH(xvQueryEncodingsReq); - swaps(&stuff->length, n); - swapl(&stuff->port, n); - return ProcXvQueryEncodings(client); -@@ -1376,6 +1379,7 @@ SProcXvGrabPort(ClientPtr client) - { - register char n; - REQUEST(xvGrabPortReq); -+ REQUEST_SIZE_MATCH(xvGrabPortReq); - swaps(&stuff->length, n); - swapl(&stuff->port, n); - swapl(&stuff->time, n); -@@ -1387,6 +1391,7 @@ SProcXvUngrabPort(ClientPtr client) - { - register char n; - REQUEST(xvUngrabPortReq); -+ REQUEST_SIZE_MATCH(xvUngrabPortReq); - swaps(&stuff->length, n); - swapl(&stuff->port, n); - swapl(&stuff->time, n); -@@ -1398,6 +1403,7 @@ SProcXvPutVideo(ClientPtr client) - { - register char n; - REQUEST(xvPutVideoReq); -+ REQUEST_SIZE_MATCH(xvPutVideoReq); - swaps(&stuff->length, n); - swapl(&stuff->port, n); - swapl(&stuff->drawable, n); -@@ -1418,6 +1424,7 @@ SProcXvPutStill(ClientPtr client) - { - register char n; - REQUEST(xvPutStillReq); -+ REQUEST_SIZE_MATCH(xvPutStillReq); - swaps(&stuff->length, n); - swapl(&stuff->port, n); - swapl(&stuff->drawable, n); -@@ -1438,6 +1445,7 @@ SProcXvGetVideo(ClientPtr client) - { - register char n; - REQUEST(xvGetVideoReq); -+ REQUEST_SIZE_MATCH(xvGetVideoReq); - swaps(&stuff->length, n); - swapl(&stuff->port, n); - swapl(&stuff->drawable, n); -@@ -1458,6 +1466,7 @@ SProcXvGetStill(ClientPtr client) - { - register char n; - REQUEST(xvGetStillReq); -+ REQUEST_SIZE_MATCH(xvGetStillReq); - swaps(&stuff->length, n); - swapl(&stuff->port, n); - swapl(&stuff->drawable, n); -@@ -1478,6 +1487,7 @@ SProcXvPutImage(ClientPtr client) - { - register char n; - REQUEST(xvPutImageReq); -+ REQUEST_AT_LEAST_SIZE(xvPutImageReq); - swaps(&stuff->length, n); - swapl(&stuff->port, n); - swapl(&stuff->drawable, n); -@@ -1502,6 +1512,7 @@ SProcXvShmPutImage(ClientPtr client) - { - register char n; - REQUEST(xvShmPutImageReq); -+ REQUEST_SIZE_MATCH(xvShmPutImageReq); - swaps(&stuff->length, n); - swapl(&stuff->port, n); - swapl(&stuff->drawable, n); -@@ -1529,6 +1540,7 @@ SProcXvSelectVideoNotify(ClientPtr clien - { - register char n; - REQUEST(xvSelectVideoNotifyReq); -+ REQUEST_SIZE_MATCH(xvSelectVideoNotifyReq); - swaps(&stuff->length, n); - swapl(&stuff->drawable, n); - return ProcXvSelectVideoNotify(client); -@@ -1539,6 +1551,7 @@ SProcXvSelectPortNotify(ClientPtr client - { - register char n; - REQUEST(xvSelectPortNotifyReq); -+ REQUEST_SIZE_MATCH(xvSelectPortNotifyReq); - swaps(&stuff->length, n); - swapl(&stuff->port, n); - return ProcXvSelectPortNotify(client); -@@ -1549,6 +1562,7 @@ SProcXvStopVideo(ClientPtr client) - { - register char n; - REQUEST(xvStopVideoReq); -+ REQUEST_SIZE_MATCH(xvStopVideoReq); - swaps(&stuff->length, n); - swapl(&stuff->port, n); - swapl(&stuff->drawable, n); -@@ -1560,6 +1574,7 @@ SProcXvSetPortAttribute(ClientPtr client - { - register char n; - REQUEST(xvSetPortAttributeReq); -+ REQUEST_SIZE_MATCH(xvSetPortAttributeReq); - swaps(&stuff->length, n); - swapl(&stuff->port, n); - swapl(&stuff->attribute, n); -@@ -1571,6 +1586,7 @@ SProcXvGetPortAttribute(ClientPtr client - { - register char n; - REQUEST(xvGetPortAttributeReq); -+ REQUEST_SIZE_MATCH(xvGetPortAttributeReq); - swaps(&stuff->length, n); - swapl(&stuff->port, n); - swapl(&stuff->attribute, n); -@@ -1582,6 +1598,7 @@ SProcXvQueryBestSize(ClientPtr client) - { - register char n; - REQUEST(xvQueryBestSizeReq); -+ REQUEST_SIZE_MATCH(xvQueryBestSizeReq); - swaps(&stuff->length, n); - swapl(&stuff->port, n); - swaps(&stuff->vid_w, n); -@@ -1596,6 +1613,7 @@ SProcXvQueryPortAttributes(ClientPtr cli - { - register char n; - REQUEST(xvQueryPortAttributesReq); -+ REQUEST_SIZE_MATCH(xvQueryPortAttributesReq); - swaps(&stuff->length, n); - swapl(&stuff->port, n); - return ProcXvQueryPortAttributes(client); -@@ -1606,6 +1624,7 @@ SProcXvQueryImageAttributes(ClientPtr cl - { - register char n; - REQUEST(xvQueryImageAttributesReq); -+ REQUEST_SIZE_MATCH(xvQueryImageAttributesReq); - swaps(&stuff->length, n); - swapl(&stuff->id, n); - swaps(&stuff->width, n); -@@ -1618,6 +1637,7 @@ SProcXvListImageFormats(ClientPtr client - { - register char n; - REQUEST(xvListImageFormatsReq); -+ REQUEST_SIZE_MATCH(xvListImageFormatsReq); - swaps(&stuff->length, n); - swapl(&stuff->port, n); - return ProcXvListImageFormats(client); ---- a/nx-X11/programs/Xserver/hw/nxagent/NXxvdisp.c -+++ b/nx-X11/programs/Xserver/hw/nxagent/NXxvdisp.c -@@ -1401,6 +1401,7 @@ SProcXvQueryExtension(ClientPtr client) - { - register char n; - REQUEST(xvQueryExtensionReq); -+ REQUEST_SIZE_MATCH(xvQueryExtensionReq); - swaps(&stuff->length, n); - return ProcXvQueryExtension(client); - } -@@ -1410,6 +1411,7 @@ SProcXvQueryAdaptors(ClientPtr client) - { - register char n; - REQUEST(xvQueryAdaptorsReq); -+ REQUEST_SIZE_MATCH(xvQueryAdaptorsReq); - swaps(&stuff->length, n); - swapl(&stuff->window, n); - return ProcXvQueryAdaptors(client); -@@ -1420,6 +1422,7 @@ SProcXvQueryEncodings(ClientPtr client) - { - register char n; - REQUEST(xvQueryEncodingsReq); -+ REQUEST_SIZE_MATCH(xvQueryEncodingsReq); - swaps(&stuff->length, n); - swapl(&stuff->port, n); - return ProcXvQueryEncodings(client); -@@ -1430,6 +1433,7 @@ SProcXvGrabPort(ClientPtr client) - { - register char n; - REQUEST(xvGrabPortReq); -+ REQUEST_SIZE_MATCH(xvGrabPortReq); - swaps(&stuff->length, n); - swapl(&stuff->port, n); - swapl(&stuff->time, n); -@@ -1441,6 +1445,7 @@ SProcXvUngrabPort(ClientPtr client) - { - register char n; - REQUEST(xvUngrabPortReq); -+ REQUEST_SIZE_MATCH(xvUngrabPortReq); - swaps(&stuff->length, n); - swapl(&stuff->port, n); - swapl(&stuff->time, n); -@@ -1452,6 +1457,7 @@ SProcXvPutVideo(ClientPtr client) - { - register char n; - REQUEST(xvPutVideoReq); -+ REQUEST_SIZE_MATCH(xvPutVideoReq); - swaps(&stuff->length, n); - swapl(&stuff->port, n); - swapl(&stuff->drawable, n); -@@ -1472,6 +1478,7 @@ SProcXvPutStill(ClientPtr client) - { - register char n; - REQUEST(xvPutStillReq); -+ REQUEST_SIZE_MATCH(xvPutStillReq); - swaps(&stuff->length, n); - swapl(&stuff->port, n); - swapl(&stuff->drawable, n); -@@ -1492,6 +1499,7 @@ SProcXvGetVideo(ClientPtr client) - { - register char n; - REQUEST(xvGetVideoReq); -+ REQUEST_SIZE_MATCH(xvGetVideoReq); - swaps(&stuff->length, n); - swapl(&stuff->port, n); - swapl(&stuff->drawable, n); -@@ -1512,6 +1520,7 @@ SProcXvGetStill(ClientPtr client) - { - register char n; - REQUEST(xvGetStillReq); -+ REQUEST_SIZE_MATCH(xvGetStillReq); - swaps(&stuff->length, n); - swapl(&stuff->port, n); - swapl(&stuff->drawable, n); -@@ -1532,6 +1541,7 @@ SProcXvPutImage(ClientPtr client) - { - register char n; - REQUEST(xvPutImageReq); -+ REQUEST_AT_LEAST_SIZE(xvPutImageReq); - swaps(&stuff->length, n); - swapl(&stuff->port, n); - swapl(&stuff->drawable, n); -@@ -1556,6 +1566,7 @@ SProcXvShmPutImage(ClientPtr client) - { - register char n; - REQUEST(xvShmPutImageReq); -+ REQUEST_SIZE_MATCH(xvShmPutImageReq); - swaps(&stuff->length, n); - swapl(&stuff->port, n); - swapl(&stuff->drawable, n); -@@ -1583,6 +1594,7 @@ SProcXvSelectVideoNotify(ClientPtr clien - { - register char n; - REQUEST(xvSelectVideoNotifyReq); -+ REQUEST_SIZE_MATCH(xvSelectVideoNotifyReq); - swaps(&stuff->length, n); - swapl(&stuff->drawable, n); - return ProcXvSelectVideoNotify(client); -@@ -1593,6 +1605,7 @@ SProcXvSelectPortNotify(ClientPtr client - { - register char n; - REQUEST(xvSelectPortNotifyReq); -+ REQUEST_SIZE_MATCH(xvSelectPortNotifyReq); - swaps(&stuff->length, n); - swapl(&stuff->port, n); - return ProcXvSelectPortNotify(client); -@@ -1603,6 +1616,7 @@ SProcXvStopVideo(ClientPtr client) - { - register char n; - REQUEST(xvStopVideoReq); -+ REQUEST_SIZE_MATCH(xvStopVideoReq); - swaps(&stuff->length, n); - swapl(&stuff->port, n); - swapl(&stuff->drawable, n); -@@ -1614,6 +1628,7 @@ SProcXvSetPortAttribute(ClientPtr client - { - register char n; - REQUEST(xvSetPortAttributeReq); -+ REQUEST_SIZE_MATCH(xvSetPortAttributeReq); - swaps(&stuff->length, n); - swapl(&stuff->port, n); - swapl(&stuff->attribute, n); -@@ -1625,6 +1640,7 @@ SProcXvGetPortAttribute(ClientPtr client - { - register char n; - REQUEST(xvGetPortAttributeReq); -+ REQUEST_SIZE_MATCH(xvGetPortAttributeReq); - swaps(&stuff->length, n); - swapl(&stuff->port, n); - swapl(&stuff->attribute, n); -@@ -1636,6 +1652,7 @@ SProcXvQueryBestSize(ClientPtr client) - { - register char n; - REQUEST(xvQueryBestSizeReq); -+ REQUEST_SIZE_MATCH(xvQueryBestSizeReq); - swaps(&stuff->length, n); - swapl(&stuff->port, n); - swaps(&stuff->vid_w, n); -@@ -1650,6 +1667,7 @@ SProcXvQueryPortAttributes(ClientPtr cli - { - register char n; - REQUEST(xvQueryPortAttributesReq); -+ REQUEST_SIZE_MATCH(xvQueryPortAttributesReq); - swaps(&stuff->length, n); - swapl(&stuff->port, n); - return ProcXvQueryPortAttributes(client); -@@ -1660,6 +1678,7 @@ SProcXvQueryImageAttributes(ClientPtr cl - { - register char n; - REQUEST(xvQueryImageAttributesReq); -+ REQUEST_SIZE_MATCH(xvQueryImageAttributesReq); - swaps(&stuff->length, n); - swapl(&stuff->id, n); - swaps(&stuff->width, n); -@@ -1672,6 +1691,7 @@ SProcXvListImageFormats(ClientPtr client - { - register char n; - REQUEST(xvListImageFormatsReq); -+ REQUEST_SIZE_MATCH(xvListImageFormatsReq); - swaps(&stuff->length, n); - swapl(&stuff->port, n); - return ProcXvListImageFormats(client); diff --git a/debian/patches/1027-render-check-request-size-before-reading-it-CVE.full.patch b/debian/patches/1027-render-check-request-size-before-reading-it-CVE.full.patch deleted file mode 100644 index 7e8fe352f..000000000 --- a/debian/patches/1027-render-check-request-size-before-reading-it-CVE.full.patch +++ /dev/null @@ -1,52 +0,0 @@ -From 6c820648ba4be98c94f61516e83f13edf5ed98db Mon Sep 17 00:00:00 2001 -From: Julien Cristau <jcristau@debian.org> -Date: Tue, 28 Oct 2014 10:30:04 +0100 -Subject: [PATCH 27/40] render: check request size before reading it - [CVE-2014-8100 1/2] - -Otherwise we may be reading outside of the client request. - -v2: backport to nx-libs 3.6.x (Mike DePaulo) -v3: port to NXrender.c rather than render.c (Mike DePaulo) -v4: backport v3 to nx-libs 3.5.0.x (Mihai Moldovan) - -Signed-off-by: Julien Cristau <jcristau@debian.org> -Reviewed-by: Alan Coopersmith <alan.coopersmith@oracle.com> -Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com> - -Conflicts: - render/render.c ---- - nx-X11/programs/Xserver/render/render.c | 3 ++- - 1 file changed, 2 insertions(+), 1 deletion(-) - ---- a/nx-X11/programs/Xserver/render/render.c -+++ b/nx-X11/programs/Xserver/render/render.c -@@ -283,10 +283,11 @@ ProcRenderQueryVersion (ClientPtr client - register int n; - REQUEST(xRenderQueryVersionReq); - -+ REQUEST_SIZE_MATCH(xRenderQueryVersionReq); -+ - pRenderClient->major_version = stuff->majorVersion; - pRenderClient->minor_version = stuff->minorVersion; - -- REQUEST_SIZE_MATCH(xRenderQueryVersionReq); - rep.type = X_Reply; - rep.length = 0; - rep.sequenceNumber = client->sequence; ---- a/nx-X11/programs/Xserver/hw/nxagent/NXrender.c -+++ b/nx-X11/programs/Xserver/hw/nxagent/NXrender.c -@@ -326,10 +326,11 @@ ProcRenderQueryVersion (ClientPtr client - register int n; - REQUEST(xRenderQueryVersionReq); - -+ REQUEST_SIZE_MATCH(xRenderQueryVersionReq); -+ - pRenderClient->major_version = stuff->majorVersion; - pRenderClient->minor_version = stuff->minorVersion; - -- REQUEST_SIZE_MATCH(xRenderQueryVersionReq); - rep.type = X_Reply; - rep.length = 0; - rep.sequenceNumber = client->sequence; diff --git a/debian/patches/1028-render-unvalidated-lengths-in-Render-extn.-swap.full.patch b/debian/patches/1028-render-unvalidated-lengths-in-Render-extn.-swap.full.patch deleted file mode 100644 index 49f738eb3..000000000 --- a/debian/patches/1028-render-unvalidated-lengths-in-Render-extn.-swap.full.patch +++ /dev/null @@ -1,267 +0,0 @@ -From 9c3842a4f72b4cca28ac1d5c14441787c7dd6e6a Mon Sep 17 00:00:00 2001 -From: Alan Coopersmith <alan.coopersmith@oracle.com> -Date: Sun, 26 Jan 2014 19:51:29 -0800 -Subject: [PATCH 28/40] render: unvalidated lengths in Render extn. swapped - procs [CVE-2014-8100 2/2] - -v2: backport to nx-libs 3.6.x (Mike DePaulo) -v3: port to NXrender.c rather than render.c (Mike DePaulo) -v4: backport v3 to nx-libs 3.5.0.x (Mihai Moldovan) - -Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com> -Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net> - -Conflicts: - render/render.c ---- - nx-X11/programs/Xserver/render/render.c | 17 ++++++++++++++++- - 1 file changed, 16 insertions(+), 1 deletion(-) - ---- a/nx-X11/programs/Xserver/render/render.c -+++ b/nx-X11/programs/Xserver/render/render.c -@@ -2014,6 +2014,7 @@ SProcRenderQueryVersion (ClientPtr clien - { - register int n; - REQUEST(xRenderQueryVersionReq); -+ REQUEST_SIZE_MATCH(xRenderQueryVersionReq); - - swaps(&stuff->length, n); - swapl(&stuff->majorVersion, n); -@@ -2026,6 +2027,7 @@ SProcRenderQueryPictFormats (ClientPtr c - { - register int n; - REQUEST(xRenderQueryPictFormatsReq); -+ REQUEST_SIZE_MATCH(xRenderQueryPictFormatsReq); - swaps(&stuff->length, n); - return (*ProcRenderVector[stuff->renderReqType]) (client); - } -@@ -2035,6 +2037,7 @@ SProcRenderQueryPictIndexValues (ClientP - { - register int n; - REQUEST(xRenderQueryPictIndexValuesReq); -+ REQUEST_AT_LEAST_SIZE(xRenderQueryPictIndexValuesReq); - swaps(&stuff->length, n); - swapl(&stuff->format, n); - return (*ProcRenderVector[stuff->renderReqType]) (client); -@@ -2051,6 +2054,7 @@ SProcRenderCreatePicture (ClientPtr clie - { - register int n; - REQUEST(xRenderCreatePictureReq); -+ REQUEST_AT_LEAST_SIZE(xRenderCreatePictureReq); - swaps(&stuff->length, n); - swapl(&stuff->pid, n); - swapl(&stuff->drawable, n); -@@ -2065,6 +2069,7 @@ SProcRenderChangePicture (ClientPtr clie - { - register int n; - REQUEST(xRenderChangePictureReq); -+ REQUEST_AT_LEAST_SIZE(xRenderChangePictureReq); - swaps(&stuff->length, n); - swapl(&stuff->picture, n); - swapl(&stuff->mask, n); -@@ -2077,6 +2082,7 @@ SProcRenderSetPictureClipRectangles (Cli - { - register int n; - REQUEST(xRenderSetPictureClipRectanglesReq); -+ REQUEST_AT_LEAST_SIZE(xRenderSetPictureClipRectanglesReq); - swaps(&stuff->length, n); - swapl(&stuff->picture, n); - SwapRestS(stuff); -@@ -2088,6 +2094,7 @@ SProcRenderFreePicture (ClientPtr client - { - register int n; - REQUEST(xRenderFreePictureReq); -+ REQUEST_SIZE_MATCH(xRenderFreePictureReq); - swaps(&stuff->length, n); - swapl(&stuff->picture, n); - return (*ProcRenderVector[stuff->renderReqType]) (client); -@@ -2098,6 +2105,7 @@ SProcRenderComposite (ClientPtr client) - { - register int n; - REQUEST(xRenderCompositeReq); -+ REQUEST_SIZE_MATCH(xRenderCompositeReq); - swaps(&stuff->length, n); - swapl(&stuff->src, n); - swapl(&stuff->mask, n); -@@ -2118,6 +2126,7 @@ SProcRenderScale (ClientPtr client) - { - register int n; - REQUEST(xRenderScaleReq); -+ REQUEST_SIZE_MATCH(xRenderScaleReq); - swaps(&stuff->length, n); - swapl(&stuff->src, n); - swapl(&stuff->dst, n); -@@ -2223,6 +2232,7 @@ SProcRenderCreateGlyphSet (ClientPtr cli - { - register int n; - REQUEST(xRenderCreateGlyphSetReq); -+ REQUEST_SIZE_MATCH(xRenderCreateGlyphSetReq); - swaps(&stuff->length, n); - swapl(&stuff->gsid, n); - swapl(&stuff->format, n); -@@ -2234,6 +2244,7 @@ SProcRenderReferenceGlyphSet (ClientPtr - { - register int n; - REQUEST(xRenderReferenceGlyphSetReq); -+ REQUEST_SIZE_MATCH(xRenderReferenceGlyphSetReq); - swaps(&stuff->length, n); - swapl(&stuff->gsid, n); - swapl(&stuff->existing, n); -@@ -2245,6 +2256,7 @@ SProcRenderFreeGlyphSet (ClientPtr clien - { - register int n; - REQUEST(xRenderFreeGlyphSetReq); -+ REQUEST_SIZE_MATCH(xRenderFreeGlyphSetReq); - swaps(&stuff->length, n); - swapl(&stuff->glyphset, n); - return (*ProcRenderVector[stuff->renderReqType]) (client); -@@ -2259,6 +2271,7 @@ SProcRenderAddGlyphs (ClientPtr client) - void *end; - xGlyphInfo *gi; - REQUEST(xRenderAddGlyphsReq); -+ REQUEST_AT_LEAST_SIZE(xRenderAddGlyphsReq); - swaps(&stuff->length, n); - swapl(&stuff->glyphset, n); - swapl(&stuff->nglyphs, n); -@@ -2295,6 +2308,7 @@ SProcRenderFreeGlyphs (ClientPtr client) - { - register int n; - REQUEST(xRenderFreeGlyphsReq); -+ REQUEST_AT_LEAST_SIZE(xRenderFreeGlyphsReq); - swaps(&stuff->length, n); - swapl(&stuff->glyphset, n); - SwapRestL(stuff); -@@ -2313,7 +2327,8 @@ SProcRenderCompositeGlyphs (ClientPtr cl - int size; - - REQUEST(xRenderCompositeGlyphsReq); -- -+ REQUEST_AT_LEAST_SIZE(xRenderCompositeGlyphsReq); -+ - switch (stuff->renderReqType) { - default: size = 1; break; - case X_RenderCompositeGlyphs16: size = 2; break; ---- a/nx-X11/programs/Xserver/hw/nxagent/NXrender.c -+++ b/nx-X11/programs/Xserver/hw/nxagent/NXrender.c -@@ -2256,6 +2256,7 @@ SProcRenderQueryVersion (ClientPtr clien - { - register int n; - REQUEST(xRenderQueryVersionReq); -+ REQUEST_SIZE_MATCH(xRenderQueryVersionReq); - - swaps(&stuff->length, n); - swapl(&stuff->majorVersion, n); -@@ -2268,6 +2269,7 @@ SProcRenderQueryPictFormats (ClientPtr c - { - register int n; - REQUEST(xRenderQueryPictFormatsReq); -+ REQUEST_SIZE_MATCH(xRenderQueryPictFormatsReq); - swaps(&stuff->length, n); - return (*ProcRenderVector[stuff->renderReqType]) (client); - } -@@ -2277,6 +2279,7 @@ SProcRenderQueryPictIndexValues (ClientP - { - register int n; - REQUEST(xRenderQueryPictIndexValuesReq); -+ REQUEST_AT_LEAST_SIZE(xRenderQueryPictIndexValuesReq); - swaps(&stuff->length, n); - swapl(&stuff->format, n); - return (*ProcRenderVector[stuff->renderReqType]) (client); -@@ -2293,6 +2296,7 @@ SProcRenderCreatePicture (ClientPtr clie - { - register int n; - REQUEST(xRenderCreatePictureReq); -+ REQUEST_AT_LEAST_SIZE(xRenderCreatePictureReq); - swaps(&stuff->length, n); - swapl(&stuff->pid, n); - swapl(&stuff->drawable, n); -@@ -2307,6 +2311,7 @@ SProcRenderChangePicture (ClientPtr clie - { - register int n; - REQUEST(xRenderChangePictureReq); -+ REQUEST_AT_LEAST_SIZE(xRenderChangePictureReq); - swaps(&stuff->length, n); - swapl(&stuff->picture, n); - swapl(&stuff->mask, n); -@@ -2319,6 +2324,7 @@ SProcRenderSetPictureClipRectangles (Cli - { - register int n; - REQUEST(xRenderSetPictureClipRectanglesReq); -+ REQUEST_AT_LEAST_SIZE(xRenderSetPictureClipRectanglesReq); - swaps(&stuff->length, n); - swapl(&stuff->picture, n); - SwapRestS(stuff); -@@ -2330,6 +2336,7 @@ SProcRenderFreePicture (ClientPtr client - { - register int n; - REQUEST(xRenderFreePictureReq); -+ REQUEST_SIZE_MATCH(xRenderFreePictureReq); - swaps(&stuff->length, n); - swapl(&stuff->picture, n); - return (*ProcRenderVector[stuff->renderReqType]) (client); -@@ -2340,6 +2347,7 @@ SProcRenderComposite (ClientPtr client) - { - register int n; - REQUEST(xRenderCompositeReq); -+ REQUEST_SIZE_MATCH(xRenderCompositeReq); - swaps(&stuff->length, n); - swapl(&stuff->src, n); - swapl(&stuff->mask, n); -@@ -2360,6 +2368,7 @@ SProcRenderScale (ClientPtr client) - { - register int n; - REQUEST(xRenderScaleReq); -+ REQUEST_SIZE_MATCH(xRenderScaleReq); - swaps(&stuff->length, n); - swapl(&stuff->src, n); - swapl(&stuff->dst, n); -@@ -2465,6 +2474,7 @@ SProcRenderCreateGlyphSet (ClientPtr cli - { - register int n; - REQUEST(xRenderCreateGlyphSetReq); -+ REQUEST_SIZE_MATCH(xRenderCreateGlyphSetReq); - swaps(&stuff->length, n); - swapl(&stuff->gsid, n); - swapl(&stuff->format, n); -@@ -2476,6 +2486,7 @@ SProcRenderReferenceGlyphSet (ClientPtr - { - register int n; - REQUEST(xRenderReferenceGlyphSetReq); -+ REQUEST_SIZE_MATCH(xRenderReferenceGlyphSetReq); - swaps(&stuff->length, n); - swapl(&stuff->gsid, n); - swapl(&stuff->existing, n); -@@ -2487,6 +2498,7 @@ SProcRenderFreeGlyphSet (ClientPtr clien - { - register int n; - REQUEST(xRenderFreeGlyphSetReq); -+ REQUEST_SIZE_MATCH(xRenderFreeGlyphSetReq); - swaps(&stuff->length, n); - swapl(&stuff->glyphset, n); - return (*ProcRenderVector[stuff->renderReqType]) (client); -@@ -2501,6 +2513,7 @@ SProcRenderAddGlyphs (ClientPtr client) - void *end; - xGlyphInfo *gi; - REQUEST(xRenderAddGlyphsReq); -+ REQUEST_AT_LEAST_SIZE(xRenderAddGlyphsReq); - swaps(&stuff->length, n); - swapl(&stuff->glyphset, n); - swapl(&stuff->nglyphs, n); -@@ -2537,6 +2550,7 @@ SProcRenderFreeGlyphs (ClientPtr client) - { - register int n; - REQUEST(xRenderFreeGlyphsReq); -+ REQUEST_AT_LEAST_SIZE(xRenderFreeGlyphsReq); - swaps(&stuff->length, n); - swapl(&stuff->glyphset, n); - SwapRestL(stuff); -@@ -2555,7 +2569,8 @@ SProcRenderCompositeGlyphs (ClientPtr cl - int size; - - REQUEST(xRenderCompositeGlyphsReq); -- -+ REQUEST_AT_LEAST_SIZE(xRenderCompositeGlyphsReq); -+ - switch (stuff->renderReqType) { - default: size = 1; break; - case X_RenderCompositeGlyphs16: size = 2; break; diff --git a/debian/patches/1029-xfixes-unvalidated-length-in-SProcXFixesSelectS.full.patch b/debian/patches/1029-xfixes-unvalidated-length-in-SProcXFixesSelectS.full.patch deleted file mode 100644 index 9f14e27b2..000000000 --- a/debian/patches/1029-xfixes-unvalidated-length-in-SProcXFixesSelectS.full.patch +++ /dev/null @@ -1,27 +0,0 @@ -From c12a473f29cfadb62d38b0fffc36762d8e626676 Mon Sep 17 00:00:00 2001 -From: Alan Coopersmith <alan.coopersmith@oracle.com> -Date: Sun, 26 Jan 2014 20:02:20 -0800 -Subject: [PATCH 29/40] xfixes: unvalidated length in - SProcXFixesSelectSelectionInput [CVE-2014-8102] - -Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com> -Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net> - -v2: backport to nx-libs 3.6.x (Mike DePaulo) - -Conflicts: - xfixes/select.c ---- - nx-X11/programs/Xserver/xfixes/select.c | 1 + - 1 file changed, 1 insertion(+) - ---- a/nx-X11/programs/Xserver/xfixes/select.c -+++ b/nx-X11/programs/Xserver/xfixes/select.c -@@ -216,6 +216,7 @@ SProcXFixesSelectSelectionInput (ClientP - register int n; - REQUEST(xXFixesSelectSelectionInputReq); - -+ REQUEST_SIZE_MATCH(xXFixesSelectSelectionInputReq); - swaps(&stuff->length, n); - swapl(&stuff->window, n); - swapl(&stuff->selection, n); diff --git a/debian/patches/1030-randr-unvalidated-lengths-in-RandR-extension-sw.full.patch b/debian/patches/1030-randr-unvalidated-lengths-in-RandR-extension-sw.full.patch deleted file mode 100644 index 488c53ff8..000000000 --- a/debian/patches/1030-randr-unvalidated-lengths-in-RandR-extension-sw.full.patch +++ /dev/null @@ -1,40 +0,0 @@ -From cea44678dd6a9418460ead314fb2106924b081f7 Mon Sep 17 00:00:00 2001 -From: Alan Coopersmith <alan.coopersmith@oracle.com> -Date: Sun, 26 Jan 2014 19:38:09 -0800 -Subject: [PATCH 30/40] randr: unvalidated lengths in RandR extension swapped - procs [CVE-2014-8101] - -v2: backport to nx-libs 3.6.x (Mike DePaulo) - -Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com> -Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net> ---- - nx-X11/programs/Xserver/randr/rrsdispatch.c | 3 +++ - 1 file changed, 3 insertions(+) - ---- a/nx-X11/programs/Xserver/randr/rrsdispatch.c -+++ b/nx-X11/programs/Xserver/randr/rrsdispatch.c -@@ -28,6 +28,7 @@ SProcRRQueryVersion (ClientPtr client) - register int n; - REQUEST(xRRQueryVersionReq); - -+ REQUEST_SIZE_MATCH(xRRQueryVersionReq); - swaps(&stuff->length, n); - swapl(&stuff->majorVersion, n); - swapl(&stuff->minorVersion, n); -@@ -40,6 +41,7 @@ SProcRRGetScreenInfo (ClientPtr client) - register int n; - REQUEST(xRRGetScreenInfoReq); - -+ REQUEST_SIZE_MATCH(xRRGetScreenInfoReq); - swaps(&stuff->length, n); - swapl(&stuff->window, n); - return (*ProcRandrVector[stuff->randrReqType]) (client); -@@ -75,6 +77,7 @@ SProcRRSelectInput (ClientPtr client) - register int n; - REQUEST(xRRSelectInputReq); - -+ REQUEST_SIZE_MATCH(xRRSelectInputReq); - swaps(&stuff->length, n); - swapl(&stuff->window, n); - swaps(&stuff->enable, n); diff --git a/debian/patches/1031-glx-Be-more-paranoid-about-variable-length-requ.full.patch b/debian/patches/1031-glx-Be-more-paranoid-about-variable-length-requ.full.patch deleted file mode 100644 index 2c0da1e04..000000000 --- a/debian/patches/1031-glx-Be-more-paranoid-about-variable-length-requ.full.patch +++ /dev/null @@ -1,69 +0,0 @@ -From 5c43bb2484414b37115dac56dc76f1ecf4c05837 Mon Sep 17 00:00:00 2001 -From: Adam Jackson <ajax@redhat.com> -Date: Mon, 10 Nov 2014 12:13:36 -0500 -Subject: [PATCH 31/40] glx: Be more paranoid about variable-length requests - [CVE-2014-8093 1/6] (v2) - -If the size computation routine returns -1 we should just reject the -request outright. Clamping it to zero could give an attacker the -opportunity to also mangle cmdlen in such a way that the subsequent -length check passes, and the request would get executed, thus passing -data we wanted to reject to the renderer. - -v3: backport to nx-libs 3.6.x (Mike DePaulo) -v2: backport to RHEL5 - fix swap paths -Reviewed-by: Keith Packard <keithp@keithp.com> -Reviewed-by: Julien Cristau <jcristau@debian.org> -Reviewed-by: Michal Srb <msrb@suse.com> -Reviewed-by: Andy Ritger <aritger@nvidia.com> -Signed-off-by: Adam Jackson <ajax@redhat.com> -Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com> -Signed-off-by: Fedora X Ninjas <x@fedoraproject.org> -Signed-off-by: Dave Airlie <airlied@redhat.com> - -fixup swaps ---- - nx-X11/programs/Xserver/GL/glx/glxcmds.c | 4 ++-- - nx-X11/programs/Xserver/GL/glx/glxcmdsswap.c | 4 ++-- - 2 files changed, 4 insertions(+), 4 deletions(-) - ---- a/nx-X11/programs/Xserver/GL/glx/glxcmds.c -+++ b/nx-X11/programs/Xserver/GL/glx/glxcmds.c -@@ -1484,7 +1484,7 @@ int __glXRender(__GLXclientState *cl, GL - /* variable size command */ - extra = (*entry->varsize)(pc + __GLX_RENDER_HDR_SIZE, False); - if (extra < 0) { -- extra = 0; -+ return BadLength; - } - if (cmdlen != __GLX_PAD(entry->bytes + extra)) { - return BadLength; -@@ -1601,7 +1601,7 @@ int __glXRenderLarge(__GLXclientState *c - */ - extra = (*entry->varsize)(pc + __GLX_RENDER_LARGE_HDR_SIZE, False); - if (extra < 0) { -- extra = 0; -+ return BadLength; - } - /* large command's header is 4 bytes longer, so add 4 */ - if (cmdlen != __GLX_PAD(entry->bytes + 4 + extra)) { ---- a/nx-X11/programs/Xserver/GL/glx/glxcmdsswap.c -+++ b/nx-X11/programs/Xserver/GL/glx/glxcmdsswap.c -@@ -535,7 +535,7 @@ int __glXSwapRender(__GLXclientState *cl - /* variable size command */ - extra = (*entry->varsize)(pc + __GLX_RENDER_HDR_SIZE, True); - if (extra < 0) { -- extra = 0; -+ return BadLength; - } - if (cmdlen != __GLX_PAD(entry->bytes + extra)) { - return BadLength; -@@ -659,7 +659,7 @@ int __glXSwapRenderLarge(__GLXclientStat - */ - extra = (*entry->varsize)(pc + __GLX_RENDER_LARGE_HDR_SIZE, True); - if (extra < 0) { -- extra = 0; -+ return BadLength; - } - /* large command's header is 4 bytes longer, so add 4 */ - if (cmdlen != __GLX_PAD(entry->bytes + 4 + extra)) { diff --git a/debian/patches/1032-glx-Be-more-strict-about-rejecting-invalid-imag.full.patch b/debian/patches/1032-glx-Be-more-strict-about-rejecting-invalid-imag.full.patch deleted file mode 100644 index 6681c7460..000000000 --- a/debian/patches/1032-glx-Be-more-strict-about-rejecting-invalid-imag.full.patch +++ /dev/null @@ -1,156 +0,0 @@ -From cdf0c3e65670c797a4fd0617d44d2bdff4011815 Mon Sep 17 00:00:00 2001 -From: Adam Jackson <ajax@redhat.com> -Date: Mon, 10 Nov 2014 12:13:37 -0500 -Subject: [PATCH 32/40] glx: Be more strict about rejecting invalid image sizes - [CVE-2014-8093 2/6] - -Before this we'd just clamp the image size to 0, which was just -hideously stupid; if the parameters were such that they'd overflow an -integer, you'd allocate a small buffer, then pass huge values into (say) -ReadPixels, and now you're scribbling over arbitrary server memory. - -v2: backport to nx-libs 3.6.x (Mike DePaulo) - -Reviewed-by: Keith Packard <keithp@keithp.com> -Reviewed-by: Julien Cristau <jcristau@debian.org> -Reviewed-by: Michal Srb <msrb@suse.com> -Reviewed-by: Andy Ritger <aritger@nvidia.com> -Signed-off-by: Adam Jackson <ajax@redhat.com> -Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com> -Signed-off-by: Fedora X Ninjas <x@fedoraproject.org> -Signed-off-by: Dave Airlie <airlied@redhat.com> ---- - nx-X11/programs/Xserver/GL/glx/singlepix.c | 14 +++++++------- - nx-X11/programs/Xserver/GL/glx/singlepixswap.c | 14 +++++++------- - 2 files changed, 14 insertions(+), 14 deletions(-) - ---- a/nx-X11/programs/Xserver/GL/glx/singlepix.c -+++ b/nx-X11/programs/Xserver/GL/glx/singlepix.c -@@ -70,7 +70,7 @@ int __glXDisp_ReadPixels(__GLXclientStat - swapBytes = *(GLboolean *)(pc + 24); - lsbFirst = *(GLboolean *)(pc + 25); - compsize = __glReadPixels_size(format,type,width,height); -- if (compsize < 0) compsize = 0; -+ if (compsize < 0) return BadLength; - - glPixelStorei(GL_PACK_SWAP_BYTES, swapBytes); - glPixelStorei(GL_PACK_LSB_FIRST, lsbFirst); -@@ -130,7 +130,7 @@ int __glXDisp_GetTexImage(__GLXclientSta - * are illegal, but then width, height, and depth would still be zero anyway. - */ - compsize = __glGetTexImage_size(target,level,format,type,width,height,depth); -- if (compsize < 0) compsize = 0; -+ if (compsize < 0) return BadLength; - - glPixelStorei(GL_PACK_SWAP_BYTES, swapBytes); - __GLX_GET_ANSWER_BUFFER(answer,cl,compsize,1); -@@ -227,7 +227,7 @@ int __glXDisp_GetSeparableFilter(__GLXcl - compsize = __glGetTexImage_size(target,1,format,type,width,1,1); - compsize2 = __glGetTexImage_size(target,1,format,type,height,1,1); - -- if (compsize < 0) compsize = 0; -+ if (compsize < 0) return BadLength; - if (compsize2 < 0) compsize2 = 0; - compsize = __GLX_PAD(compsize); - compsize2 = __GLX_PAD(compsize2); -@@ -291,7 +291,7 @@ int __glXDisp_GetConvolutionFilter(__GLX - * are illegal, but then width and height would still be zero anyway. - */ - compsize = __glGetTexImage_size(target,1,format,type,width,height,1); -- if (compsize < 0) compsize = 0; -+ if (compsize < 0) return BadLength; - - glPixelStorei(GL_PACK_SWAP_BYTES, swapBytes); - __GLX_GET_ANSWER_BUFFER(answer,cl,compsize,1); -@@ -346,7 +346,7 @@ int __glXDisp_GetHistogram(__GLXclientSt - * are illegal, but then width would still be zero anyway. - */ - compsize = __glGetTexImage_size(target,1,format,type,width,1,1); -- if (compsize < 0) compsize = 0; -+ if (compsize < 0) return BadLength; - - glPixelStorei(GL_PACK_SWAP_BYTES, swapBytes); - __GLX_GET_ANSWER_BUFFER(answer,cl,compsize,1); -@@ -389,7 +389,7 @@ int __glXDisp_GetMinmax(__GLXclientState - reset = *(GLboolean *)(pc + 13); - - compsize = __glGetTexImage_size(target,1,format,type,2,1,1); -- if (compsize < 0) compsize = 0; -+ if (compsize < 0) return BadLength; - - glPixelStorei(GL_PACK_SWAP_BYTES, swapBytes); - __GLX_GET_ANSWER_BUFFER(answer,cl,compsize,1); -@@ -436,7 +436,7 @@ int __glXDisp_GetColorTable(__GLXclientS - * are illegal, but then width would still be zero anyway. - */ - compsize = __glGetTexImage_size(target,1,format,type,width,1,1); -- if (compsize < 0) compsize = 0; -+ if (compsize < 0) return BadLength; - - glPixelStorei(GL_PACK_SWAP_BYTES, swapBytes); - __GLX_GET_ANSWER_BUFFER(answer,cl,compsize,1); ---- a/nx-X11/programs/Xserver/GL/glx/singlepixswap.c -+++ b/nx-X11/programs/Xserver/GL/glx/singlepixswap.c -@@ -79,7 +79,7 @@ int __glXDispSwap_ReadPixels(__GLXclient - swapBytes = *(GLboolean *)(pc + 24); - lsbFirst = *(GLboolean *)(pc + 25); - compsize = __glReadPixels_size(format,type,width,height); -- if (compsize < 0) compsize = 0; -+ if (compsize < 0) return BadLength; - - glPixelStorei(GL_PACK_SWAP_BYTES, !swapBytes); - glPixelStorei(GL_PACK_LSB_FIRST, lsbFirst); -@@ -148,7 +148,7 @@ int __glXDispSwap_GetTexImage(__GLXclien - * are illegal, but then width, height, and depth would still be zero anyway. - */ - compsize = __glGetTexImage_size(target,level,format,type,width,height,depth); -- if (compsize < 0) compsize = 0; -+ if (compsize < 0) return BadLength; - - glPixelStorei(GL_PACK_SWAP_BYTES, !swapBytes); - __GLX_GET_ANSWER_BUFFER(answer,cl,compsize,1); -@@ -257,7 +257,7 @@ int __glXDispSwap_GetSeparableFilter(__G - compsize = __glGetTexImage_size(target,1,format,type,width,1,1); - compsize2 = __glGetTexImage_size(target,1,format,type,height,1,1); - -- if (compsize < 0) compsize = 0; -+ if (compsize < 0) return BadLength; - if (compsize2 < 0) compsize2 = 0; - compsize = __GLX_PAD(compsize); - compsize2 = __GLX_PAD(compsize2); -@@ -328,7 +328,7 @@ int __glXDispSwap_GetConvolutionFilter(_ - * are illegal, but then width and height would still be zero anyway. - */ - compsize = __glGetTexImage_size(target,1,format,type,width,height,1); -- if (compsize < 0) compsize = 0; -+ if (compsize < 0) return BadLength; - - glPixelStorei(GL_PACK_SWAP_BYTES, !swapBytes); - __GLX_GET_ANSWER_BUFFER(answer,cl,compsize,1); -@@ -390,7 +390,7 @@ int __glXDispSwap_GetHistogram(__GLXclie - * are illegal, but then width would still be zero anyway. - */ - compsize = __glGetTexImage_size(target,1,format,type,width,1,1); -- if (compsize < 0) compsize = 0; -+ if (compsize < 0) return BadLength; - - glPixelStorei(GL_PACK_SWAP_BYTES, !swapBytes); - __GLX_GET_ANSWER_BUFFER(answer,cl,compsize,1); -@@ -439,7 +439,7 @@ int __glXDispSwap_GetMinmax(__GLXclientS - reset = *(GLboolean *)(pc + 13); - - compsize = __glGetTexImage_size(target,1,format,type,2,1,1); -- if (compsize < 0) compsize = 0; -+ if (compsize < 0) return BadLength; - - glPixelStorei(GL_PACK_SWAP_BYTES, !swapBytes); - __GLX_GET_ANSWER_BUFFER(answer,cl,compsize,1); -@@ -491,7 +491,7 @@ int __glXDispSwap_GetColorTable(__GLXcli - * are illegal, but then width would still be zero anyway. - */ - compsize = __glGetTexImage_size(target,1,format,type,width,1,1); -- if (compsize < 0) compsize = 0; -+ if (compsize < 0) return BadLength; - - glPixelStorei(GL_PACK_SWAP_BYTES, !swapBytes); - __GLX_GET_ANSWER_BUFFER(answer,cl,compsize,1); diff --git a/debian/patches/1033-glx-Additional-paranoia-in-__glXGetAnswerBuffer.full.patch b/debian/patches/1033-glx-Additional-paranoia-in-__glXGetAnswerBuffer.full.patch deleted file mode 100644 index bda7f9759..000000000 --- a/debian/patches/1033-glx-Additional-paranoia-in-__glXGetAnswerBuffer.full.patch +++ /dev/null @@ -1,36 +0,0 @@ -From d0fcbc8a6ca82df82c410d0f8f9062b05fa5ec8d Mon Sep 17 00:00:00 2001 -From: Adam Jackson <ajax@redhat.com> -Date: Mon, 10 Nov 2014 12:13:38 -0500 -Subject: [PATCH 33/40] glx: Additional paranoia in __glXGetAnswerBuffer / - __GLX_GET_ANSWER_BUFFER (v2) [CVE-2014-8093 3/6] - -If the computed reply size is negative, something went wrong, treat it -as an error. - -v2: Be more careful about size_t being unsigned (Matthieu Herrb) -v3: SIZE_MAX not SIZE_T_MAX (Alan Coopersmith) -v4: backport to nx-libs 3.6.x (Mike DePaulo) - -Reviewed-by: Julien Cristau <jcristau@debian.org> -Reviewed-by: Michal Srb <msrb@suse.com> -Reviewed-by: Andy Ritger <aritger@nvidia.com> -Signed-off-by: Adam Jackson <ajax@redhat.com> -Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com> -Signed-off-by: Fedora X Ninjas <x@fedoraproject.org> -Signed-off-by: Dave Airlie <airlied@redhat.com> ---- - nx-X11/programs/Xserver/GL/glx/unpack.h | 3 ++- - 1 file changed, 2 insertions(+), 1 deletion(-) - ---- a/nx-X11/programs/Xserver/GL/glx/unpack.h -+++ b/nx-X11/programs/Xserver/GL/glx/unpack.h -@@ -89,7 +89,8 @@ extern xGLXSingleReply __glXReply; - ** pointer. - */ - #define __GLX_GET_ANSWER_BUFFER(res,cl,size,align) \ -- if ((size) > sizeof(answerBuffer)) { \ -+ if (size < 0) return BadLength; \ -+ else if ((size) > sizeof(answerBuffer)) { \ - int bump; \ - if ((cl)->returnBufSize < (size)+(align)) { \ - (cl)->returnBuf = (GLbyte*)Xrealloc((cl)->returnBuf, \ diff --git a/debian/patches/1034-glx-Add-safe_-add-mul-pad-v3-CVE-2014-8093-4-6-.full.patch b/debian/patches/1034-glx-Add-safe_-add-mul-pad-v3-CVE-2014-8093-4-6-.full.patch deleted file mode 100644 index 0c1f8c62d..000000000 --- a/debian/patches/1034-glx-Add-safe_-add-mul-pad-v3-CVE-2014-8093-4-6-.full.patch +++ /dev/null @@ -1,91 +0,0 @@ -From 1a9f23118787be611b6db51e4eac864c43c702d9 Mon Sep 17 00:00:00 2001 -From: Adam Jackson <ajax@redhat.com> -Date: Mon, 10 Nov 2014 12:13:40 -0500 -Subject: [PATCH 34/40] glx: Add safe_{add,mul,pad} (v3) [CVE-2014-8093 4/6] - (v4) - -These are paranoid about integer overflow, and will return -1 if their -operation would overflow a (signed) integer or if either argument is -negative. - -Note that RenderLarge requests are sized with a uint32_t so in principle -this could be sketchy there, but dix limits bigreqs to 128M so you -shouldn't ever notice, and honestly if you're sending more than 2G of -rendering commands you're already doing something very wrong. - -v2: Use INT_MAX for consistency with the rest of the server (jcristau) -v3: Reject negative arguments (anholt) - -v4: RHEL5: add limits.h, use inline - -v5: backport to nx-libs 3.6.x (Mike DePaulo) - -Reviewed-by: Keith Packard <keithp@keithp.com> -Reviewed-by: Julien Cristau <jcristau@debian.org> -Reviewed-by: Michal Srb <msrb@suse.com> -Reviewed-by: Andy Ritger <aritger@nvidia.com> -Signed-off-by: Adam Jackson <ajax@redhat.com> -Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com> -Signed-off-by: Fedora X Ninjas <x@fedoraproject.org> -Signed-off-by: Dave Airlie <airlied@redhat.com> ---- - nx-X11/programs/Xserver/GL/glx/glxserver.h | 41 ++++++++++++++++++++++++++++++ - 1 file changed, 41 insertions(+) - ---- a/nx-X11/programs/Xserver/GL/glx/glxserver.h -+++ b/nx-X11/programs/Xserver/GL/glx/glxserver.h -@@ -54,6 +54,7 @@ - #include "GL/glx_ansic.h" - - -+#include <limits.h> - /* - ** The X header misc.h defines these math functions. - */ -@@ -223,6 +224,46 @@ extern void glxSwapQueryServerStringRepl - /* - * Routines for computing the size of variably-sized rendering commands. - */ -+static __inline__ int -+safe_add(int a, int b) -+{ -+ if (a < 0 || b < 0) -+ return -1; -+ -+ if (INT_MAX - a < b) -+ return -1; -+ -+ return a + b; -+} -+ -+static __inline__ int -+safe_mul(int a, int b) -+{ -+ if (a < 0 || b < 0) -+ return -1; -+ -+ if (a == 0 || b == 0) -+ return 0; -+ -+ if (a > INT_MAX / b) -+ return -1; -+ -+ return a * b; -+} -+ -+static __inline__ int -+safe_pad(int a) -+{ -+ int ret; -+ -+ if (a < 0) -+ return -1; -+ -+ if ((ret = safe_add(a, 3)) < 0) -+ return -1; -+ -+ return ret & (GLuint)~3; -+} - - extern int __glXTypeSize(GLenum enm); - extern int __glXImageSize(GLenum format, GLenum type, diff --git a/debian/patches/1035-glx-Length-checking-for-GLXRender-requests-v2-C.full.patch b/debian/patches/1035-glx-Length-checking-for-GLXRender-requests-v2-C.full.patch deleted file mode 100644 index 087f74155..000000000 --- a/debian/patches/1035-glx-Length-checking-for-GLXRender-requests-v2-C.full.patch +++ /dev/null @@ -1,125 +0,0 @@ -From 78b38a8a37e6105360c82a710ef62c92643ea4c1 Mon Sep 17 00:00:00 2001 -From: Julien Cristau <jcristau@debian.org> -Date: Mon, 10 Nov 2014 12:13:41 -0500 -Subject: [PATCH 35/40] glx: Length checking for GLXRender requests (v2) - [CVE-2014-8098 2/8] (v3) - -v2: -Remove can't-happen comparison for cmdlen < 0 (Michal Srb) - -v3: backport to RHEL5 hit old paths - -v4: backport to nx-libs 3.6.x (Mike DePaulo) - -Reviewed-by: Adam Jackson <ajax@redhat.com> -Reviewed-by: Michal Srb <msrb@suse.com> -Reviewed-by: Andy Ritger <aritger@nvidia.com> -Signed-off-by: Julien Cristau <jcristau@debian.org> -Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com> -Signed-off-by: Fedora X Ninjas <x@fedoraproject.org> -Signed-off-by: Dave Airlie <airlied@redhat.com> ---- - nx-X11/programs/Xserver/GL/glx/glxcmds.c | 20 ++++++++++---------- - nx-X11/programs/Xserver/GL/glx/glxcmdsswap.c | 20 ++++++++++---------- - 2 files changed, 20 insertions(+), 20 deletions(-) - ---- a/nx-X11/programs/Xserver/GL/glx/glxcmds.c -+++ b/nx-X11/programs/Xserver/GL/glx/glxcmds.c -@@ -1443,7 +1443,7 @@ int __glXRender(__GLXclientState *cl, GL - left = (req->length << 2) - sz_xGLXRenderReq; - while (left > 0) { - __GLXrenderSizeData *entry; -- int extra; -+ int extra = 0; - void (* proc)(GLbyte *); - - /* -@@ -1454,6 +1454,9 @@ int __glXRender(__GLXclientState *cl, GL - cmdlen = hdr->length; - opcode = hdr->opcode; - -+ if (left < cmdlen) -+ return BadLength; -+ - /* - ** Check for core opcodes and grab entry data. - */ -@@ -1480,22 +1483,19 @@ int __glXRender(__GLXclientState *cl, GL - client->errorValue = commandsDone; - return __glXBadRenderRequest; - } -+ -+ if (cmdlen < entry->bytes) { -+ return BadLength; -+ } -+ - if (entry->varsize) { - /* variable size command */ - extra = (*entry->varsize)(pc + __GLX_RENDER_HDR_SIZE, False); - if (extra < 0) { - return BadLength; - } -- if (cmdlen != __GLX_PAD(entry->bytes + extra)) { -- return BadLength; -- } -- } else { -- /* constant size command */ -- if (cmdlen != __GLX_PAD(entry->bytes)) { -- return BadLength; -- } - } -- if (left < cmdlen) { -+ if (cmdlen != safe_pad(safe_add(entry->bytes, extra))) { - return BadLength; - } - ---- a/nx-X11/programs/Xserver/GL/glx/glxcmdsswap.c -+++ b/nx-X11/programs/Xserver/GL/glx/glxcmdsswap.c -@@ -498,7 +498,7 @@ int __glXSwapRender(__GLXclientState *cl - left = (req->length << 2) - sz_xGLXRenderReq; - while (left > 0) { - __GLXrenderSizeData *entry; -- int extra; -+ int extra = 0; - void (* proc)(GLbyte *); - - /* -@@ -511,6 +511,9 @@ int __glXSwapRender(__GLXclientState *cl - cmdlen = hdr->length; - opcode = hdr->opcode; - -+ if (left < cmdlen) -+ return BadLength; -+ - if ( (opcode >= __GLX_MIN_RENDER_OPCODE) && - (opcode <= __GLX_MAX_RENDER_OPCODE) ) { - entry = &__glXRenderSizeTable[opcode]; -@@ -531,22 +534,19 @@ int __glXSwapRender(__GLXclientState *cl - client->errorValue = commandsDone; - return __glXBadRenderRequest; - } -+ -+ if (cmdlen < entry->bytes) { -+ return BadLength; -+ } -+ - if (entry->varsize) { - /* variable size command */ - extra = (*entry->varsize)(pc + __GLX_RENDER_HDR_SIZE, True); - if (extra < 0) { - return BadLength; - } -- if (cmdlen != __GLX_PAD(entry->bytes + extra)) { -- return BadLength; -- } -- } else { -- /* constant size command */ -- if (cmdlen != __GLX_PAD(entry->bytes)) { -- return BadLength; -- } - } -- if (left < cmdlen) { -+ if (cmdlen != safe_pad(safe_add(entry->bytes, extra))) { - return BadLength; - } - diff --git a/debian/patches/1036-glx-Integer-overflow-protection-for-non-generat.full.patch b/debian/patches/1036-glx-Integer-overflow-protection-for-non-generat.full.patch deleted file mode 100644 index 25d0d6048..000000000 --- a/debian/patches/1036-glx-Integer-overflow-protection-for-non-generat.full.patch +++ /dev/null @@ -1,210 +0,0 @@ -From ddb1235bc621d06bf28309be70c173ae06131edf Mon Sep 17 00:00:00 2001 -From: Adam Jackson <ajax@redhat.com> -Date: Mon, 10 Nov 2014 12:13:42 -0500 -Subject: [PATCH 36/40] glx: Integer overflow protection for non-generated - render requests (v3) [CVE-2014-8093 5/6] - -v2: -Fix constants in __glXMap2fReqSize (Michal Srb) -Validate w/h/d for proxy targets too (Keith Packard) - -v3: -Fix Map[12]Size to correctly reject order == 0 (Julien Cristau) - -v4: backport to nx-libs 3.6.x (Mike DePaulo) - -Reviewed-by: Keith Packard <keithp@keithp.com> -Reviewed-by: Michal Srb <msrb@suse.com> -Reviewed-by: Andy Ritger <aritger@nvidia.com> -Signed-off-by: Adam Jackson <ajax@redhat.com> -Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com> -Signed-off-by: Fedora X Ninjas <x@fedoraproject.org> -Signed-off-by: Dave Airlie <airlied@redhat.com> ---- - nx-X11/programs/Xserver/GL/glx/rensize.c | 68 +++++++++++++++++--------------- - 1 file changed, 37 insertions(+), 31 deletions(-) - ---- a/nx-X11/programs/Xserver/GL/glx/rensize.c -+++ b/nx-X11/programs/Xserver/GL/glx/rensize.c -@@ -167,16 +167,10 @@ int __glXTexEnvivReqSize(GLbyte *pc, Boo - return __glXTexEnvfvReqSize( pc, swap ); - } - --static int Map1Size( GLint k, GLint order) --{ -- if (order <= 0 || k < 0) return -1; -- return k * order; --} -- - int __glXMap1dReqSize(GLbyte *pc, Bool swap ) - { - GLenum target; -- GLint order, k; -+ GLint order; - - target = *(GLenum*) (pc + 16); - order = *(GLint*) (pc + 20); -@@ -184,14 +178,15 @@ int __glXMap1dReqSize(GLbyte *pc, Bool s - target = SWAPL( target ); - order = SWAPL( order ); - } -- k = __glMap1d_size( target ); -- return 8 * Map1Size( k, order ); -+ if (order < 1) -+ return -1; -+ return safe_mul(8, safe_mul(__glMap1d_size(target), order)); - } - - int __glXMap1fReqSize(GLbyte *pc, Bool swap ) - { - GLenum target; -- GLint order, k; -+ GLint order; - - target = *(GLenum *)(pc + 0); - order = *(GLint *)(pc + 12); -@@ -199,20 +194,21 @@ int __glXMap1fReqSize(GLbyte *pc, Bool s - target = SWAPL( target ); - order = SWAPL( order ); - } -- k = __glMap1f_size(target); -- return 4 * Map1Size(k, order); -+ if (order < 1) -+ return -1; -+ return safe_mul(4, safe_mul(__glMap1f_size(target), order)); - } - - static int Map2Size(int k, int majorOrder, int minorOrder) - { -- if (majorOrder <= 0 || minorOrder <= 0 || k < 0) return -1; -- return k * majorOrder * minorOrder; -+ if (majorOrder < 1 || minorOrder < 1) return -1; -+ return safe_mul(k, safe_mul(majorOrder, minorOrder)); - } - - int __glXMap2dReqSize(GLbyte *pc, Bool swap ) - { - GLenum target; -- GLint uorder, vorder, k; -+ GLint uorder, vorder; - - target = *(GLenum *)(pc + 32); - uorder = *(GLint *)(pc + 36); -@@ -222,14 +218,13 @@ int __glXMap2dReqSize(GLbyte *pc, Bool s - uorder = SWAPL( uorder ); - vorder = SWAPL( vorder ); - } -- k = __glMap2d_size( target ); -- return 8 * Map2Size( k, uorder, vorder ); -+ return safe_mul(8, Map2Size(__glMap2d_size(target), uorder, vorder)); - } - - int __glXMap2fReqSize(GLbyte *pc, Bool swap ) - { - GLenum target; -- GLint uorder, vorder, k; -+ GLint uorder, vorder; - - target = *(GLenum *)(pc + 0); - uorder = *(GLint *)(pc + 12); -@@ -239,8 +234,7 @@ int __glXMap2fReqSize(GLbyte *pc, Bool s - uorder = SWAPL( uorder ); - vorder = SWAPL( vorder ); - } -- k = __glMap2f_size( target ); -- return 4 * Map2Size( k, uorder, vorder ); -+ return safe_mul(4, Map2Size(__glMap2f_size(target), uorder, vorder)); - } - - int __glXPixelMapfvReqSize(GLbyte *pc, Bool swap ) -@@ -315,13 +309,16 @@ int __glXImageSize( GLenum format, GLenu - GLint bytesPerElement, elementsPerGroup, groupsPerRow; - GLint groupSize, rowSize, padding, imageSize; - -+ if (w == 0 || h == 0 || d == 0) -+ return 0; -+ - if (w < 0 || h < 0 || d < 0 || - (type == GL_BITMAP && - (format != GL_COLOR_INDEX && format != GL_STENCIL_INDEX))) { - return -1; - } -- if (w==0 || h==0 || d == 0) return 0; - -+ /* proxy targets have no data */ - switch( target ) { - case GL_PROXY_TEXTURE_1D: - case GL_PROXY_TEXTURE_2D: -@@ -338,6 +335,12 @@ int __glXImageSize( GLenum format, GLenu - return 0; - } - -+ /* real data has to have real sizes */ -+ if (imageHeight < 0 || rowLength < 0 || skipImages < 0 || skipRows < 0) -+ return -1; -+ if (alignment != 1 && alignment != 2 && alignment != 4 && alignment != 8) -+ return -1; -+ - if (type == GL_BITMAP) { - if (rowLength > 0) { - groupsPerRow = rowLength; -@@ -345,11 +348,13 @@ int __glXImageSize( GLenum format, GLenu - groupsPerRow = w; - } - rowSize = (groupsPerRow + 7) >> 3; -+ if (rowSize < 0) -+ return -1; - padding = (rowSize % alignment); - if (padding) { - rowSize += alignment - padding; - } -- return ((h + skipRows) * rowSize); -+ return safe_mul(safe_add(h, skipRows), rowSize); - } else { - switch(format) { - case GL_COLOR_INDEX: -@@ -430,23 +435,25 @@ int __glXImageSize( GLenum format, GLenu - default: - return -1; - } -+ /* known safe by the switches above, not checked */ - groupSize = bytesPerElement * elementsPerGroup; - if (rowLength > 0) { - groupsPerRow = rowLength; - } else { - groupsPerRow = w; - } -- rowSize = groupsPerRow * groupSize; -+ if ((rowSize = safe_mul(groupsPerRow, groupSize)) < 0) -+ return -1; - padding = (rowSize % alignment); - if (padding) { - rowSize += alignment - padding; - } -- if (imageHeight > 0) { -- imageSize = (imageHeight + skipRows) * rowSize; -- } else { -- imageSize = (h + skipRows) * rowSize; -- } -- return ((d + skipImages) * imageSize); -+ if (imageHeight > 0) -+ h = imageHeight; -+ h = safe_add(h, skipRows); -+ -+ imageSize = safe_mul(h, rowSize); -+ return safe_mul(safe_add(d, skipImages), imageSize); - } - } - -@@ -873,10 +880,9 @@ int __glXSeparableFilter2DReqSize(GLbyte - /* XXX Should rowLength be used for either or both image? */ - image1size = __glXImageSize( format, type, 0, w, 1, 1, - 0, rowLength, 0, 0, alignment ); -- image1size = __GLX_PAD(image1size); - image2size = __glXImageSize( format, type, 0, h, 1, 1, - 0, rowLength, 0, 0, alignment ); -- return image1size + image2size; -+ return safe_add(safe_pad(image1size), image2size); - - } - diff --git a/debian/patches/1037-glx-Top-level-length-checking-for-swapped-Vendo.full.patch b/debian/patches/1037-glx-Top-level-length-checking-for-swapped-Vendo.full.patch deleted file mode 100644 index 702c4bd87..000000000 --- a/debian/patches/1037-glx-Top-level-length-checking-for-swapped-Vendo.full.patch +++ /dev/null @@ -1,48 +0,0 @@ -From ad29acd7697e18333e164b1746f61c5a9e29a436 Mon Sep 17 00:00:00 2001 -From: Adam Jackson <ajax@redhat.com> -Date: Mon, 10 Nov 2014 12:13:44 -0500 -Subject: [PATCH 37/40] glx: Top-level length checking for swapped - VendorPrivate requests [CVE-2014-8098 4/8] - -v2: backport to nx-libs 3.6.x (Mike DePaulo) - -Reviewed-by: Keith Packard <keithp@keithp.com> -Reviewed-by: Julien Cristau <jcristau@debian.org> -Reviewed-by: Michal Srb <msrb@suse.com> -Reviewed-by: Andy Ritger <aritger@nvidia.com> -Signed-off-by: Adam Jackson <ajax@redhat.com> -Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com> -Signed-off-by: Fedora X Ninjas <x@fedoraproject.org> -Signed-off-by: Dave Airlie <airlied@redhat.com> ---- - nx-X11/programs/Xserver/GL/glx/glxcmdsswap.c | 4 ++++ - 1 file changed, 4 insertions(+) - ---- a/nx-X11/programs/Xserver/GL/glx/glxcmdsswap.c -+++ b/nx-X11/programs/Xserver/GL/glx/glxcmdsswap.c -@@ -797,10 +797,12 @@ int __glXSwapRenderLarge(__GLXclientStat - - int __glXSwapVendorPrivate(__GLXclientState *cl, GLbyte *pc) - { -+ ClientPtr client = cl->client; - xGLXVendorPrivateReq *req; - GLint vendorcode; - - __GLX_DECLARE_SWAP_VARIABLES; -+ REQUEST_AT_LEAST_SIZE(xGLXVendorPrivateReq); - - req = (xGLXVendorPrivateReq *) pc; - __GLX_SWAP_SHORT(&req->length); -@@ -835,10 +837,12 @@ int __glXSwapVendorPrivate(__GLXclientSt - - int __glXSwapVendorPrivateWithReply(__GLXclientState *cl, GLbyte *pc) - { -+ ClientPtr client = cl->client; - xGLXVendorPrivateWithReplyReq *req; - GLint vendorcode; - - __GLX_DECLARE_SWAP_VARIABLES; -+ REQUEST_AT_LEAST_SIZE(xGLXVendorPrivateWithReplyReq); - - req = (xGLXVendorPrivateWithReplyReq *) pc; - __GLX_SWAP_SHORT(&req->length); diff --git a/debian/patches/1038-glx-Length-checking-for-non-generated-single-re.full.patch b/debian/patches/1038-glx-Length-checking-for-non-generated-single-re.full.patch deleted file mode 100644 index 7673e17ab..000000000 --- a/debian/patches/1038-glx-Length-checking-for-non-generated-single-re.full.patch +++ /dev/null @@ -1,402 +0,0 @@ -From 8931066077a04999d973932e04da577bd6906c82 Mon Sep 17 00:00:00 2001 -From: Adam Jackson <ajax@redhat.com> -Date: Mon, 10 Nov 2014 12:13:47 -0500 -Subject: [PATCH 38/40] glx: Length checking for non-generated single requests - (v2) [CVE-2014-8098 7/8] - -v2: -Fix single versus vendor-private length checking for ARB_imaging subset -extensions. (Julien Cristau) - -v3: -Fix single versus vendor-private length checking for ARB_imaging subset -extensions. (Julien Cristau) - -v4: backport to nx-libs 3.6.x (Mike DePaulo) - -Reviewed-by: Michal Srb <msrb@suse.com> -Reviewed-by: Andy Ritger <aritger@nvidia.com> -Signed-off-by: Adam Jackson <ajax@redhat.com> -Signed-off-by: Julien Cristau <jcristau@debian.org> -Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com> -Signed-off-by: Fedora X Ninjas <x@fedoraproject.org> -Signed-off-by: Dave Airlie <airlied@redhat.com> - -fix safe_Add ---- - nx-X11/programs/Xserver/GL/glx/single2.c | 21 +++++++++++++++------ - nx-X11/programs/Xserver/GL/glx/single2swap.c | 15 +++++++++++---- - nx-X11/programs/Xserver/GL/glx/singlepix.c | 19 ++++++++++++++----- - nx-X11/programs/Xserver/GL/glx/singlepixswap.c | 17 ++++++++++++----- - 4 files changed, 52 insertions(+), 20 deletions(-) - ---- a/nx-X11/programs/Xserver/GL/glx/single2.c -+++ b/nx-X11/programs/Xserver/GL/glx/single2.c -@@ -48,11 +48,14 @@ - - int __glXDisp_FeedbackBuffer(__GLXclientState *cl, GLbyte *pc) - { -+ ClientPtr client = cl->client; - GLsizei size; - GLenum type; - __GLXcontext *cx; - int error; - -+ REQUEST_FIXED_SIZE(xGLXSingleReq, 8); -+ - cx = __glXForceCurrent(cl, __GLX_GET_SINGLE_CONTEXT_TAG(pc), &error); - if (!cx) { - return error; -@@ -78,10 +81,12 @@ int __glXDisp_FeedbackBuffer(__GLXclient - - int __glXDisp_SelectBuffer(__GLXclientState *cl, GLbyte *pc) - { -+ ClientPtr client = cl->client; - __GLXcontext *cx; - GLsizei size; - int error; - -+ REQUEST_FIXED_SIZE(xGLXSingleReq, 4); - cx = __glXForceCurrent(cl, __GLX_GET_SINGLE_CONTEXT_TAG(pc), &error); - if (!cx) { - return error; -@@ -106,7 +111,7 @@ int __glXDisp_SelectBuffer(__GLXclientSt - - int __glXDisp_RenderMode(__GLXclientState *cl, GLbyte *pc) - { -- ClientPtr client; -+ ClientPtr client = cl->client; - xGLXRenderModeReply reply; - __GLXcontext *cx; - GLint nitems=0, retBytes=0, retval, newModeCheck; -@@ -114,6 +119,8 @@ int __glXDisp_RenderMode(__GLXclientStat - GLenum newMode; - int error; - -+ REQUEST_FIXED_SIZE(xGLXSingleReq, 4); -+ - cx = __glXForceCurrent(cl, __GLX_GET_SINGLE_CONTEXT_TAG(pc), &error); - if (!cx) { - return error; -@@ -188,7 +195,6 @@ int __glXDisp_RenderMode(__GLXclientStat - ** selection array, as per the API for glRenderMode itself. - */ - noChangeAllowed:; -- client = cl->client; - reply.length = nitems; - reply.type = X_Reply; - reply.sequenceNumber = client->sequence; -@@ -204,9 +210,11 @@ int __glXDisp_RenderMode(__GLXclientStat - - int __glXDisp_Flush(__GLXclientState *cl, GLbyte *pc) - { -+ ClientPtr client = cl->client; - __GLXcontext *cx; - int error; - -+ REQUEST_SIZE_MATCH(xGLXSingleReq); - cx = __glXForceCurrent(cl, __GLX_GET_SINGLE_CONTEXT_TAG(pc), &error); - if (!cx) { - return error; -@@ -219,10 +227,11 @@ int __glXDisp_Flush(__GLXclientState *cl - - int __glXDisp_Finish(__GLXclientState *cl, GLbyte *pc) - { -+ ClientPtr client = cl->client; - __GLXcontext *cx; -- ClientPtr client; - int error; - -+ REQUEST_SIZE_MATCH(xGLXSingleReq); - cx = __glXForceCurrent(cl, __GLX_GET_SINGLE_CONTEXT_TAG(pc), &error); - if (!cx) { - return error; -@@ -233,7 +242,6 @@ int __glXDisp_Finish(__GLXclientState *c - __GLX_NOTE_FLUSHED_CMDS(cx); - - /* Send empty reply packet to indicate finish is finished */ -- client = cl->client; - __GLX_BEGIN_REPLY(0); - __GLX_SEND_HEADER(); - return Success; -@@ -302,7 +310,7 @@ char *__glXcombine_strings(const char *c - - int DoGetString(__GLXclientState *cl, GLbyte *pc, GLboolean need_swap) - { -- ClientPtr client; -+ ClientPtr client = cl->client; - __GLXcontext *cx; - GLenum name; - const char *string; -@@ -311,6 +319,8 @@ int DoGetString(__GLXclientState *cl, GL - char *buf = NULL, *buf1 = NULL; - GLint length = 0; - -+ REQUEST_FIXED_SIZE(xGLXSingleReq, 4); -+ - /* If the client has the opposite byte order, swap the contextTag and - * the name. - */ -@@ -327,7 +337,6 @@ int DoGetString(__GLXclientState *cl, GL - pc += __GLX_SINGLE_HDR_SIZE; - name = *(GLenum *)(pc + 0); - string = (const char *)glGetString(name); -- client = cl->client; - - /* - ** Restrict extensions to those that are supported by both the ---- a/nx-X11/programs/Xserver/GL/glx/single2swap.c -+++ b/nx-X11/programs/Xserver/GL/glx/single2swap.c -@@ -48,12 +48,14 @@ - - int __glXDispSwap_FeedbackBuffer(__GLXclientState *cl, GLbyte *pc) - { -+ ClientPtr client = cl->client; - GLsizei size; - GLenum type; - __GLX_DECLARE_SWAP_VARIABLES; - __GLXcontext *cx; - int error; - -+ REQUEST_FIXED_SIZE(xGLXSingleReq, 8); - __GLX_SWAP_INT(&((xGLXSingleReq *)pc)->contextTag); - cx = __glXForceCurrent(cl, __GLX_GET_SINGLE_CONTEXT_TAG(pc), &error); - if (!cx) { -@@ -82,11 +84,13 @@ int __glXDispSwap_FeedbackBuffer(__GLXcl - - int __glXDispSwap_SelectBuffer(__GLXclientState *cl, GLbyte *pc) - { -+ ClientPtr client = cl->client; - __GLXcontext *cx; - GLsizei size; - __GLX_DECLARE_SWAP_VARIABLES; - int error; - -+ REQUEST_FIXED_SIZE(xGLXSingleReq, 4); - __GLX_SWAP_INT(&((xGLXSingleReq *)pc)->contextTag); - cx = __glXForceCurrent(cl, __GLX_GET_SINGLE_CONTEXT_TAG(pc), &error); - if (!cx) { -@@ -113,7 +117,7 @@ int __glXDispSwap_SelectBuffer(__GLXclie - - int __glXDispSwap_RenderMode(__GLXclientState *cl, GLbyte *pc) - { -- ClientPtr client; -+ ClientPtr client = cl->client; - __GLXcontext *cx; - xGLXRenderModeReply reply; - GLint nitems=0, retBytes=0, retval, newModeCheck; -@@ -123,6 +127,8 @@ int __glXDispSwap_RenderMode(__GLXclient - __GLX_DECLARE_SWAP_ARRAY_VARIABLES; - int error; - -+ REQUEST_FIXED_SIZE(xGLXSingleReq, 4); -+ - __GLX_SWAP_INT(&((xGLXSingleReq *)pc)->contextTag); - cx = __glXForceCurrent(cl, __GLX_GET_SINGLE_CONTEXT_TAG(pc), &error); - if (!cx) { -@@ -201,7 +207,6 @@ int __glXDispSwap_RenderMode(__GLXclient - ** selection array, as per the API for glRenderMode itself. - */ - noChangeAllowed:; -- client = cl->client; - reply.length = nitems; - reply.type = X_Reply; - reply.sequenceNumber = client->sequence; -@@ -222,10 +227,12 @@ int __glXDispSwap_RenderMode(__GLXclient - - int __glXDispSwap_Flush(__GLXclientState *cl, GLbyte *pc) - { -+ ClientPtr client = cl->client; - __GLXcontext *cx; - int error; - __GLX_DECLARE_SWAP_VARIABLES; - -+ REQUEST_SIZE_MATCH(xGLXSingleReq); - __GLX_SWAP_INT(&((xGLXSingleReq *)pc)->contextTag); - cx = __glXForceCurrent(cl, __GLX_GET_SINGLE_CONTEXT_TAG(pc), &error); - if (!cx) { -@@ -239,11 +246,12 @@ int __glXDispSwap_Flush(__GLXclientState - - int __glXDispSwap_Finish(__GLXclientState *cl, GLbyte *pc) - { -+ ClientPtr client = cl->client; - __GLXcontext *cx; -- ClientPtr client; - int error; - __GLX_DECLARE_SWAP_VARIABLES; - -+ REQUEST_SIZE_MATCH(xGLXSingleReq); - __GLX_SWAP_INT(&((xGLXSingleReq *)pc)->contextTag); - cx = __glXForceCurrent(cl, __GLX_GET_SINGLE_CONTEXT_TAG(pc), &error); - if (!cx) { -@@ -255,7 +263,6 @@ int __glXDispSwap_Finish(__GLXclientStat - __GLX_NOTE_FLUSHED_CMDS(cx); - - /* Send empty reply packet to indicate finish is finished */ -- client = cl->client; - __GLX_BEGIN_REPLY(0); - __GLX_PUT_RETVAL(0); - __GLX_SWAP_REPLY_HEADER(); ---- a/nx-X11/programs/Xserver/GL/glx/singlepix.c -+++ b/nx-X11/programs/Xserver/GL/glx/singlepix.c -@@ -57,6 +57,8 @@ int __glXDisp_ReadPixels(__GLXclientStat - int error; - char *answer, answerBuffer[200]; - -+ REQUEST_FIXED_SIZE(xGLXSingleReq, 28); -+ - cx = __glXForceCurrent(cl, __GLX_GET_SINGLE_CONTEXT_TAG(pc), &error); - if (!cx) { - return error; -@@ -108,6 +110,7 @@ int __glXDisp_GetTexImage(__GLXclientSta - char *answer, answerBuffer[200]; - GLint width=0, height=0, depth=1; - -+ REQUEST_FIXED_SIZE(xGLXSingleReq, 20); - cx = __glXForceCurrent(cl, __GLX_GET_SINGLE_CONTEXT_TAG(pc), &error); - if (!cx) { - return error; -@@ -204,6 +207,7 @@ int __glXDisp_GetSeparableFilter(__GLXcl - char *answer, answerBuffer[200]; - GLint width=0, height=0; - -+ REQUEST_FIXED_SIZE(xGLXSingleReq, 16); - cx = __glXForceCurrent(cl, __GLX_GET_SINGLE_CONTEXT_TAG(pc), &error); - if (!cx) { - return error; -@@ -227,13 +231,11 @@ int __glXDisp_GetSeparableFilter(__GLXcl - compsize = __glGetTexImage_size(target,1,format,type,width,1,1); - compsize2 = __glGetTexImage_size(target,1,format,type,height,1,1); - -- if (compsize < 0) return BadLength; -- if (compsize2 < 0) compsize2 = 0; -- compsize = __GLX_PAD(compsize); -- compsize2 = __GLX_PAD(compsize2); -+ if ((compsize = safe_pad(compsize)) < 0) return BadLength; -+ if ((compsize2 = safe_pad(compsize2)) < 0) return BadLength; - - glPixelStorei(GL_PACK_SWAP_BYTES, swapBytes); -- __GLX_GET_ANSWER_BUFFER(answer,cl,compsize + compsize2,1); -+ __GLX_GET_ANSWER_BUFFER(answer,cl,safe_add(compsize, compsize2),1); - __glXClearErrorOccured(); - glGetSeparableFilter( - *(GLenum *)(pc + 0), -@@ -269,6 +271,7 @@ int __glXDisp_GetConvolutionFilter(__GLX - char *answer, answerBuffer[200]; - GLint width=0, height=0; - -+ REQUEST_FIXED_SIZE(xGLXSingleReq, 16); - cx = __glXForceCurrent(cl, __GLX_GET_SINGLE_CONTEXT_TAG(pc), &error); - if (!cx) { - return error; -@@ -328,6 +331,8 @@ int __glXDisp_GetHistogram(__GLXclientSt - char *answer, answerBuffer[200]; - GLint width=0; - -+ REQUEST_FIXED_SIZE(xGLXSingleReq, 16); -+ - cx = __glXForceCurrent(cl, __GLX_GET_SINGLE_CONTEXT_TAG(pc), &error); - if (!cx) { - return error; -@@ -376,6 +381,8 @@ int __glXDisp_GetMinmax(__GLXclientState - int error; - char *answer, answerBuffer[200]; - -+ REQUEST_FIXED_SIZE(xGLXSingleReq, 16); -+ - cx = __glXForceCurrent(cl, __GLX_GET_SINGLE_CONTEXT_TAG(pc), &error); - if (!cx) { - return error; -@@ -419,6 +426,8 @@ int __glXDisp_GetColorTable(__GLXclientS - char *answer, answerBuffer[200]; - GLint width=0; - -+ REQUEST_FIXED_SIZE(xGLXSingleReq, 16); -+ - cx = __glXForceCurrent(cl, __GLX_GET_SINGLE_CONTEXT_TAG(pc), &error); - if (!cx) { - return error; ---- a/nx-X11/programs/Xserver/GL/glx/singlepixswap.c -+++ b/nx-X11/programs/Xserver/GL/glx/singlepixswap.c -@@ -58,6 +58,8 @@ int __glXDispSwap_ReadPixels(__GLXclient - int error; - char *answer, answerBuffer[200]; - -+ REQUEST_FIXED_SIZE(xGLXSingleReq, 28); -+ - __GLX_SWAP_INT(&((xGLXSingleReq *)pc)->contextTag); - cx = __glXForceCurrent(cl, __GLX_GET_SINGLE_CONTEXT_TAG(pc), &error); - if (!cx) { -@@ -120,6 +122,7 @@ int __glXDispSwap_GetTexImage(__GLXclien - char *answer, answerBuffer[200]; - GLint width=0, height=0, depth=1; - -+ REQUEST_FIXED_SIZE(xGLXSingleReq, 24); - __GLX_SWAP_INT(&((xGLXSingleReq *)pc)->contextTag); - cx = __glXForceCurrent(cl, __GLX_GET_SINGLE_CONTEXT_TAG(pc), &error); - if (!cx) { -@@ -190,6 +193,7 @@ int __glXDispSwap_GetPolygonStipple(__GL - char *answer; - __GLX_DECLARE_SWAP_VARIABLES; - -+ REQUEST_FIXED_SIZE(xGLXSingleReq, 4); - __GLX_SWAP_INT(&((xGLXSingleReq *)pc)->contextTag); - cx = __glXForceCurrent(cl, __GLX_GET_SINGLE_CONTEXT_TAG(pc), &error); - if (!cx) { -@@ -230,6 +234,7 @@ int __glXDispSwap_GetSeparableFilter(__G - char *answer, answerBuffer[200]; - GLint width=0, height=0; - -+ REQUEST_FIXED_SIZE(xGLXSingleReq, 16); - cx = __glXForceCurrent(cl, __GLX_GET_SINGLE_CONTEXT_TAG(pc), &error); - if (!cx) { - return error; -@@ -257,13 +262,11 @@ int __glXDispSwap_GetSeparableFilter(__G - compsize = __glGetTexImage_size(target,1,format,type,width,1,1); - compsize2 = __glGetTexImage_size(target,1,format,type,height,1,1); - -- if (compsize < 0) return BadLength; -- if (compsize2 < 0) compsize2 = 0; -- compsize = __GLX_PAD(compsize); -- compsize2 = __GLX_PAD(compsize2); -+ if ((compsize = safe_pad(compsize)) < 0) return BadLength; -+ if ((compsize2 = safe_pad(compsize2)) < 0) return BadLength; - - glPixelStorei(GL_PACK_SWAP_BYTES, !swapBytes); -- __GLX_GET_ANSWER_BUFFER(answer,cl,compsize + compsize2,1); -+ __GLX_GET_ANSWER_BUFFER(answer,cl,safe_add(compsize, compsize2),1); - __glXClearErrorOccured(); - glGetSeparableFilter( - *(GLenum *)(pc + 0), -@@ -302,6 +305,7 @@ int __glXDispSwap_GetConvolutionFilter(_ - char *answer, answerBuffer[200]; - GLint width=0, height=0; - -+ REQUEST_FIXED_SIZE(xGLXSingleReq, 16); - cx = __glXForceCurrent(cl, __GLX_GET_SINGLE_CONTEXT_TAG(pc), &error); - if (!cx) { - return error; -@@ -368,6 +372,7 @@ int __glXDispSwap_GetHistogram(__GLXclie - char *answer, answerBuffer[200]; - GLint width=0; - -+ REQUEST_FIXED_SIZE(xGLXSingleReq, 16); - cx = __glXForceCurrent(cl, __GLX_GET_SINGLE_CONTEXT_TAG(pc), &error); - if (!cx) { - return error; -@@ -422,6 +427,7 @@ int __glXDispSwap_GetMinmax(__GLXclientS - __GLX_DECLARE_SWAP_VARIABLES; - char *answer, answerBuffer[200]; - -+ REQUEST_FIXED_SIZE(xGLXSingleReq, 16); - cx = __glXForceCurrent(cl, __GLX_GET_SINGLE_CONTEXT_TAG(pc), &error); - if (!cx) { - return error; -@@ -470,6 +476,7 @@ int __glXDispSwap_GetColorTable(__GLXcli - char *answer, answerBuffer[200]; - GLint width=0; - -+ REQUEST_FIXED_SIZE(xGLXSingleReq, 16); - cx = __glXForceCurrent(cl, __GLX_GET_SINGLE_CONTEXT_TAG(pc), &error); - if (!cx) { - return error; diff --git a/debian/patches/1039-glx-Length-checking-for-RenderLarge-requests-v2.full.patch b/debian/patches/1039-glx-Length-checking-for-RenderLarge-requests-v2.full.patch deleted file mode 100644 index aeeb32ee8..000000000 --- a/debian/patches/1039-glx-Length-checking-for-RenderLarge-requests-v2.full.patch +++ /dev/null @@ -1,283 +0,0 @@ -From 9c558f9ca2c0d4e34fa71dff272ed1c39c22cd9d Mon Sep 17 00:00:00 2001 -From: Adam Jackson <ajax@redhat.com> -Date: Mon, 10 Nov 2014 12:13:43 -0500 -Subject: [PATCH 39/40] glx: Length checking for RenderLarge requests (v2) - [CVE-2014-8098 3/8] (v3) - -This is a half-measure until we start passing request length into the -varsize function, but it's better than the nothing we had before. - -v2: Verify that there's at least a large render header's worth of -dataBytes (Julien Cristau) - -v3: backport to RHEL5 - -v4: backport to nx-libs 3.6.x (Mike DePaulo) - -Reviewed-by: Michal Srb <msrb@suse.com> -Reviewed-by: Andy Ritger <aritger@nvidia.com> -Signed-off-by: Adam Jackson <ajax@redhat.com> -Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com> -Signed-off-by: Fedora X Ninjas <x@fedoraproject.org> -Signed-off-by: Dave Airlie <airlied@redhat.com> - -fixup swap ---- - nx-X11/programs/Xserver/GL/glx/glxcmds.c | 58 ++++++++++++++++----------- - nx-X11/programs/Xserver/GL/glx/glxcmdsswap.c | 59 +++++++++++++++++----------- - 2 files changed, 71 insertions(+), 46 deletions(-) - ---- a/nx-X11/programs/Xserver/GL/glx/glxcmds.c -+++ b/nx-X11/programs/Xserver/GL/glx/glxcmds.c -@@ -1535,6 +1535,8 @@ int __glXRenderLarge(__GLXclientState *c - ** duplicated there. - */ - -+ REQUEST_AT_LEAST_SIZE(xGLXRenderLargeReq); -+ - req = (xGLXRenderLargeReq *) pc; - glxc = __glXForceCurrent(cl, req->contextTag, &error); - if (!glxc) { -@@ -1542,12 +1544,15 @@ int __glXRenderLarge(__GLXclientState *c - __glXResetLargeCommandStatus(cl); - return error; - } -+ if (safe_pad(req->dataBytes) < 0) -+ return BadLength; -+ - dataBytes = req->dataBytes; - - /* - ** Check the request length. - */ -- if ((req->length << 2) != __GLX_PAD(dataBytes) + sz_xGLXRenderLargeReq) { -+ if ((req->length << 2) != safe_pad(dataBytes) + sz_xGLXRenderLargeReq) { - client->errorValue = req->length; - /* Reset in case this isn't 1st request. */ - __glXResetLargeCommandStatus(cl); -@@ -1557,7 +1562,7 @@ int __glXRenderLarge(__GLXclientState *c - - if (cl->largeCmdRequestsSoFar == 0) { - __GLXrenderSizeData *entry; -- int extra, cmdlen; -+ int extra = 0, cmdlen; - /* - ** This is the first request of a multi request command. - ** Make enough space in the buffer, then copy the entire request. -@@ -1567,9 +1572,13 @@ int __glXRenderLarge(__GLXclientState *c - return __glXBadLargeRequest; - } - -+ if (dataBytes < __GLX_RENDER_LARGE_HDR_SIZE) -+ return BadLength; -+ - hdr = (__GLXrenderLargeHeader *) pc; -- cmdlen = hdr->length; - opcode = hdr->opcode; -+ if ((cmdlen = safe_pad(hdr->length)) < 0) -+ return BadLength; - - /* - ** Check for core opcodes and grab entry data. -@@ -1603,16 +1612,13 @@ int __glXRenderLarge(__GLXclientState *c - if (extra < 0) { - return BadLength; - } -- /* large command's header is 4 bytes longer, so add 4 */ -- if (cmdlen != __GLX_PAD(entry->bytes + 4 + extra)) { -- return BadLength; -- } -- } else { -- /* constant size command */ -- if (cmdlen != __GLX_PAD(entry->bytes + 4)) { -- return BadLength; -- } - } -+ -+ /* the +4 is safe because we know entry.bytes is small */ -+ if (cmdlen != safe_pad(safe_add(entry->bytes + 4, extra))) { -+ return BadLength; -+ } -+ - /* - ** Make enough space in the buffer, then copy the entire request. - */ -@@ -1641,6 +1647,7 @@ int __glXRenderLarge(__GLXclientState *c - ** We are receiving subsequent (i.e. not the first) requests of a - ** multi request command. - */ -+ int bytesSoFar; /* including this packet */ - - /* - ** Check the request number and the total request count. -@@ -1659,7 +1666,13 @@ int __glXRenderLarge(__GLXclientState *c - /* - ** Check that we didn't get too much data. - */ -- if ((cl->largeCmdBytesSoFar + dataBytes) > cl->largeCmdBytesTotal) { -+ if ((bytesSoFar = safe_add(cl->largeCmdBytesSoFar, dataBytes)) < 0) { -+ client->errorValue = dataBytes; -+ __glXResetLargeCommandStatus(cl); -+ return __glXBadLargeRequest; -+ } -+ -+ if (bytesSoFar > cl->largeCmdBytesTotal) { - client->errorValue = dataBytes; - __glXResetLargeCommandStatus(cl); - return __glXBadLargeRequest; -@@ -1673,17 +1686,16 @@ int __glXRenderLarge(__GLXclientState *c - ** This is the last request; it must have enough bytes to complete - ** the command. - */ -- /* NOTE: the two pad macros have been added below; they are needed -- ** because the client library pads the total byte count, but not -- ** the per-request byte counts. The Protocol Encoding says the -- ** total byte count should not be padded, so a proposal will be -- ** made to the ARB to relax the padding constraint on the total -- ** byte count, thus preserving backward compatibility. Meanwhile, -- ** the padding done below fixes a bug that did not allow -- ** large commands of odd sizes to be accepted by the server. -+ /* NOTE: the pad macro below is needed because the client library -+ ** pads the total byte count, but not the per-request byte counts. -+ ** The Protocol Encoding says the total byte count should not be -+ ** padded, so a proposal will be made to the ARB to relax the -+ ** padding constraint on the total byte count, thus preserving -+ ** backward compatibility. Meanwhile, the padding done below -+ ** fixes a bug that did not allow large commands of odd sizes to -+ ** be accepted by the server. - */ -- if (__GLX_PAD(cl->largeCmdBytesSoFar) != -- __GLX_PAD(cl->largeCmdBytesTotal)) { -+ if (safe_pad(cl->largeCmdBytesSoFar) != cl->largeCmdBytesTotal) { - client->errorValue = dataBytes; - __glXResetLargeCommandStatus(cl); - return __glXBadLargeRequest; ---- a/nx-X11/programs/Xserver/GL/glx/glxcmdsswap.c -+++ b/nx-X11/programs/Xserver/GL/glx/glxcmdsswap.c -@@ -587,6 +587,8 @@ int __glXSwapRenderLarge(__GLXclientStat - ** duplicated there. - */ - -+ REQUEST_AT_LEAST_SIZE(xGLXRenderLargeReq); -+ - req = (xGLXRenderLargeReq *) pc; - __GLX_SWAP_SHORT(&req->length); - __GLX_SWAP_INT(&req->contextTag); -@@ -599,12 +601,15 @@ int __glXSwapRenderLarge(__GLXclientStat - __glXResetLargeCommandStatus(cl); - return error; - } -+ if (safe_pad(req->dataBytes) < 0) -+ return BadLength; -+ - dataBytes = req->dataBytes; - - /* - ** Check the request length. - */ -- if ((req->length << 2) != __GLX_PAD(dataBytes) + sz_xGLXRenderLargeReq) { -+ if ((req->length << 2) != safe_pad(dataBytes) + sz_xGLXRenderLargeReq) { - client->errorValue = req->length; - /* Reset in case this isn't 1st request. */ - __glXResetLargeCommandStatus(cl); -@@ -614,7 +619,7 @@ int __glXSwapRenderLarge(__GLXclientStat - - if (cl->largeCmdRequestsSoFar == 0) { - __GLXrenderSizeData *entry; -- int extra; -+ int extra = 0; - size_t cmdlen; - /* - ** This is the first request of a multi request command. -@@ -624,12 +629,17 @@ int __glXSwapRenderLarge(__GLXclientStat - client->errorValue = req->requestNumber; - return __glXBadLargeRequest; - } -+ if (dataBytes < __GLX_RENDER_LARGE_HDR_SIZE) -+ return BadLength; -+ - hdr = (__GLXrenderLargeHeader *) pc; - __GLX_SWAP_INT(&hdr->length); - __GLX_SWAP_INT(&hdr->opcode); -- cmdlen = hdr->length; - opcode = hdr->opcode; - -+ if ((cmdlen = safe_pad(hdr->length)) < 0) -+ return BadLength; -+ - if ( (opcode >= __GLX_MIN_RENDER_OPCODE) && - (opcode <= __GLX_MAX_RENDER_OPCODE) ) { - entry = &__glXRenderSizeTable[opcode]; -@@ -661,16 +671,12 @@ int __glXSwapRenderLarge(__GLXclientStat - if (extra < 0) { - return BadLength; - } -- /* large command's header is 4 bytes longer, so add 4 */ -- if (cmdlen != __GLX_PAD(entry->bytes + 4 + extra)) { -- return BadLength; -- } -- } else { -- /* constant size command */ -- if (cmdlen != __GLX_PAD(entry->bytes + 4)) { -- return BadLength; -- } - } -+ /* the +4 is safe because we know entry->bytes is small */ -+ if (cmdlen != safe_pad(safe_add(entry->bytes + 4, extra))) { -+ return BadLength; -+ } -+ - /* - ** Make enough space in the buffer, then copy the entire request. - */ -@@ -698,6 +704,7 @@ int __glXSwapRenderLarge(__GLXclientStat - ** We are receiving subsequent (i.e. not the first) requests of a - ** multi request command. - */ -+ int bytesSoFar; /* including this packet */ - - /* - ** Check the request number and the total request count. -@@ -716,7 +723,13 @@ int __glXSwapRenderLarge(__GLXclientStat - /* - ** Check that we didn't get too much data. - */ -- if ((cl->largeCmdBytesSoFar + dataBytes) > cl->largeCmdBytesTotal) { -+ if ((bytesSoFar = safe_add(cl->largeCmdBytesSoFar, dataBytes)) < 0) { -+ client->errorValue = dataBytes; -+ __glXResetLargeCommandStatus(cl); -+ return __glXBadLargeRequest; -+ } -+ -+ if (bytesSoFar > cl->largeCmdBytesTotal) { - client->errorValue = dataBytes; - __glXResetLargeCommandStatus(cl); - return __glXBadLargeRequest; -@@ -730,17 +743,17 @@ int __glXSwapRenderLarge(__GLXclientStat - ** This is the last request; it must have enough bytes to complete - ** the command. - */ -- /* NOTE: the two pad macros have been added below; they are needed -- ** because the client library pads the total byte count, but not -- ** the per-request byte counts. The Protocol Encoding says the -- ** total byte count should not be padded, so a proposal will be -- ** made to the ARB to relax the padding constraint on the total -- ** byte count, thus preserving backward compatibility. Meanwhile, -- ** the padding done below fixes a bug that did not allow -- ** large commands of odd sizes to be accepted by the server. -+ /* NOTE: the pad macro below is needed because the client library -+ ** pads the total byte count, but not the per-request byte counts. -+ ** The Protocol Encoding says the total byte count should not be -+ ** padded, so a proposal will be made to the ARB to relax the -+ ** padding constraint on the total byte count, thus preserving -+ ** backward compatibility. Meanwhile, the padding done below -+ ** fixes a bug that did not allow large commands of odd sizes to -+ ** be accepted by the server. - */ -- if (__GLX_PAD(cl->largeCmdBytesSoFar) != -- __GLX_PAD(cl->largeCmdBytesTotal)) { -+ -+ if (safe_pad(cl->largeCmdBytesSoFar) != cl->largeCmdBytesTotal) { - client->errorValue = dataBytes; - __glXResetLargeCommandStatus(cl); - return __glXBadLargeRequest; diff --git a/debian/patches/1040-glx-Pass-remaining-request-length-into-varsize-.full.patch b/debian/patches/1040-glx-Pass-remaining-request-length-into-varsize-.full.patch deleted file mode 100644 index dd3269190..000000000 --- a/debian/patches/1040-glx-Pass-remaining-request-length-into-varsize-.full.patch +++ /dev/null @@ -1,611 +0,0 @@ -From 1ea1cd8c4f93b0c03e5b34fe174b3fc9f27c7dfa Mon Sep 17 00:00:00 2001 -From: Adam Jackson <ajax@redhat.com> -Date: Mon, 10 Nov 2014 12:13:48 -0500 -Subject: [PATCH 40/40] glx: Pass remaining request length into ->varsize (v2) - [CVE-2014-8098 8/8] (V3) - -v2: Handle more multiplies in indirect_reqsize.c (Julien Cristau) - -v3: RHEL5 backport - -v4: backport to nx-libs 3.6.x (Mike DePaulo) - -Reviewed-by: Julien Cristau <jcristau@debian.org> -Reviewed-by: Michal Srb <msrb@suse.com> -Reviewed-by: Andy Ritger <aritger@nvidia.com> -Signed-off-by: Adam Jackson <ajax@redhat.com> -Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com> -Signed-off-by: Fedora X Ninjas <x@fedoraproject.org> -Signed-off-by: Dave Airlie <airlied@redhat.com> ---- - nx-X11/programs/Xserver/GL/glx/glxcmds.c | 6 +- - nx-X11/programs/Xserver/GL/glx/glxcmdsswap.c | 7 +- - nx-X11/programs/Xserver/GL/glx/glxserver.h | 90 +++++++++---------- - nx-X11/programs/Xserver/GL/glx/rensize.c | 125 ++++++++++++++------------- - 4 files changed, 121 insertions(+), 107 deletions(-) - ---- a/nx-X11/programs/Xserver/GL/glx/glxcmds.c -+++ b/nx-X11/programs/Xserver/GL/glx/glxcmds.c -@@ -1490,7 +1490,7 @@ int __glXRender(__GLXclientState *cl, GL - - if (entry->varsize) { - /* variable size command */ -- extra = (*entry->varsize)(pc + __GLX_RENDER_HDR_SIZE, False); -+ extra = (*entry->varsize)(pc + __GLX_RENDER_HDR_SIZE, False, left - __GLX_RENDER_HDR_SIZE); - if (extra < 0) { - return BadLength; - } -@@ -1563,6 +1563,7 @@ int __glXRenderLarge(__GLXclientState *c - if (cl->largeCmdRequestsSoFar == 0) { - __GLXrenderSizeData *entry; - int extra = 0, cmdlen; -+ int left = (req->length << 2) - sz_xGLXRenderLargeReq; - /* - ** This is the first request of a multi request command. - ** Make enough space in the buffer, then copy the entire request. -@@ -1608,7 +1609,8 @@ int __glXRenderLarge(__GLXclientState *c - ** be computed from its parameters), all the parameters needed - ** will be in the 1st request, so it's okay to do this. - */ -- extra = (*entry->varsize)(pc + __GLX_RENDER_LARGE_HDR_SIZE, False); -+ extra = (*entry->varsize)(pc + __GLX_RENDER_LARGE_HDR_SIZE, False, -+ left - __GLX_RENDER_LARGE_HDR_SIZE); - if (extra < 0) { - return BadLength; - } ---- a/nx-X11/programs/Xserver/GL/glx/glxcmdsswap.c -+++ b/nx-X11/programs/Xserver/GL/glx/glxcmdsswap.c -@@ -541,7 +541,8 @@ int __glXSwapRender(__GLXclientState *cl - - if (entry->varsize) { - /* variable size command */ -- extra = (*entry->varsize)(pc + __GLX_RENDER_HDR_SIZE, True); -+ extra = (*entry->varsize)(pc + __GLX_RENDER_HDR_SIZE, True, -+ left - __GLX_RENDER_HDR_SIZE); - if (extra < 0) { - return BadLength; - } -@@ -620,6 +621,7 @@ int __glXSwapRenderLarge(__GLXclientStat - if (cl->largeCmdRequestsSoFar == 0) { - __GLXrenderSizeData *entry; - int extra = 0; -+ int left = (req->length << 2) - sz_xGLXRenderLargeReq; - size_t cmdlen; - /* - ** This is the first request of a multi request command. -@@ -667,7 +669,8 @@ int __glXSwapRenderLarge(__GLXclientStat - ** be computed from its parameters), all the parameters needed - ** will be in the 1st request, so it's okay to do this. - */ -- extra = (*entry->varsize)(pc + __GLX_RENDER_LARGE_HDR_SIZE, True); -+ extra = (*entry->varsize)(pc + __GLX_RENDER_LARGE_HDR_SIZE, True, -+ left - __GLX_RENDER_LARGE_HDR_SIZE); - if (extra < 0) { - return BadLength; - } ---- a/nx-X11/programs/Xserver/GL/glx/glxserver.h -+++ b/nx-X11/programs/Xserver/GL/glx/glxserver.h -@@ -179,7 +179,7 @@ extern __GLXprocPtr __glXProcTable[]; - */ - typedef struct { - int bytes; -- int (*varsize)(GLbyte *pc, Bool swap); -+ int (*varsize)(GLbyte *pc, Bool swap, int left); - } __GLXrenderSizeData; - extern __GLXrenderSizeData __glXRenderSizeTable[]; - extern __GLXrenderSizeData __glXRenderSizeTable_EXT[]; -@@ -271,48 +271,48 @@ extern int __glXImageSize(GLenum format, - GLint imageHeight, GLint rowLength, GLint skipImages, GLint skipRows, - GLint alignment); - --extern int __glXCallListsReqSize(GLbyte *pc, Bool swap); --extern int __glXBitmapReqSize(GLbyte *pc, Bool swap); --extern int __glXFogfvReqSize(GLbyte *pc, Bool swap); --extern int __glXFogivReqSize(GLbyte *pc, Bool swap); --extern int __glXLightfvReqSize(GLbyte *pc, Bool swap); --extern int __glXLightivReqSize(GLbyte *pc, Bool swap); --extern int __glXLightModelfvReqSize(GLbyte *pc, Bool swap); --extern int __glXLightModelivReqSize(GLbyte *pc, Bool swap); --extern int __glXMaterialfvReqSize(GLbyte *pc, Bool swap); --extern int __glXMaterialivReqSize(GLbyte *pc, Bool swap); --extern int __glXTexParameterfvReqSize(GLbyte *pc, Bool swap); --extern int __glXTexParameterivReqSize(GLbyte *pc, Bool swap); --extern int __glXTexImage1DReqSize(GLbyte *pc, Bool swap); --extern int __glXTexImage2DReqSize(GLbyte *pc, Bool swap); --extern int __glXTexEnvfvReqSize(GLbyte *pc, Bool swap); --extern int __glXTexEnvivReqSize(GLbyte *pc, Bool swap); --extern int __glXTexGendvReqSize(GLbyte *pc, Bool swap); --extern int __glXTexGenfvReqSize(GLbyte *pc, Bool swap); --extern int __glXTexGenivReqSize(GLbyte *pc, Bool swap); --extern int __glXMap1dReqSize(GLbyte *pc, Bool swap); --extern int __glXMap1fReqSize(GLbyte *pc, Bool swap); --extern int __glXMap2dReqSize(GLbyte *pc, Bool swap); --extern int __glXMap2fReqSize(GLbyte *pc, Bool swap); --extern int __glXPixelMapfvReqSize(GLbyte *pc, Bool swap); --extern int __glXPixelMapuivReqSize(GLbyte *pc, Bool swap); --extern int __glXPixelMapusvReqSize(GLbyte *pc, Bool swap); --extern int __glXDrawPixelsReqSize(GLbyte *pc, Bool swap); --extern int __glXDrawArraysSize(GLbyte *pc, Bool swap); --extern int __glXPrioritizeTexturesReqSize(GLbyte *pc, Bool swap); --extern int __glXTexSubImage1DReqSize(GLbyte *pc, Bool swap); --extern int __glXTexSubImage2DReqSize(GLbyte *pc, Bool swap); --extern int __glXTexImage3DReqSize(GLbyte *pc, Bool swap ); --extern int __glXTexSubImage3DReqSize(GLbyte *pc, Bool swap); --extern int __glXConvolutionFilter1DReqSize(GLbyte *pc, Bool swap); --extern int __glXConvolutionFilter2DReqSize(GLbyte *pc, Bool swap); --extern int __glXConvolutionParameterivReqSize(GLbyte *pc, Bool swap); --extern int __glXConvolutionParameterfvReqSize(GLbyte *pc, Bool swap); --extern int __glXSeparableFilter2DReqSize(GLbyte *pc, Bool swap); --extern int __glXColorTableReqSize(GLbyte *pc, Bool swap); --extern int __glXColorSubTableReqSize(GLbyte *pc, Bool swap); --extern int __glXColorTableParameterfvReqSize(GLbyte *pc, Bool swap); --extern int __glXColorTableParameterivReqSize(GLbyte *pc, Bool swap); -+extern int __glXCallListsReqSize(GLbyte *pc, Bool swap, int reqlen); -+extern int __glXBitmapReqSize(GLbyte *pc, Bool swap, int reqlen); -+extern int __glXFogfvReqSize(GLbyte *pc, Bool swap, int reqlen); -+extern int __glXFogivReqSize(GLbyte *pc, Bool swap, int reqlen); -+extern int __glXLightfvReqSize(GLbyte *pc, Bool swap, int reqlen); -+extern int __glXLightivReqSize(GLbyte *pc, Bool swap, int reqlen); -+extern int __glXLightModelfvReqSize(GLbyte *pc, Bool swap, int reqlen); -+extern int __glXLightModelivReqSize(GLbyte *pc, Bool swap, int reqlen); -+extern int __glXMaterialfvReqSize(GLbyte *pc, Bool swap, int reqlen); -+extern int __glXMaterialivReqSize(GLbyte *pc, Bool swap, int reqlen); -+extern int __glXTexParameterfvReqSize(GLbyte *pc, Bool swap, int reqlen); -+extern int __glXTexParameterivReqSize(GLbyte *pc, Bool swap, int reqlen); -+extern int __glXTexImage1DReqSize(GLbyte *pc, Bool swap, int reqlen); -+extern int __glXTexImage2DReqSize(GLbyte *pc, Bool swap, int reqlen); -+extern int __glXTexEnvfvReqSize(GLbyte *pc, Bool swap, int reqlen); -+extern int __glXTexEnvivReqSize(GLbyte *pc, Bool swap, int reqlen); -+extern int __glXTexGendvReqSize(GLbyte *pc, Bool swap, int reqlen); -+extern int __glXTexGenfvReqSize(GLbyte *pc, Bool swap, int reqlen); -+extern int __glXTexGenivReqSize(GLbyte *pc, Bool swap, int reqlen); -+extern int __glXMap1dReqSize(GLbyte *pc, Bool swap, int reqlen); -+extern int __glXMap1fReqSize(GLbyte *pc, Bool swap, int reqlen); -+extern int __glXMap2dReqSize(GLbyte *pc, Bool swap, int reqlen); -+extern int __glXMap2fReqSize(GLbyte *pc, Bool swap, int reqlen); -+extern int __glXPixelMapfvReqSize(GLbyte *pc, Bool swap, int reqlen); -+extern int __glXPixelMapuivReqSize(GLbyte *pc, Bool swap, int reqlen); -+extern int __glXPixelMapusvReqSize(GLbyte *pc, Bool swap, int reqlen); -+extern int __glXDrawPixelsReqSize(GLbyte *pc, Bool swap, int reqlen); -+extern int __glXDrawArraysSize(GLbyte *pc, Bool swap, int reqlen); -+extern int __glXPrioritizeTexturesReqSize(GLbyte *pc, Bool swap, int reqlen); -+extern int __glXTexSubImage1DReqSize(GLbyte *pc, Bool swap, int reqlen); -+extern int __glXTexSubImage2DReqSize(GLbyte *pc, Bool swap, int reqlen); -+extern int __glXTexImage3DReqSize(GLbyte *pc, Bool swap, int reqlen ); -+extern int __glXTexSubImage3DReqSize(GLbyte *pc, Bool swap, int reqlen); -+extern int __glXConvolutionFilter1DReqSize(GLbyte *pc, Bool swap, int reqlen); -+extern int __glXConvolutionFilter2DReqSize(GLbyte *pc, Bool swap, int reqlen); -+extern int __glXConvolutionParameterivReqSize(GLbyte *pc, Bool swap, int reqlen); -+extern int __glXConvolutionParameterfvReqSize(GLbyte *pc, Bool swap, int reqlen); -+extern int __glXSeparableFilter2DReqSize(GLbyte *pc, Bool swap, int reqlen); -+extern int __glXColorTableReqSize(GLbyte *pc, Bool swap, int reqlen); -+extern int __glXColorSubTableReqSize(GLbyte *pc, Bool swap, int reqlen); -+extern int __glXColorTableParameterfvReqSize(GLbyte *pc, Bool swap, int reqlen); -+extern int __glXColorTableParameterivReqSize(GLbyte *pc, Bool swap, int reqlen); - - /* - * Routines for computing the size of returned data. -@@ -322,7 +322,7 @@ extern int __glXConvolutionParameterfvSi - extern int __glXColorTableParameterfvSize(GLenum pname); - extern int __glXColorTableParameterivSize(GLenum pname); - --extern int __glXPointParameterfvARBReqSize(GLbyte *pc, Bool swap); --extern int __glXPointParameterivReqSize(GLbyte *pc, Bool swap); -+extern int __glXPointParameterfvARBReqSize(GLbyte *pc, Bool swap, int reqlen); -+extern int __glXPointParameterivReqSize(GLbyte *pc, Bool swap, int reqlen); - - #endif /* !__GLX_server_h__ */ ---- a/nx-X11/programs/Xserver/GL/glx/rensize.c -+++ b/nx-X11/programs/Xserver/GL/glx/rensize.c -@@ -48,7 +48,7 @@ - (((a & 0xff000000U)>>24) | ((a & 0xff0000U)>>8) | \ - ((a & 0xff00U)<<8) | ((a & 0xffU)<<24)) - --int __glXCallListsReqSize(GLbyte *pc, Bool swap ) -+int __glXCallListsReqSize(GLbyte *pc, Bool swap, int reqlen) - { - GLsizei n = *(GLsizei *)(pc + 0); - GLenum type = *(GLenum *)(pc + 4); -@@ -60,7 +60,7 @@ int __glXCallListsReqSize(GLbyte *pc, Bo - return n * __glCallLists_size( type ); - } - --int __glXFogivReqSize(GLbyte *pc, Bool swap ) -+int __glXFogivReqSize(GLbyte *pc, Bool swap, int reqlen) - { - GLenum pname = *(GLenum *)(pc + 0); - if (swap) { -@@ -69,12 +69,12 @@ int __glXFogivReqSize(GLbyte *pc, Bool s - return 4 * __glFogiv_size( pname ); /* defined in samplegl lib */ - } - --int __glXFogfvReqSize(GLbyte *pc, Bool swap ) -+int __glXFogfvReqSize(GLbyte *pc, Bool swap, int reqlen) - { -- return __glXFogivReqSize( pc, swap ); -+ return __glXFogivReqSize( pc, swap, reqlen); - } - --int __glXLightfvReqSize(GLbyte *pc, Bool swap ) -+int __glXLightfvReqSize(GLbyte *pc, Bool swap, int reqlen) - { - GLenum pname = *(GLenum *)(pc + 4); - if (swap) { -@@ -83,12 +83,12 @@ int __glXLightfvReqSize(GLbyte *pc, Bool - return 4 * __glLightfv_size( pname ); /* defined in samplegl lib */ - } - --int __glXLightivReqSize(GLbyte *pc, Bool swap ) -+int __glXLightivReqSize(GLbyte *pc, Bool swap, int reqlen) - { -- return __glXLightfvReqSize( pc, swap ); -+ return __glXLightfvReqSize( pc, swap, reqlen); - } - --int __glXLightModelfvReqSize(GLbyte *pc, Bool swap ) -+int __glXLightModelfvReqSize(GLbyte *pc, Bool swap, int reqlen) - { - GLenum pname = *(GLenum *)(pc + 0); - if (swap) { -@@ -97,12 +97,12 @@ int __glXLightModelfvReqSize(GLbyte *pc, - return 4 * __glLightModelfv_size( pname ); /* defined in samplegl lib */ - } - --int __glXLightModelivReqSize(GLbyte *pc, Bool swap ) -+int __glXLightModelivReqSize(GLbyte *pc, Bool swap, int reqlen) - { -- return __glXLightModelfvReqSize( pc, swap ); -+ return __glXLightModelfvReqSize( pc, swap, reqlen); - } - --int __glXMaterialfvReqSize(GLbyte *pc, Bool swap ) -+int __glXMaterialfvReqSize(GLbyte *pc, Bool swap, int reqlen) - { - GLenum pname = *(GLenum *)(pc + 4); - if (swap) { -@@ -111,12 +111,12 @@ int __glXMaterialfvReqSize(GLbyte *pc, B - return 4 * __glMaterialfv_size( pname ); /* defined in samplegl lib */ - } - --int __glXMaterialivReqSize(GLbyte *pc, Bool swap ) -+int __glXMaterialivReqSize(GLbyte *pc, Bool swap, int reqlen) - { -- return __glXMaterialfvReqSize( pc, swap ); -+ return __glXMaterialfvReqSize( pc, swap, reqlen); - } - --int __glXTexGendvReqSize(GLbyte *pc, Bool swap ) -+int __glXTexGendvReqSize(GLbyte *pc, Bool swap, int reqlen) - { - GLenum pname = *(GLenum *)(pc + 4); - if (swap) { -@@ -125,7 +125,7 @@ int __glXTexGendvReqSize(GLbyte *pc, Boo - return 8 * __glTexGendv_size( pname ); /* defined in samplegl lib */ - } - --int __glXTexGenfvReqSize(GLbyte *pc, Bool swap ) -+int __glXTexGenfvReqSize(GLbyte *pc, Bool swap, int reqlen) - { - GLenum pname = *(GLenum *)(pc + 4); - if (swap) { -@@ -134,12 +134,12 @@ int __glXTexGenfvReqSize(GLbyte *pc, Boo - return 4 * __glTexGenfv_size( pname ); /* defined in samplegl lib */ - } - --int __glXTexGenivReqSize(GLbyte *pc, Bool swap ) -+int __glXTexGenivReqSize(GLbyte *pc, Bool swap, int reqlen) - { -- return __glXTexGenfvReqSize( pc, swap ); -+ return __glXTexGenfvReqSize( pc, swap, reqlen); - } - --int __glXTexParameterfvReqSize(GLbyte *pc, Bool swap ) -+int __glXTexParameterfvReqSize(GLbyte *pc, Bool swap, int reqlen) - { - GLenum pname = *(GLenum *)(pc + 4); - if (swap) { -@@ -148,12 +148,12 @@ int __glXTexParameterfvReqSize(GLbyte *p - return 4 * __glTexParameterfv_size( pname ); /* defined in samplegl lib */ - } - --int __glXTexParameterivReqSize(GLbyte *pc, Bool swap ) -+int __glXTexParameterivReqSize(GLbyte *pc, Bool swap, int reqlen) - { -- return __glXTexParameterfvReqSize( pc, swap ); -+ return __glXTexParameterfvReqSize( pc, swap, reqlen); - } - --int __glXTexEnvfvReqSize(GLbyte *pc, Bool swap ) -+int __glXTexEnvfvReqSize(GLbyte *pc, Bool swap, int reqlen) - { - GLenum pname = *(GLenum *)(pc + 4); - if (swap) { -@@ -162,12 +162,12 @@ int __glXTexEnvfvReqSize(GLbyte *pc, Boo - return 4 * __glTexEnvfv_size( pname ); /* defined in samplegl lib */ - } - --int __glXTexEnvivReqSize(GLbyte *pc, Bool swap ) -+int __glXTexEnvivReqSize(GLbyte *pc, Bool swap, int reqlen ) - { -- return __glXTexEnvfvReqSize( pc, swap ); -+ return __glXTexEnvfvReqSize( pc, swap, reqlen); - } - --int __glXMap1dReqSize(GLbyte *pc, Bool swap ) -+int __glXMap1dReqSize(GLbyte *pc, Bool swap, int reqlen ) - { - GLenum target; - GLint order; -@@ -183,7 +183,7 @@ int __glXMap1dReqSize(GLbyte *pc, Bool s - return safe_mul(8, safe_mul(__glMap1d_size(target), order)); - } - --int __glXMap1fReqSize(GLbyte *pc, Bool swap ) -+int __glXMap1fReqSize(GLbyte *pc, Bool swap, int reqlen ) - { - GLenum target; - GLint order; -@@ -205,7 +205,7 @@ static int Map2Size(int k, int majorOrde - return safe_mul(k, safe_mul(majorOrder, minorOrder)); - } - --int __glXMap2dReqSize(GLbyte *pc, Bool swap ) -+int __glXMap2dReqSize(GLbyte *pc, Bool swap, int reqlen) - { - GLenum target; - GLint uorder, vorder; -@@ -221,7 +221,7 @@ int __glXMap2dReqSize(GLbyte *pc, Bool s - return safe_mul(8, Map2Size(__glMap2d_size(target), uorder, vorder)); - } - --int __glXMap2fReqSize(GLbyte *pc, Bool swap ) -+int __glXMap2fReqSize(GLbyte *pc, Bool swap, int reqlen) - { - GLenum target; - GLint uorder, vorder; -@@ -237,7 +237,7 @@ int __glXMap2fReqSize(GLbyte *pc, Bool s - return safe_mul(4, Map2Size(__glMap2f_size(target), uorder, vorder)); - } - --int __glXPixelMapfvReqSize(GLbyte *pc, Bool swap ) -+int __glXPixelMapfvReqSize(GLbyte *pc, Bool swap, int reqlen) - { - GLint mapsize; - mapsize = *(GLint *)(pc + 4); -@@ -247,12 +247,12 @@ int __glXPixelMapfvReqSize(GLbyte *pc, B - return 4 * mapsize; - } - --int __glXPixelMapuivReqSize(GLbyte *pc, Bool swap ) -+int __glXPixelMapuivReqSize(GLbyte *pc, Bool swap, int reqlen) - { -- return __glXPixelMapfvReqSize( pc, swap ); -+ return __glXPixelMapfvReqSize( pc, swap, reqlen); - } - --int __glXPixelMapusvReqSize(GLbyte *pc, Bool swap ) -+int __glXPixelMapusvReqSize(GLbyte *pc, Bool swap, int reqlen) - { - GLint mapsize; - mapsize = *(GLint *)(pc + 4); -@@ -458,7 +458,7 @@ int __glXImageSize( GLenum format, GLenu - } - - --int __glXDrawPixelsReqSize(GLbyte *pc, Bool swap ) -+int __glXDrawPixelsReqSize(GLbyte *pc, Bool swap, int reqlen) - { - __GLXdispatchDrawPixelsHeader *hdr = (__GLXdispatchDrawPixelsHeader *) pc; - GLenum format = hdr->format; -@@ -482,7 +482,7 @@ int __glXDrawPixelsReqSize(GLbyte *pc, B - 0, rowLength, 0, skipRows, alignment ); - } - --int __glXBitmapReqSize(GLbyte *pc, Bool swap ) -+int __glXBitmapReqSize(GLbyte *pc, Bool swap, int reqlen) - { - __GLXdispatchBitmapHeader *hdr = (__GLXdispatchBitmapHeader *) pc; - GLint w = hdr->width; -@@ -502,7 +502,7 @@ int __glXBitmapReqSize(GLbyte *pc, Bool - 0, rowLength, 0, skipRows, alignment ); - } - --int __glXTexImage1DReqSize(GLbyte *pc, Bool swap ) -+int __glXTexImage1DReqSize(GLbyte *pc, Bool swap, int reqlen) - { - __GLXdispatchTexImageHeader *hdr = (__GLXdispatchTexImageHeader *) pc; - GLenum target = hdr->target; -@@ -531,7 +531,7 @@ int __glXTexImage1DReqSize(GLbyte *pc, B - 0, rowLength, 0, skipRows, alignment ); - } - --int __glXTexImage2DReqSize(GLbyte *pc, Bool swap ) -+int __glXTexImage2DReqSize(GLbyte *pc, Bool swap, int reqlen) - { - __GLXdispatchTexImageHeader *hdr = (__GLXdispatchTexImageHeader *) pc; - GLenum target = hdr->target; -@@ -578,13 +578,14 @@ int __glXTypeSize(GLenum enm) - } - } - --int __glXDrawArraysSize( GLbyte *pc, Bool swap ) -+int __glXDrawArraysSize( GLbyte *pc, Bool swap, int reqlen) - { - __GLXdispatchDrawArraysHeader *hdr = (__GLXdispatchDrawArraysHeader *) pc; - __GLXdispatchDrawArraysComponentHeader *compHeader; - GLint numVertexes = hdr->numVertexes; - GLint numComponents = hdr->numComponents; - GLint arrayElementSize = 0; -+ GLint x, size; - int i; - - if (swap) { -@@ -593,6 +594,13 @@ int __glXDrawArraysSize( GLbyte *pc, Boo - } - - pc += sizeof(__GLXdispatchDrawArraysHeader); -+ reqlen -= sizeof(__GLXdispatchDrawArraysHeader); -+ -+ size = safe_mul(sizeof(__GLXdispatchDrawArraysComponentHeader), -+ numComponents); -+ if (size < 0 || reqlen < 0 || reqlen < size) -+ return -1; -+ - compHeader = (__GLXdispatchDrawArraysComponentHeader *) pc; - - for (i=0; i<numComponents; i++) { -@@ -636,23 +644,24 @@ int __glXDrawArraysSize( GLbyte *pc, Boo - return -1; - } - -- arrayElementSize += __GLX_PAD(numVals * __glXTypeSize(datatype)); -+ x = safe_pad(safe_mul(numVals, __glXTypeSize(datatype))); -+ if ((arrayElementSize = safe_add(arrayElementSize, x)) < 0) -+ return -1; - - pc += sizeof(__GLXdispatchDrawArraysComponentHeader); - } - -- return ((numComponents * sizeof(__GLXdispatchDrawArraysComponentHeader)) + -- (numVertexes * arrayElementSize)); -+ return safe_add(size, safe_mul(numVertexes, arrayElementSize)); - } - --int __glXPrioritizeTexturesReqSize(GLbyte *pc, Bool swap ) -+int __glXPrioritizeTexturesReqSize(GLbyte *pc, Bool swap, int reqlen) - { - GLint n = *(GLsizei *)(pc + 0); - if (swap) n = SWAPL(n); - return(8*n); /* 4*n for textures, 4*n for priorities */ - } - --int __glXTexSubImage1DReqSize(GLbyte *pc, Bool swap ) -+int __glXTexSubImage1DReqSize(GLbyte *pc, Bool swap, int reqlen) - { - __GLXdispatchTexSubImageHeader *hdr = (__GLXdispatchTexSubImageHeader *) pc; - GLenum format = hdr->format; -@@ -674,7 +683,7 @@ int __glXTexSubImage1DReqSize(GLbyte *pc - 0, rowLength, 0, skipRows, alignment ); - } - --int __glXTexSubImage2DReqSize(GLbyte *pc, Bool swap ) -+int __glXTexSubImage2DReqSize(GLbyte *pc, Bool swap, int reqlen) - { - __GLXdispatchTexSubImageHeader *hdr = (__GLXdispatchTexSubImageHeader *) pc; - GLenum format = hdr->format; -@@ -698,7 +707,7 @@ int __glXTexSubImage2DReqSize(GLbyte *pc - 0, rowLength, 0, skipRows, alignment ); - } - --int __glXTexImage3DReqSize(GLbyte *pc, Bool swap ) -+int __glXTexImage3DReqSize(GLbyte *pc, Bool swap, int reqlen) - { - __GLXdispatchTexImage3DHeader *hdr = (__GLXdispatchTexImage3DHeader *) pc; - GLenum target = hdr->target; -@@ -735,7 +744,7 @@ int __glXTexImage3DReqSize(GLbyte *pc, B - } - } - --int __glXTexSubImage3DReqSize(GLbyte *pc, Bool swap ) -+int __glXTexSubImage3DReqSize(GLbyte *pc, Bool swap, int reqlen) - { - __GLXdispatchTexSubImage3DHeader *hdr = - (__GLXdispatchTexSubImage3DHeader *) pc; -@@ -772,7 +781,7 @@ int __glXTexSubImage3DReqSize(GLbyte *pc - } - } - --int __glXConvolutionFilter1DReqSize(GLbyte *pc, Bool swap ) -+int __glXConvolutionFilter1DReqSize(GLbyte *pc, Bool swap, int reqlen) - { - __GLXdispatchConvolutionFilterHeader *hdr = - (__GLXdispatchConvolutionFilterHeader *) pc; -@@ -795,7 +804,7 @@ int __glXConvolutionFilter1DReqSize(GLby - 0, rowLength, 0, 0, alignment ); - } - --int __glXConvolutionFilter2DReqSize(GLbyte *pc, Bool swap ) -+int __glXConvolutionFilter2DReqSize(GLbyte *pc, Bool swap, int reqlen) - { - __GLXdispatchConvolutionFilterHeader *hdr = - (__GLXdispatchConvolutionFilterHeader *) pc; -@@ -841,7 +850,7 @@ int __glXConvolutionParameterfvSize(GLen - return __glXConvolutionParameterivSize(pname); - } - --int __glXConvolutionParameterivReqSize(GLbyte *pc, Bool swap ) -+int __glXConvolutionParameterivReqSize(GLbyte *pc, Bool swap, int reqlen) - { - GLenum pname = *(GLenum *)(pc + 4); - if (swap) { -@@ -850,12 +859,12 @@ int __glXConvolutionParameterivReqSize(G - return 4 * __glXConvolutionParameterivSize( pname ); - } - --int __glXConvolutionParameterfvReqSize(GLbyte *pc, Bool swap ) -+int __glXConvolutionParameterfvReqSize(GLbyte *pc, Bool swap, int reqlen) - { -- return __glXConvolutionParameterivReqSize( pc, swap ); -+ return __glXConvolutionParameterivReqSize( pc, swap, reqlen); - } - --int __glXSeparableFilter2DReqSize(GLbyte *pc, Bool swap ) -+int __glXSeparableFilter2DReqSize(GLbyte *pc, Bool swap, int reqlen) - { - __GLXdispatchConvolutionFilterHeader *hdr = - (__GLXdispatchConvolutionFilterHeader *) pc; -@@ -904,7 +913,7 @@ int __glXColorTableParameterivSize(GLenu - return __glXColorTableParameterfvSize(pname); - } - --int __glXColorTableReqSize(GLbyte *pc, Bool swap ) -+int __glXColorTableReqSize(GLbyte *pc, Bool swap, int reqlen) - { - __GLXdispatchColorTableHeader *hdr = - (__GLXdispatchColorTableHeader *) pc; -@@ -939,7 +948,7 @@ int __glXColorTableReqSize(GLbyte *pc, B - 0, rowLength, 0, 0, alignment ); - } - --int __glXColorSubTableReqSize(GLbyte *pc, Bool swap ) -+int __glXColorSubTableReqSize(GLbyte *pc, Bool swap, int reqlen) - { - __GLXdispatchColorSubTableHeader *hdr = - (__GLXdispatchColorSubTableHeader *) pc; -@@ -962,7 +971,7 @@ int __glXColorSubTableReqSize(GLbyte *pc - 0, rowLength, 0, 0, alignment ); - } - --int __glXColorTableParameterfvReqSize(GLbyte *pc, Bool swap ) -+int __glXColorTableParameterfvReqSize(GLbyte *pc, Bool swap, int reqlen) - { - GLenum pname = *(GLenum *)(pc + 4); - if (swap) { -@@ -971,13 +980,13 @@ int __glXColorTableParameterfvReqSize(GL - return 4 * __glXColorTableParameterfvSize(pname); - } - --int __glXColorTableParameterivReqSize(GLbyte *pc, Bool swap ) -+int __glXColorTableParameterivReqSize(GLbyte *pc, Bool swap, int reqlen) - { - /* no difference between fv and iv versions */ -- return __glXColorTableParameterfvReqSize(pc, swap); -+ return __glXColorTableParameterfvReqSize(pc, swap, reqlen); - } - --int __glXPointParameterfvARBReqSize(GLbyte *pc, Bool swap ) -+int __glXPointParameterfvARBReqSize(GLbyte *pc, Bool swap, int reqlen) - { - GLenum pname = *(GLenum *)(pc + 0); - if (swap) { -@@ -986,8 +995,8 @@ int __glXPointParameterfvARBReqSize(GLby - return 4 * __glPointParameterfvEXT_size( pname ); - } - --int __glXPointParameterivReqSize(GLbyte *pc, Bool swap ) -+int __glXPointParameterivReqSize(GLbyte *pc, Bool swap, int reqlen) - { - /* no difference between fv and iv versions */ -- return __glXPointParameterfvARBReqSize(pc, swap); -+ return __glXPointParameterfvARBReqSize(pc, swap, reqlen); - } diff --git a/debian/patches/1041-nx-X11-lib-font-fc-fserve.c-initialize-remainin.full.patch b/debian/patches/1041-nx-X11-lib-font-fc-fserve.c-initialize-remainin.full.patch deleted file mode 100644 index b22ee9027..000000000 --- a/debian/patches/1041-nx-X11-lib-font-fc-fserve.c-initialize-remainin.full.patch +++ /dev/null @@ -1,30 +0,0 @@ -From b04f11915e29d9563d279e1326f61b50ea414dba Mon Sep 17 00:00:00 2001 -From: Mihai Moldovan <ionic@ionic.de> -Date: Mon, 16 Feb 2015 06:03:48 +0100 -Subject: [PATCH 01/02] nx-X11/lib/font/fc/fserve.c: initialize remaining - bufleft variables. - ---- - nx-X11/lib/font/fc/fserve.c | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - ---- a/nx-X11/lib/font/fc/fserve.c -+++ b/nx-X11/lib/font/fc/fserve.c -@@ -1917,7 +1917,7 @@ fs_read_glyphs(FontPathElementPtr fpe, F - FontInfoPtr pfi = &pfont->info; - fsQueryXBitmaps16Reply *rep; - char *buf; -- long bufleft; /* length of reply left to use */ -+ long bufleft = 0; /* length of reply left to use */ - fsOffset32 *ppbits; - fsOffset32 local_off; - char *off_adr; -@@ -2501,7 +2501,7 @@ fs_read_list_info(FontPathElementPtr fpe - FSBlockedListInfoPtr binfo = (FSBlockedListInfoPtr) blockrec->data; - fsListFontsWithXInfoReply *rep; - char *buf; -- long bufleft; -+ long bufleft = 0; - FSFpePtr conn = (FSFpePtr) fpe->private; - fsPropInfo *pi; - fsPropOffset *po; diff --git a/debian/patches/1042-Do-proper-input-validation-to-fix-for-CVE-2011-.full.patch b/debian/patches/1042-Do-proper-input-validation-to-fix-for-CVE-2011-.full.patch deleted file mode 100644 index 6cf9fad62..000000000 --- a/debian/patches/1042-Do-proper-input-validation-to-fix-for-CVE-2011-.full.patch +++ /dev/null @@ -1,105 +0,0 @@ -From 36368e658a2b83753230af5296978ce27f468d8b Mon Sep 17 00:00:00 2001 -From: Joerg Sonnenberger <joerg@britannica.bec.de> -Date: Sun, 21 Aug 2011 18:51:53 +0200 -Subject: [PATCH 02/02] Do proper input validation to fix for CVE-2011-2895. - -It ensures that all valid input can be decompressed, checks that the -overflow conditions doesn't happen and generally tightens the -validation of the LZW stream and doesn't pessimize the inner loop for -no good reason. It's derived from a change in libarchive from 2004. - -v2: backports to nx-libs 3.6.x (Mihai Moldovan) -v3: fix comment lines starting with "+" + whitespace fixes (Mike Gabriel) -Signed-off-by: Matthieu Herrb <matthieu.herrb@laas.fr> -Reviewed-by: Tomas Hoger <thoger@redhat.com> ---- - nx-X11/lib/font/fontfile/decompress.c | 31 +++++++++++++++++-------------- - 1 file changed, 17 insertions(+), 14 deletions(-) - ---- a/nx-X11/lib/font/fontfile/decompress.c -+++ b/nx-X11/lib/font/fontfile/decompress.c -@@ -99,7 +99,7 @@ static char_type magic_header[] = { "\03 - #define FIRST 257 /* first free entry */ - #define CLEAR 256 /* table clear output code */ - --#define STACK_SIZE 8192 -+#define STACK_SIZE 65300 - - typedef struct _compressedFILE { - BufFilePtr file; -@@ -180,14 +180,12 @@ BufFilePushCompressed (BufFilePtr f) - file->tab_suffix[code] = (char_type) code; - } - file->free_ent = ((file->block_compress) ? FIRST : 256 ); -+ file->oldcode = -1; - file->clear_flg = 0; - file->offset = 0; - file->size = 0; - file->stackp = file->de_stack; - bzero(file->buf, BITS); -- file->finchar = file->oldcode = getcode (file); -- if (file->oldcode != -1) -- *file->stackp++ = file->finchar; - return BufFileCreate ((char *) file, - BufCompressedFill, - 0, -@@ -232,9 +230,6 @@ BufCompressedFill (BufFilePtr f) - if (buf == bufend) - break; - -- if (oldcode == -1) -- break; -- - code = getcode (file); - if (code == -1) - break; -@@ -243,26 +238,34 @@ BufCompressedFill (BufFilePtr f) - for ( code = 255; code >= 0; code-- ) - file->tab_prefix[code] = 0; - file->clear_flg = 1; -- file->free_ent = FIRST - 1; -- if ( (code = getcode (file)) == -1 ) /* O, untimely death! */ -- break; -+ file->free_ent = FIRST; -+ oldcode = -1; -+ continue; - } - incode = code; - /* - * Special case for KwKwK string. - */ - if ( code >= file->free_ent ) { -+ if ( code > file->free_ent || oldcode == -1 ) { -+ /* Bad stream. */ -+ return BUFFILEEOF; -+ } - *stackp++ = finchar; - code = oldcode; - } -- -+ /* -+ * The above condition ensures that code < free_ent. -+ * The construction of tab_prefixof in turn guarantees that -+ * each iteration decreases code and therefore stack usage is -+ * bound by 1 << BITS - 256. -+ */ -+ - /* - * Generate output characters in reverse order - */ - while ( code >= 256 ) - { -- if (stackp - de_stack >= STACK_SIZE - 1) -- return BUFFILEEOF; - *stackp++ = file->tab_suffix[code]; - code = file->tab_prefix[code]; - } -@@ -272,7 +275,7 @@ BufCompressedFill (BufFilePtr f) - /* - * Generate the new entry. - */ -- if ( (code=file->free_ent) < file->maxmaxcode ) { -+ if ( (code=file->free_ent) < file->maxmaxcode && oldcode != -1) { - file->tab_prefix[code] = (unsigned short)oldcode; - file->tab_suffix[code] = finchar; - file->free_ent = code+1; diff --git a/debian/patches/1101-Coverity-844-845-846-Fix-memory-leaks.full.patch b/debian/patches/1101-Coverity-844-845-846-Fix-memory-leaks.full.patch deleted file mode 100644 index 5c1e043a7..000000000 --- a/debian/patches/1101-Coverity-844-845-846-Fix-memory-leaks.full.patch +++ /dev/null @@ -1,58 +0,0 @@ -From d6ce946f9c0bb5746b8333b3f589aa8527739431 Mon Sep 17 00:00:00 2001 -From: Daniel Stone <daniel@fooishbar.org> -Date: Fri, 7 Apr 2006 16:07:50 +0000 -Subject: [PATCH 1/4] Coverity #844, #845, #846: Fix memory leaks. - -v2: backport to nx-libs 3.6.x as a prereq for -the CVE-2015-0255 fix (Mike DePaulo) ---- - nx-X11/programs/Xserver/xkb/xkb.c | 22 +++++++++++++++++++--- - 1 file changed, 19 insertions(+), 3 deletions(-) - ---- a/nx-X11/programs/Xserver/xkb/xkb.c -+++ b/nx-X11/programs/Xserver/xkb/xkb.c -@@ -4794,9 +4794,20 @@ char * wire; - for (i=0;i<req->nProperties;i++) { - char *name,*val; - name= _GetCountedString(&wire,client->swapped); -+ if (!name) -+ return BadAlloc; - val= _GetCountedString(&wire,client->swapped); -- if ((!name)||(!val)||(XkbAddGeomProperty(geom,name,val)==NULL)) -+ if (!val) { -+ xfree(name); -+ return BadAlloc; -+ } -+ if (XkbAddGeomProperty(geom,name,val)==NULL) { -+ xfree(name); -+ xfree(val); - return BadAlloc; -+ } -+ xfree(name); -+ xfree(val); - } - - if (req->nColors<2) { -@@ -4813,15 +4824,20 @@ char * wire; - } - if (req->labelColorNdx==req->baseColorNdx) { - client->errorValue= _XkbErrCode3(0x04,req->baseColorNdx, -- req->labelColorNdx); -+ req->labelColorNdx); - return BadMatch; - } - - for (i=0;i<req->nColors;i++) { - char *name; - name= _GetCountedString(&wire,client->swapped); -- if ((!name)||(!XkbAddGeomColor(geom,name,geom->num_colors))) -+ if (!name) -+ return BadAlloc; -+ if (!XkbAddGeomColor(geom,name,geom->num_colors)) { -+ xfree(name); - return BadAlloc; -+ } -+ xfree(name); - } - if (req->nColors!=geom->num_colors) { - client->errorValue= _XkbErrCode3(0x05,req->nColors,geom->num_colors); diff --git a/debian/patches/1102-include-introduce-byte-counting-functions.full.patch b/debian/patches/1102-include-introduce-byte-counting-functions.full.patch deleted file mode 100644 index 96aee77a2..000000000 --- a/debian/patches/1102-include-introduce-byte-counting-functions.full.patch +++ /dev/null @@ -1,65 +0,0 @@ -From 3937db18a203f9936387286b95328f27013a5ffe Mon Sep 17 00:00:00 2001 -From: Peter Hutterer <peter.hutterer@who-t.net> -Date: Mon, 29 Jun 2009 13:09:57 +1000 -Subject: [PATCH 2/4] include: introduce byte counting functions. - -This patch adds the following three functions: - bits_to_bytes(bits) - the number of bytes needed to hold 'bits' - bytes_to_int32(bytes) - the number of 4-byte units to hold 'bytes' - pad_to_int32(bytes) - the closest multiple of 4 equal to or larger than - 'bytes'. - -All three operations are common in protocol processing and currently the -server has ((foo + 7)/8 + 3)/4 operations all over the place. A common set -of functions reduce the error rate of these (albeit simple) calculations and -improve readability of the code. - -The functions do not check for overflow. - -v2: backport to nx-libs 3.6.x as a prereq for -the CVE-2015-0255 fix (Mike DePaulo) - -Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net> ---- - nx-X11/programs/Xserver/include/misc.h | 30 ++++++++++++++++++++++++++++++ - 1 file changed, 30 insertions(+) - ---- a/nx-X11/programs/Xserver/include/misc.h -+++ b/nx-X11/programs/Xserver/include/misc.h -@@ -193,6 +193,36 @@ typedef struct _xReq *xReqPtr; - - #endif - -+/** -+ * Calculate the number of bytes needed to hold bits. -+ * @param bits The minimum number of bits needed. -+ * @return The number of bytes needed to hold bits. -+ */ -+static __inline__ int -+bits_to_bytes(const int bits) { -+ return ((bits + 7) >> 3); -+} -+/** -+ * Calculate the number of 4-byte units needed to hold the given number of -+ * bytes. -+ * @param bytes The minimum number of bytes needed. -+ * @return The number of 4-byte units needed to hold bytes. -+ */ -+static __inline__ int -+bytes_to_int32(const int bytes) { -+ return (((bytes) + 3) >> 2); -+} -+ -+/** -+ * Calculate the number of bytes (in multiples of 4) needed to hold bytes. -+ * @param bytes The minimum number of bytes needed. -+ * @return The closest multiple of 4 that is equal or higher than bytes. -+ */ -+static __inline__ int -+pad_to_int32(const int bytes) { -+ return (((bytes) + 3) & ~3); -+} -+ - /* some macros to help swap requests, replies, and events */ - - #define LengthRestB(stuff) \ diff --git a/debian/patches/1103-xkb-Don-t-swap-XkbSetGeometry-data-in-the-input.full.patch b/debian/patches/1103-xkb-Don-t-swap-XkbSetGeometry-data-in-the-input.full.patch deleted file mode 100644 index e16e7a7be..000000000 --- a/debian/patches/1103-xkb-Don-t-swap-XkbSetGeometry-data-in-the-input.full.patch +++ /dev/null @@ -1,110 +0,0 @@ -From 9308c79ba2757cb1a64e0040176b8290b435544f Mon Sep 17 00:00:00 2001 -From: Olivier Fourdan <ofourdan@redhat.com> -Date: Fri, 16 Jan 2015 20:08:59 +0100 -Subject: [PATCH 3/4] xkb: Don't swap XkbSetGeometry data in the input buffer - -The XkbSetGeometry request embeds data which needs to be swapped when the -server and the client have different endianess. - -_XkbSetGeometry() invokes functions that swap these data directly in the -input buffer. - -However, ProcXkbSetGeometry() may call _XkbSetGeometry() more than once -(if there is more than one keyboard), thus causing on swapped clients the -same data to be swapped twice in memory, further causing a server crash -because the strings lengths on the second time are way off bounds. - -To allow _XkbSetGeometry() to run reliably more than once with swapped -clients, do not swap the data in the buffer, use variables instead. - -v3: backport to nx-libs 3.6.x as a prereq for -the CVE-2015-0255 fix (Mike DePaulo) - -Signed-off-by: Olivier Fourdan <ofourdan@redhat.com> -Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net> -(cherry picked from commit 81c90dc8f0aae3b65730409b1b615b5fa7280ebd) -(cherry picked from commit 29be310c303914090298ddda93a5bd5d00a94945) -Signed-off-by: Julien Cristau <jcristau@debian.org> -index 2405090..7db0959 100644 ---- - nx-X11/programs/Xserver/xkb/xkb.c | 35 +++++++++++++++++++---------------- - 1 file changed, 19 insertions(+), 16 deletions(-) - ---- a/nx-X11/programs/Xserver/xkb/xkb.c -+++ b/nx-X11/programs/Xserver/xkb/xkb.c -@@ -4441,15 +4441,14 @@ static char * - _GetCountedString(char **wire_inout,Bool swap) - { - char * wire,*str; --CARD16 len,*plen; -+CARD16 len; - - wire= *wire_inout; -- plen= (CARD16 *)wire; -+ len= (CARD16 *)wire; - if (swap) { - register int n; -- swaps(plen,n); -+ swaps(&len, n); - } -- len= *plen; - str= (char *)_XkbAlloc(len+1); - if (str) { - memcpy(str,&wire[2],len); -@@ -4468,26 +4467,29 @@ _CheckSetDoodad( char ** wire_inout, - { - char * wire; - xkbDoodadWireDesc * dWire; -+xkbAnyDoodadWireDesc any; -+xkbTextDoodadWireDesc text; - XkbDoodadPtr doodad; - - dWire= (xkbDoodadWireDesc *)(*wire_inout); -+ any = dWire->any; - wire= (char *)&dWire[1]; - if (client->swapped) { - register int n; -- swapl(&dWire->any.name,n); -- swaps(&dWire->any.top,n); -- swaps(&dWire->any.left,n); -- swaps(&dWire->any.angle,n); -+ swapl(&any.name, n); -+ swaps(&any.top, n); -+ swaps(&any.left, n); -+ swaps(&any.angle, n); - } - CHK_ATOM_ONLY(dWire->any.name); -- doodad= XkbAddGeomDoodad(geom,section,dWire->any.name); -+ doodad = XkbAddGeomDoodad(geom, section, any.name); - if (!doodad) - return BadAlloc; - doodad->any.type= dWire->any.type; - doodad->any.priority= dWire->any.priority; -- doodad->any.top= dWire->any.top; -- doodad->any.left= dWire->any.left; -- doodad->any.angle= dWire->any.angle; -+ doodad->any.top = any.top; -+ doodad->any.left = any.left; -+ doodad->any.angle = any.angle; - switch (doodad->any.type) { - case XkbOutlineDoodad: - case XkbSolidDoodad: -@@ -4510,13 +4512,14 @@ XkbDoodadPtr doodad; - dWire->text.colorNdx); - return BadMatch; - } -+ text = dWire->text; - if (client->swapped) { - register int n; -- swaps(&dWire->text.width,n); -- swaps(&dWire->text.height,n); -+ swaps(&text.width, n); -+ swaps(&text.height, n); - } -- doodad->text.width= dWire->text.width; -- doodad->text.height= dWire->text.height; -+ doodad->text.width= text.width; -+ doodad->text.height= text.height; - doodad->text.color_ndx= dWire->text.colorNdx; - doodad->text.text= _GetCountedString(&wire,client->swapped); - doodad->text.font= _GetCountedString(&wire,client->swapped); diff --git a/debian/patches/1104-xkb-Check-strings-length-against-request-size.full.patch b/debian/patches/1104-xkb-Check-strings-length-against-request-size.full.patch deleted file mode 100644 index 79f27ab8d..000000000 --- a/debian/patches/1104-xkb-Check-strings-length-against-request-size.full.patch +++ /dev/null @@ -1,143 +0,0 @@ -From d7258444a876a65986212c10ddcaa1783af558bf Mon Sep 17 00:00:00 2001 -From: Olivier Fourdan <ofourdan@redhat.com> -Date: Fri, 16 Jan 2015 08:44:45 +0100 -Subject: [PATCH 4/4] xkb: Check strings length against request size - -Ensure that the given strings length in an XkbSetGeometry request remain -within the limits of the size of the request. - -v3: backport to nx-libs 3.6.x because this is -the CVE-2015-0255 fix (Mike DePaulo) - -Signed-off-by: Olivier Fourdan <ofourdan@redhat.com> -Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net> -Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net> -(cherry picked from commit 20079c36cf7d377938ca5478447d8b9045cb7d43) -(cherry picked from commit f160e722672dbb2b5215870b47bcc51461d96ff1) -Signed-off-by: Julien Cristau <jcristau@debian.org> ---- - nx-X11/programs/Xserver/xkb/xkb.c | 66 ++++++++++++++++++++++++--------------- - 1 file changed, 41 insertions(+), 25 deletions(-) - ---- a/nx-X11/programs/Xserver/xkb/xkb.c -+++ b/nx-X11/programs/Xserver/xkb/xkb.c -@@ -4437,26 +4437,30 @@ ProcXkbGetGeometry(ClientPtr client) - - /***====================================================================***/ - --static char * --_GetCountedString(char **wire_inout,Bool swap) -+static Status -+_GetCountedString(char **wire_inout, ClientPtr client, char **str) - { --char * wire,*str; -+char * wire, *next; - CARD16 len; - - wire= *wire_inout; - len= (CARD16 *)wire; -- if (swap) { -+ if (client->swapped) { - register int n; - swaps(&len, n); - } -- str= (char *)_XkbAlloc(len+1); -- if (str) { -- memcpy(str,&wire[2],len); -- str[len]= '\0'; -- } -- wire+= XkbPaddedSize(len+2); -- *wire_inout= wire; -- return str; -+ next = wire + XkbPaddedSize(len + 2); -+ /* Check we're still within the size of the request */ -+ if (client->req_len < -+ bytes_to_int32(next - (char *) client->requestBuffer)) -+ return BadValue; -+ *str = malloc(len + 1); -+ if (!*str) -+ return BadAlloc; -+ memcpy(*str, &wire[2], len); -+ *(*str + len) = '\0'; -+ *wire_inout = next; -+ return Success; - } - - static Status -@@ -4470,6 +4474,7 @@ xkbDoodadWireDesc * dWire; - xkbAnyDoodadWireDesc any; - xkbTextDoodadWireDesc text; - XkbDoodadPtr doodad; -+Status status; - - dWire= (xkbDoodadWireDesc *)(*wire_inout); - any = dWire->any; -@@ -4521,8 +4526,14 @@ XkbDoodadPtr doodad; - doodad->text.width= text.width; - doodad->text.height= text.height; - doodad->text.color_ndx= dWire->text.colorNdx; -- doodad->text.text= _GetCountedString(&wire,client->swapped); -- doodad->text.font= _GetCountedString(&wire,client->swapped); -+ status = _GetCountedString(&wire, client, &doodad->text.text); -+ if (status != Success) -+ return status; -+ status = _GetCountedString(&wire, client, &doodad->text.font); -+ if (status != Success) { -+ free (doodad->text.text); -+ return status; -+ } - break; - case XkbIndicatorDoodad: - if (dWire->indicator.onColorNdx>=geom->num_colors) { -@@ -4557,7 +4568,9 @@ XkbDoodadPtr doodad; - } - doodad->logo.color_ndx= dWire->logo.colorNdx; - doodad->logo.shape_ndx= dWire->logo.shapeNdx; -- doodad->logo.logo_name= _GetCountedString(&wire,client->swapped); -+ status = _GetCountedString(&wire, client, &doodad->logo.logo_name); -+ if (status != Success) -+ return status; - break; - default: - client->errorValue= _XkbErrCode2(0x4F,dWire->any.type); -@@ -4792,17 +4805,19 @@ Status status; - char * wire; - - wire= (char *)&req[1]; -- geom->label_font= _GetCountedString(&wire,client->swapped); -+ status = _GetCountedString(&wire, client, &geom->label_font); -+ if (status != Success) -+ return status; - - for (i=0;i<req->nProperties;i++) { - char *name,*val; -- name= _GetCountedString(&wire,client->swapped); -- if (!name) -- return BadAlloc; -- val= _GetCountedString(&wire,client->swapped); -- if (!val) { -+ status = _GetCountedString(&wire, client, &name); -+ if (status != Success) -+ return status; -+ status = _GetCountedString(&wire, client, &val); -+ if (status != Success) { - xfree(name); -- return BadAlloc; -+ return status; - } - if (XkbAddGeomProperty(geom,name,val)==NULL) { - xfree(name); -@@ -4833,9 +4848,10 @@ char * wire; - - for (i=0;i<req->nColors;i++) { - char *name; -- name= _GetCountedString(&wire,client->swapped); -- if (!name) -- return BadAlloc; -+ -+ status = _GetCountedString(&wire, client, &name); -+ if (status != Success) -+ return status; - if (!XkbAddGeomColor(geom,name,geom->num_colors)) { - xfree(name); - return BadAlloc; diff --git a/debian/patches/1200-CVE-2013-7439-MakeBigReq-don-t-move-the-last-wo.full.patch b/debian/patches/1200-CVE-2013-7439-MakeBigReq-don-t-move-the-last-wo.full.patch deleted file mode 100644 index 6613d80d2..000000000 --- a/debian/patches/1200-CVE-2013-7439-MakeBigReq-don-t-move-the-last-wo.full.patch +++ /dev/null @@ -1,77 +0,0 @@ -commit ac9fbaabd6bdbca6dd1d94fa385aea41fdebf2c1 -Author: Karl Tomlinson <xmail@karlt.net> -Date: Wed Apr 15 10:16:18 2015 +0200 - - MakeBigReq: don't move the last word, already handled by Data32 (X.Org CVE-2013-7439). - - MakeBigReq inserts a length field after the first 4 bytes of the request - (after req->length), pushing everything else back by 4 bytes. - - The current memmove moves everything but the first 4 bytes back. If a - request aligns to the end of the buffer pointer when MakeBigReq is - invoked for that request, this runs over the buffer. Instead, we need to - memmove minus the first 4 bytes (which aren't moved), minus the last 4 - bytes (so we still align to the previous tail). - - The 4 bytes that fell out are already handled with Data32, which will - handle the buffermax correctly. - - The case where req->length = 1 was already not functional. - - Reported by Abhishek Arya <inferno@chromium.org> (against X.Org BTS). - - https://bugzilla.mozilla.org/show_bug.cgi?id=803762 - - Reviewed-by: Jeff Muizelaar <jmuizelaar@mozilla.com> - Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net> - Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com> - Rebased-for-NX: Mike Gabriel <mike.gabriel@das-netzwerkteam.de> - ---- a/nx-X11/lib/X11/Xlibint.h -+++ b/nx-X11/lib/X11/Xlibint.h -@@ -561,6 +561,14 @@ extern LockInfoPtr _Xglobal_lock; - dpy->request++ - #endif - -+/* -+ * MakeBigReq sets the CARD16 "req->length" to 0 and inserts a new CARD32 -+ * length, after req->length, before the data in the request. The new length -+ * includes the "n" extra 32-bit words. -+ * -+ * Do not use MakeBigReq if there is no data already in the request. -+ * req->length must already be >= 2. -+ */ - #ifdef WORD64 - #define MakeBigReq(req,n) \ - { \ -@@ -580,7 +588,7 @@ extern LockInfoPtr _Xglobal_lock; - CARD32 _BRlen = req->length - 1; \ - req->length = 0; \ - _BRdat = ((CARD32 *)req)[_BRlen]; \ -- memmove(((char *)req) + 8, ((char *)req) + 4, _BRlen << 2); \ -+ memmove(((char *)req) + 8, ((char *)req) + 4, (_BRlen - 1) << 2); \ - ((CARD32 *)req)[1] = _BRlen + n + 2; \ - Data32(dpy, &_BRdat, 4); \ - } -@@ -591,13 +599,20 @@ extern LockInfoPtr _Xglobal_lock; - CARD32 _BRlen = req->length - 1; \ - req->length = 0; \ - _BRdat = ((CARD32 *)req)[_BRlen]; \ -- memmove(((char *)req) + 8, ((char *)req) + 4, _BRlen << 2); \ -+ memmove(((char *)req) + 8, ((char *)req) + 4, (_BRlen - 1) << 2); \ - ((CARD32 *)req)[1] = _BRlen + n + 2; \ - Data32(dpy, &_BRdat, 4); \ - } - #endif - #endif - -+/* -+ * SetReqLen increases the count of 32-bit words in the request by "n", -+ * or by "badlen" if "n" is too large. -+ * -+ * Do not use SetReqLen if "req" does not already have data after the -+ * xReq header. req->length must already be >= 2. -+ */ - #define SetReqLen(req,n,badlen) \ - if ((req->length + n) > (unsigned)65535) { \ - if (dpy->bigreq_size) { \ diff --git a/debian/patches/1210-CVE-2015-3418-dix-Allow-zero-height-PutImage-re.full.patch b/debian/patches/1210-CVE-2015-3418-dix-Allow-zero-height-PutImage-re.full.patch deleted file mode 100644 index e0bb00694..000000000 --- a/debian/patches/1210-CVE-2015-3418-dix-Allow-zero-height-PutImage-re.full.patch +++ /dev/null @@ -1,41 +0,0 @@ -commit dba779d9f99ab2fc6bf05c78515dbdd82840cadd -Author: Keith Packard <keithp@keithp.com> -Date: Fri May 1 13:09:24 2015 +0200 - - dix: Allow zero-height PutImage requests (fix for X.Org's CVE-2015-3418). - - The length checking code validates PutImage height and byte width by - making sure that byte-width >= INT32_MAX / height. If height is zero, - this generates a divide by zero exception. Allow zero height requests - explicitly, bypassing the INT32_MAX check. - - Fix for regression introduced by fix for CVE-2014-8092. - - v2: backports to nx-libs 3.6.x (Mike Gabriel) - v3: port to NXdispatch.c rather than dispatch.c (Mike DePaulo) - v4: backport v3 to nx-libs 3.5.0.x (Mihai Moldovan) - - Signed-off-by: Keith Packard <keithp@keithp.com> - ---- a/nx-X11/programs/Xserver/dix/dispatch.c -+++ b/nx-X11/programs/Xserver/dix/dispatch.c -@@ -2071,7 +2071,7 @@ ProcPutImage(register ClientPtr client) - - tmpImage = (char *)&stuff[1]; - lengthProto = length; -- if (lengthProto >= (INT32_MAX / stuff->height)) -+ if (stuff->height != 0 && lengthProto >= (INT32_MAX / stuff->height)) - return BadLength; - - if (((((lengthProto * stuff->height) + (unsigned)3) >> 2) + ---- a/nx-X11/programs/Xserver/hw/nxagent/NXdispatch.c -+++ b/nx-X11/programs/Xserver/hw/nxagent/NXdispatch.c -@@ -2630,7 +2630,7 @@ ProcPutImage(client) - - tmpImage = (char *)&stuff[1]; - lengthProto = length; -- if (lengthProto >= (INT32_MAX / stuff->height)) -+ if (stuff->height != 0 && lengthProto >= (INT32_MAX / stuff->height)) - return BadLength; - - if (((((lengthProto * stuff->height) + (unsigned)3) >> 2) + diff --git a/debian/patches/1250_nx-X11_Bug-51375-Xorg-doesn_t-set-status-for-RR.full.patch b/debian/patches/1250_nx-X11_Bug-51375-Xorg-doesn_t-set-status-for-RR.full.patch deleted file mode 100644 index 08d51bb7e..000000000 --- a/debian/patches/1250_nx-X11_Bug-51375-Xorg-doesn_t-set-status-for-RR.full.patch +++ /dev/null @@ -1,28 +0,0 @@ -commit 8fd0b52f20e28759a88e1202716f60e773b11dd3 -Author: Jaroslav Å mÃd <jardasmid@gmail.com> -Date: Mon Jul 9 19:12:42 2012 -0700 - - Backport: Bug 51375: Xorg doesn't set status for RRGetOutputInfo - - https://bugs.freedesktop.org/show_bug.cgi?id=51375 - https://bugs.freedesktop.org/attachment.cgi?id=63397 - - Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com> - Reviewed-by: Keith Packard <keithp@keithp.com> - Tested-by: Daniel Stone <daniel@fooishbar.org> - - Backported from Arctica GH 3.6.x branch. - - v2: backport to nx-libs 3.6.x (Ulrich Sibiller) - v3: backport to nx-libs 3.5.0.x (Mihai Moldovan) - ---- a/nx-X11/programs/Xserver/randr/rroutput.c -+++ b/nx-X11/programs/Xserver/randr/rroutput.c -@@ -456,6 +456,7 @@ ProcRRGetOutputInfo (ClientPtr client) - pScrPriv = rrGetScrPriv(pScreen); - - rep.type = X_Reply; -+ rep.status = RRSetConfigSuccess; - rep.sequenceNumber = client->sequence; - rep.length = OutputInfoExtra >> 2; - rep.timestamp = pScrPriv->lastSetTime.milliseconds; diff --git a/debian/patches/1251_nx-X11_Drop-a-reference-to-user-mode-after-crea.full.patch b/debian/patches/1251_nx-X11_Drop-a-reference-to-user-mode-after-crea.full.patch deleted file mode 100644 index fe031854f..000000000 --- a/debian/patches/1251_nx-X11_Drop-a-reference-to-user-mode-after-crea.full.patch +++ /dev/null @@ -1,26 +0,0 @@ -commit f45476100e7d70a51a1513f4d7737addca737bd6 -Author: Keith Packard <keithp@keithp.com> -Date: Wed Sep 10 13:11:09 2008 +0800 - - Backport: Drop a reference to user mode after create - - User mode has no customer when create until assigned - to some output. - - Backported from Arctica GH 3.6.x branch. - - v2: backport to nx-libs 3.6.x (Ulrich Sibiller) - v3: backport to nx-libs 3.5.0.x (Mihai Moldovan) - ---- a/nx-X11/programs/Xserver/randr/rrmode.c -+++ b/nx-X11/programs/Xserver/randr/rrmode.c -@@ -342,7 +342,8 @@ ProcRRCreateMode (ClientPtr client) - swapl(&rep.mode, n); - } - WriteToClient(client, sizeof(xRRCreateModeReply), (char *)&rep); -- -+ /* Drop out reference to this mode */ -+ RRModeDestroy (mode); - return client->noClientException; - } - diff --git a/debian/patches/1252_nx-X11_Free-randr-crtc-and-output-pointer-array.full.patch b/debian/patches/1252_nx-X11_Free-randr-crtc-and-output-pointer-array.full.patch deleted file mode 100644 index 14b08600f..000000000 --- a/debian/patches/1252_nx-X11_Free-randr-crtc-and-output-pointer-array.full.patch +++ /dev/null @@ -1,28 +0,0 @@ -commit 2aeb7671963932d5ddb771ad641969e20bb9aa25 -Author: Keith Packard <keithp@keithp.com> -Date: Thu Sep 17 18:14:37 2009 -0700 - - Backport: Free randr crtc and output pointer arrays - - All of the crts and outputs were freed, but not the arrays full of - pointers to them. - - Signed-off-by: Keith Packard <keithp@keithp.com> - Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net> - - Backported from Arctica GH 3.6.x branch. - - v2: backport to nx-libs 3.6.x (Ulrich Sibiller) - v3: backport to nx-libs 3.5.0.x (Mihai Moldovan) - ---- a/nx-X11/programs/Xserver/randr/randr.c -+++ b/nx-X11/programs/Xserver/randr/randr.c -@@ -125,6 +125,8 @@ RRCloseScreen (int i, ScreenPtr pScreen) - for (j = pScrPriv->numOutputs - 1; j >= 0; j--) - RROutputDestroy (pScrPriv->outputs[j]); - -+ xfree (pScrPriv->crtcs); -+ xfree (pScrPriv->outputs); - xfree (pScrPriv); - RRNScreens -= 1; /* ok, one fewer screen with RandR running */ - return (*pScreen->CloseScreen) (i, pScreen); diff --git a/debian/patches/1253_nx-X11_randr-check-for-virtual-size-limits-befo.full.patch b/debian/patches/1253_nx-X11_randr-check-for-virtual-size-limits-befo.full.patch deleted file mode 100644 index 7bcea7376..000000000 --- a/debian/patches/1253_nx-X11_randr-check-for-virtual-size-limits-befo.full.patch +++ /dev/null @@ -1,39 +0,0 @@ -commit da678db0ef57c45f1bbe1c0e8f14da70746ed2cd -Author: Tiago Vignatti <tiago.vignatti@nokia.com> -Date: Fri Dec 17 16:09:35 2010 +0200 - - Backport: randr: check for virtual size limits before set crtc - - Return a error if the screen is configured to an invalid size. - - Signed-off-by: Tiago Vignatti <tiago.vignatti@nokia.com> - Reviewed-by: Adam Jackson <ajax@redhat.com> - Reviewed-by: Daniel Stone <daniel@fooishbar.org> - Signed-off-by: Keith Packard <keithp@keithp.com> - - Backported from Arctica GH 3.6.x branch. - - v2: backport to nx-libs 3.6.x (Ulrich Sibiller) - v3: backport to nx-libs 3.5.0.x (Mihai Moldovan) - ---- a/nx-X11/programs/Xserver/randr/rrscreen.c -+++ b/nx-X11/programs/Xserver/randr/rrscreen.c -@@ -938,6 +938,18 @@ ProcRRSetScreenConfig (ClientPtr client) - width = mode->mode.height; - height = mode->mode.width; - } -+ -+ if (width < pScrPriv->minWidth || pScrPriv->maxWidth < width) { -+ client->errorValue = width; -+ free(pData); -+ return BadValue; -+ } -+ if (height < pScrPriv->minHeight || pScrPriv->maxHeight < height) { -+ client->errorValue = height; -+ free(pData); -+ return BadValue; -+ } -+ - if (width != pScreen->width || height != pScreen->height) - { - int c; diff --git a/debian/patches/1254_nx-X11_randr-fix-server-crash-in-RRGetScreenInf.full.patch b/debian/patches/1254_nx-X11_randr-fix-server-crash-in-RRGetScreenInf.full.patch deleted file mode 100644 index 8c25d61aa..000000000 --- a/debian/patches/1254_nx-X11_randr-fix-server-crash-in-RRGetScreenInf.full.patch +++ /dev/null @@ -1,34 +0,0 @@ -commit faddfbec6ff331c3859e2f57040da4a8cf072baa -Author: Julien Cristau <jcristau@debian.org> -Date: Fri May 22 09:54:38 2009 +0200 - - Backport: randr: fix server crash in RRGetScreenInfo - - We don't return rates to randr < 1.1 clients, so don't allocate space - for them. This fixes a FatalError due to not all allocated space being - used. - - X.Org bug#21861 <http://bugs.freedesktop.org/show_bug.cgi?id=21861> - - Reported-by: Guillaume Quintin <coincoin169g@gmail.com> - Signed-off-by: Julien Cristau <jcristau@debian.org> - - Backported from Arctica GH 3.6.x branch. - - v2: backport to nx-libs 3.6.x (Ulrich Sibiller) - v3: backport to nx-libs 3.5.0.x (Mihai Moldovan) - ---- a/nx-X11/programs/Xserver/randr/rrscreen.c -+++ b/nx-X11/programs/Xserver/randr/rrscreen.c -@@ -677,8 +677,9 @@ ProcRRGetScreenInfo (ClientPtr client) - rep.sizeID = pData->size; - rep.rate = pData->refresh; - -- extraLen = (rep.nSizes * sizeof (xScreenSizes) + -- rep.nrateEnts * sizeof (CARD16)); -+ extraLen = rep.nSizes * sizeof (xScreenSizes); -+ if (has_rate) -+ extraLen += rep.nrateEnts * sizeof (CARD16); - - if (extraLen) - { diff --git a/debian/patches/1255_nx-X11_RRModeCreate-plug-memory-leak-of-newMode.full.patch b/debian/patches/1255_nx-X11_RRModeCreate-plug-memory-leak-of-newMode.full.patch deleted file mode 100644 index 11b4579f8..000000000 --- a/debian/patches/1255_nx-X11_RRModeCreate-plug-memory-leak-of-newMode.full.patch +++ /dev/null @@ -1,40 +0,0 @@ -commit 0fc419314b3bbafa873207dafa57ce92b4b9e1e1 -Author: Alan Coopersmith <alan.coopersmith@oracle.com> -Date: Sat Jul 14 11:21:15 2012 -0700 - - Backport: RRModeCreate: plug memory leak of newModes if AddResource fails - - Reported by parfait 1.0: - - Error: Memory leak (CWE 401) - Memory leak of pointer 'newModes' allocated with realloc(((char*)modes), ((num_modes + 1) * 8)) - at line 93 of randr/rrmode.c in function 'RRModeCreate'. - pointer allocated at line 82 with realloc(((char*)modes), ((num_modes + 1) * 8)). - Error: Memory leak (CWE 401) - Memory leak of pointer 'newModes' allocated with malloc(8) - at line 93 of randr/rrmode.c in function 'RRModeCreate'. - pointer allocated at line 84 with malloc(8). - - Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com> - Reviewed-by: Keith Packard <keithp@keithp.com> - - Backported from Arctica GH 3.6.x branch. - - v2: backport to nx-libs 3.6.x (Ulrich Sibiller) - v3: backport to nx-libs 3.5.0.x (Mihai Moldovan) - ---- a/nx-X11/programs/Xserver/randr/rrmode.c -+++ b/nx-X11/programs/Xserver/randr/rrmode.c -@@ -98,8 +98,10 @@ RRModeCreate (xRRModeInfo *modeInfo, - } - - mode->mode.id = FakeClientID(0); -- if (!AddResource (mode->mode.id, RRModeType, (pointer) mode)) -- return NULL; -+ if (!AddResource(mode->mode.id, RRModeType, (pointer) mode)) { -+ free(newModes); -+ return NULL; -+ } - modes = newModes; - modes[num_modes++] = mode; - diff --git a/debian/patches/1256_nx-X11_ProcRRGetScreenInfo-swap-configTimestamp.full.patch b/debian/patches/1256_nx-X11_ProcRRGetScreenInfo-swap-configTimestamp.full.patch deleted file mode 100644 index d4472f66e..000000000 --- a/debian/patches/1256_nx-X11_ProcRRGetScreenInfo-swap-configTimestamp.full.patch +++ /dev/null @@ -1,25 +0,0 @@ -commit bd5754f94a9b48c246d115eaed0d0e8bece95aca -Author: Alan Coopersmith <alan.coopersmith@oracle.com> -Date: Mon Jul 9 19:12:42 2012 -0700 - - Backport: ProcRRGetScreenInfo: swap configTimestamp as well - - Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com> - Reviewed-by: Keith Packard <keithp@keithp.com> - Tested-by: Daniel Stone <daniel@fooishbar.org> - - Backported from Arctica GH 3.6.x branch. - - v2: backport to nx-libs 3.6.x (Ulrich Sibiller) - v3: backport to nx-libs 3.5.0.x (Mihai Moldovan) - ---- a/nx-X11/programs/Xserver/randr/rrscreen.c -+++ b/nx-X11/programs/Xserver/randr/rrscreen.c -@@ -745,6 +745,7 @@ ProcRRGetScreenInfo (ClientPtr client) - swaps(&rep.sequenceNumber, n); - swapl(&rep.length, n); - swapl(&rep.timestamp, n); -+ swapl(&rep.configTimestamp, n); - swaps(&rep.rotation, n); - swaps(&rep.nSizes, n); - swaps(&rep.sizeID, n); diff --git a/debian/patches/1257_nx-X11_randr-Fix-REQUEST-vs-REQUEST_SIZE_MATCH-.full.patch b/debian/patches/1257_nx-X11_randr-Fix-REQUEST-vs-REQUEST_SIZE_MATCH-.full.patch deleted file mode 100644 index 942056fec..000000000 --- a/debian/patches/1257_nx-X11_randr-Fix-REQUEST-vs-REQUEST_SIZE_MATCH-.full.patch +++ /dev/null @@ -1,31 +0,0 @@ -commit 9e2ac01a4e9bd39e5127b35bc263d5544c6de7a2 -Author: Aaron Plattner <aplattner@nvidia.com> -Date: Fri Jun 29 13:33:58 2012 -0700 - - Backport: randr: Fix REQUEST vs. REQUEST_SIZE_MATCH mismatch - - ProcRRGetScreenSizeRange uses REQUEST(xRRGetScreenSizeRangeReq) followed by - REQUEST_SIZE_MATCH(xRRGetScreenInfoReq). This happens to work out because both - requests have the same size, so this is not a functional change, just a cosmetic - one. - - Signed-off-by: Aaron Plattner <aplattner@nvidia.com> - Reviewed-by: Alan Coopersmith <alan.coopersmith@oracle.com> - Signed-off-by: Keith Packard <keithp@keithp.com> - - Backported from Arctica GH 3.6.x branch. - - v2: backport to nx-libs 3.6.x (Ulrich Sibiller) - v3: backport to nx-libs 3.5.0.x (Mihai Moldovan) - ---- a/nx-X11/programs/Xserver/randr/rrscreen.c -+++ b/nx-X11/programs/Xserver/randr/rrscreen.c -@@ -228,7 +228,7 @@ ProcRRGetScreenSizeRange (ClientPtr clie - rrScrPrivPtr pScrPriv; - int rc; - -- REQUEST_SIZE_MATCH(xRRGetScreenInfoReq); -+ REQUEST_SIZE_MATCH(xRRGetScreenSizeRangeReq); - #ifndef NXAGENT_SERVER - rc = dixLookupWindow(&pWin, stuff->window, client, DixReadAccess); - #else diff --git a/debian/patches/1258_nx-X11_randr-Clean-up-compiler-warnings-about-u.full.patch b/debian/patches/1258_nx-X11_randr-Clean-up-compiler-warnings-about-u.full.patch deleted file mode 100644 index 78e1e702b..000000000 --- a/debian/patches/1258_nx-X11_randr-Clean-up-compiler-warnings-about-u.full.patch +++ /dev/null @@ -1,111 +0,0 @@ -commit 9dbd74793f4b125d56e3d0f63a845b5f7550d3b4 -Author: Keith Packard <keithp@keithp.com> -Date: Thu Jun 21 18:42:46 2012 -0700 - - Backport: randr: Clean up compiler warnings about unused and shadowing variables - - set but not used variables - shadowing a previous local - - A hidden problem was that the VERIFY_RR_* macros define local 'rc' - variables, any other local definitions for those would be shadowed and - generate warnings from gcc. I've renamed the other locals 'ret' - instead of 'rc'. - - Signed-off-by: Keith Packard <keithp@keithp.com> - - Backported from Arctica GH 3.6.x branch. - - v2: backport to nx-libs 3.6.x (Ulrich Sibiller) - v3: backport to nx-libs 3.5.0.x (Mihai Moldovan) - ---- a/nx-X11/programs/Xserver/randr/rrcrtc.c -+++ b/nx-X11/programs/Xserver/randr/rrcrtc.c -@@ -642,7 +642,6 @@ ProcRRSetCrtcConfig (ClientPtr client) - int numOutputs; - RROutputPtr *outputs = NULL; - RROutput *outputIds; -- TimeStamp configTime; - TimeStamp time; - Rotation rotation; - int i, j; -@@ -745,7 +744,6 @@ ProcRRSetCrtcConfig (ClientPtr client) - pScrPriv = rrGetScrPriv(pScreen); - - time = ClientTimeToServerTime(stuff->timestamp); -- configTime = ClientTimeToServerTime(stuff->configTimestamp); - - if (!pScrPriv) - { -@@ -754,19 +752,6 @@ ProcRRSetCrtcConfig (ClientPtr client) - goto sendReply; - } - --#if 0 -- /* -- * if the client's config timestamp is not the same as the last config -- * timestamp, then the config information isn't up-to-date and -- * can't even be validated -- */ -- if (CompareTimeStamps (configTime, pScrPriv->lastConfigTime) != 0) -- { -- rep.status = RRSetConfigInvalidConfigTime; -- goto sendReply; -- } --#endif -- - /* - * Validate requested rotation - */ ---- a/nx-X11/programs/Xserver/randr/rrinfo.c -+++ b/nx-X11/programs/Xserver/randr/rrinfo.c -@@ -83,6 +83,7 @@ RRScanOldConfig (ScreenPtr pScreen, Rota - int i; - CARD16 minWidth = MAXSHORT, minHeight = MAXSHORT; - CARD16 maxWidth = 0, maxHeight = 0; -+ CARD16 width, height; - - /* - * First time through, create a crtc and output and hook -@@ -153,11 +154,11 @@ RRScanOldConfig (ScreenPtr pScreen, Rota - /* find size bounds */ - for (i = 0; i < output->numModes + output->numUserModes; i++) - { -- RRModePtr mode = (i < output->numModes ? -+ mode = (i < output->numModes ? - output->modes[i] : - output->userModes[i-output->numModes]); -- CARD16 width = mode->mode.width; -- CARD16 height = mode->mode.height; -+ width = mode->mode.width; -+ height = mode->mode.height; - - if (width < minWidth) minWidth = width; - if (width > maxWidth) maxWidth = width; ---- a/nx-X11/programs/Xserver/randr/rrmode.c -+++ b/nx-X11/programs/Xserver/randr/rrmode.c -@@ -194,7 +194,7 @@ RRModesForScreen (ScreenPtr pScreen, int - for (o = 0; o < pScrPriv->numOutputs; o++) - { - RROutputPtr output = pScrPriv->outputs[o]; -- int m, n; -+ int n; - - for (m = 0; m < output->numModes + output->numUserModes; m++) - { -@@ -299,7 +299,6 @@ ProcRRCreateMode (ClientPtr client) - xRRCreateModeReply rep; - WindowPtr pWin; - ScreenPtr pScreen; -- rrScrPrivPtr pScrPriv; - xRRModeInfo *modeInfo; - long units_after; - char *name; -@@ -317,7 +316,6 @@ ProcRRCreateMode (ClientPtr client) - return rc; - - pScreen = pWin->drawable.pScreen; -- pScrPriv = rrGetScrPriv(pScreen); - - modeInfo = &stuff->modeInfo; - name = (char *) (stuff + 1); diff --git a/debian/patches/1259_nx-X11_Make-RANDR-_set_-timestamps-follow-clien.full.patch b/debian/patches/1259_nx-X11_Make-RANDR-_set_-timestamps-follow-clien.full.patch deleted file mode 100644 index a17d29335..000000000 --- a/debian/patches/1259_nx-X11_Make-RANDR-_set_-timestamps-follow-clien.full.patch +++ /dev/null @@ -1,62 +0,0 @@ -commit cf660f485eb478bcb7aaef3a538f2791e46662d9 -Author: Keith Packard <keithp@keithp.com> -Date: Thu May 28 14:43:27 2009 -0700 - - Backport: Make RANDR 'set' timestamps follow client specified time. Bug 21987. - - The lastSetTime value which indicates when the configuration within the - server was last changed was not getting set in the appropriate RandR - requests. - - Signed-off-by: Keith Packard <keithp@keithp.com> - - Backported from Arctica GH 3.6.x branch. - - v2: backport to nx-libs 3.6.x (Ulrich Sibiller) - v3: backport to nx-libs 3.5.0.x (Mihai Moldovan) - ---- a/nx-X11/programs/Xserver/randr/rrcrtc.c -+++ b/nx-X11/programs/Xserver/randr/rrcrtc.c -@@ -838,10 +838,8 @@ ProcRRSetCrtcConfig (ClientPtr client) - rep.status = RRSetConfigFailed; - goto sendReply; - } -- #ifdef NXAGENT_SERVER /* Bug 21987 */ -- pScrPriv->lastSetTime = time; -- #endif - rep.status = RRSetConfigSuccess; -+ pScrPriv->lastSetTime = time; - - sendReply: - if (outputs) -@@ -851,11 +849,7 @@ sendReply: - /* rep.status has already been filled in */ - rep.length = 0; - rep.sequenceNumber = client->sequence; -- #ifndef NXAGENT_SERVER /* Bug 21987 */ -- rep.newTimestamp = pScrPriv->lastConfigTime.milliseconds; -- #else - rep.newTimestamp = pScrPriv->lastSetTime.milliseconds; -- #endif - - if (client->swapped) - { ---- a/nx-X11/programs/Xserver/randr/rrscreen.c -+++ b/nx-X11/programs/Xserver/randr/rrscreen.c -@@ -977,15 +977,10 @@ ProcRRSetScreenConfig (ClientPtr client) - - if (!RRCrtcSet (crtc, mode, 0, 0, stuff->rotation, 1, &output)) - rep.status = RRSetConfigFailed; -- #ifndef NXAGENT_SERVER /* Bug 21987 */ -- else -- rep.status = RRSetConfigSuccess; -- #else - else { -- rep.status = RRSetConfigSuccess; - pScrPriv->lastSetTime = time; -+ rep.status = RRSetConfigSuccess; - } -- #endif - - /* - * XXX Configure other crtcs to mirror as much as possible diff --git a/debian/patches/1260_nx-X11_xserver-Avoid-sending-uninitialized-padd.full.patch b/debian/patches/1260_nx-X11_xserver-Avoid-sending-uninitialized-padd.full.patch deleted file mode 100644 index 02a3b6197..000000000 --- a/debian/patches/1260_nx-X11_xserver-Avoid-sending-uninitialized-padd.full.patch +++ /dev/null @@ -1,1055 +0,0 @@ -commit d088698324d5e71cb93ccd429f084729ba07872c -Author: Peter Ã…strand <astrand@cendio.se> -Date: Fri Feb 13 10:23:28 2009 +0100 - - Backport: xserver: Avoid sending uninitialized padding data over the network - - Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net> - - Backported from Arctica GH 3.6.x branch. - - v2: backport to nx-libs 3.6.x (Ulrich Sibiller) - v3: backport to nx-libs 3.5.0.x (Mihai Moldovan) - ---- a/nx-X11/programs/Xserver/Xext/bigreq.c -+++ b/nx-X11/programs/Xserver/Xext/bigreq.c -@@ -94,6 +94,7 @@ ProcBigReqDispatch (client) - return BadRequest; - REQUEST_SIZE_MATCH(xBigReqEnableReq); - client->big_requests = TRUE; -+ memset(&rep, 0, sizeof(xBigReqEnableReply)); - rep.type = X_Reply; - rep.length = 0; - rep.sequenceNumber = client->sequence; ---- a/nx-X11/programs/Xserver/Xext/shape.c -+++ b/nx-X11/programs/Xserver/Xext/shape.c -@@ -292,6 +292,7 @@ ProcShapeQueryVersion (client) - register int n; - - REQUEST_SIZE_MATCH (xShapeQueryVersionReq); -+ memset(&rep, 0, sizeof(xShapeQueryVersionReply)); - rep.type = X_Reply; - rep.length = 0; - rep.sequenceNumber = client->sequence; -@@ -717,6 +718,7 @@ ProcShapeQueryExtents (client) - RegionPtr region; - - REQUEST_SIZE_MATCH (xShapeQueryExtentsReq); -+ memset(&rep, 0, sizeof(xShapeQueryExtentsReply)); - pWin = LookupWindow (stuff->window, client); - if (!pWin) - return BadWindow; ---- a/nx-X11/programs/Xserver/Xext/shm.c -+++ b/nx-X11/programs/Xserver/Xext/shm.c -@@ -346,6 +346,7 @@ ProcShmQueryVersion(client) - register int n; - - REQUEST_SIZE_MATCH(xShmQueryVersionReq); -+ memset(&rep, 0, sizeof(xShmQueryVersionReply)); - rep.type = X_Reply; - rep.length = 0; - rep.sequenceNumber = client->sequence; ---- a/nx-X11/programs/Xserver/Xext/sync.c -+++ b/nx-X11/programs/Xserver/Xext/sync.c -@@ -1346,6 +1346,7 @@ ProcSyncInitialize(client) - - REQUEST_SIZE_MATCH(xSyncInitializeReq); - -+ memset(&rep, 0, sizeof(xSyncInitializeReply)); - rep.type = X_Reply; - rep.sequenceNumber = client->sequence; - rep.majorVersion = SYNC_MAJOR_VERSION; ---- a/nx-X11/programs/Xserver/Xi/getvers.c -+++ b/nx-X11/programs/Xserver/Xi/getvers.c -@@ -114,6 +114,7 @@ ProcXGetExtensionVersion (client) - return Success; - } - -+ memset(&rep, 0, sizeof(xGetExtensionVersionReply)); - rep.repType = X_Reply; - rep.RepType = X_GetExtensionVersion; - rep.length = 0; ---- a/nx-X11/programs/Xserver/Xi/listdev.c -+++ b/nx-X11/programs/Xserver/Xi/listdev.c -@@ -114,6 +114,7 @@ ProcXListInputDevices (client) - - REQUEST_SIZE_MATCH(xListInputDevicesReq); - -+ memset(&rep, 0, sizeof(xListInputDevicesReply)); - rep.repType = X_Reply; - rep.RepType = X_ListInputDevices; - rep.length = 0; -@@ -128,7 +129,7 @@ ProcXListInputDevices (client) - SizeDeviceInfo (d, &namesize, &size); - - total_length = numdevs * sizeof (xDeviceInfo) + size + namesize; -- devbuf = (char *) xalloc (total_length); -+ devbuf = (char *) xcalloc (1, total_length); - classbuf = devbuf + (numdevs * sizeof (xDeviceInfo)); - namebuf = classbuf + size; - savbuf = devbuf; ---- a/nx-X11/programs/Xserver/Xi/opendev.c -+++ b/nx-X11/programs/Xserver/Xi/opendev.c -@@ -141,6 +141,7 @@ ProcXOpenDevice(client) - if (enableit && dev->inited && dev->startup) - (void)EnableDevice(dev); - -+ memset(&rep, 0, sizeof(xOpenDeviceReply)); - rep.repType = X_Reply; - rep.RepType = X_OpenDevice; - rep.sequenceNumber = client->sequence; ---- a/nx-X11/programs/Xserver/dix/devices.c -+++ b/nx-X11/programs/Xserver/dix/devices.c -@@ -1037,6 +1037,7 @@ ProcGetModifierMapping(ClientPtr client) - register KeyClassPtr keyc = inputInfo.keyboard->key; - - REQUEST_SIZE_MATCH(xReq); -+ memset(&rep, 0, sizeof(xGetModifierMappingReply)); - rep.type = X_Reply; - rep.numKeyPerModifier = keyc->maxKeysPerModifier; - rep.sequenceNumber = client->sequence; -@@ -1157,6 +1158,7 @@ ProcGetKeyboardMapping(ClientPtr client) - return BadValue; - } - -+ memset(&rep, 0, sizeof(xGetKeyboardMappingReply)); - rep.type = X_Reply; - rep.sequenceNumber = client->sequence; - rep.keySymsPerKeyCode = curKeySyms->mapWidth; ---- a/nx-X11/programs/Xserver/dix/dispatch.c -+++ b/nx-X11/programs/Xserver/dix/dispatch.c -@@ -579,6 +579,7 @@ ProcGetWindowAttributes(register ClientP - SecurityReadAccess); - if (!pWin) - return(BadWindow); -+ memset(&wa, 0, sizeof(xGetWindowAttributesReply)); - GetWindowAttributes(pWin, client, &wa); - WriteReplyToClient(client, sizeof(xGetWindowAttributesReply), &wa); - return(client->noClientException); -@@ -834,6 +835,7 @@ ProcGetGeometry(register ClientPtr clien - xGetGeometryReply rep; - int status; - -+ memset(&rep, 0, sizeof(xGetGeometryReply)); - if ((status = GetGeometry(client, &rep)) != Success) - return status; - -@@ -856,6 +858,7 @@ ProcQueryTree(register ClientPtr client) - SecurityReadAccess); - if (!pWin) - return(BadWindow); -+ memset(&reply, 0, sizeof(xQueryTreeReply)); - reply.type = X_Reply; - reply.root = WindowTable[pWin->drawable.pScreen->myNum]->drawable.id; - reply.sequenceNumber = client->sequence; -@@ -909,6 +912,7 @@ ProcInternAtom(register ClientPtr client - if (atom != BAD_RESOURCE) - { - xInternAtomReply reply; -+ memset(&reply, 0, sizeof(xInternAtomReply)); - reply.type = X_Reply; - reply.length = 0; - reply.sequenceNumber = client->sequence; -@@ -932,6 +936,7 @@ ProcGetAtomName(register ClientPtr clien - if ( (str = NameForAtom(stuff->id)) ) - { - len = strlen(str); -+ memset(&reply, 0, sizeof(xGetAtomNameReply)); - reply.type = X_Reply; - reply.length = (len + 3) >> 2; - reply.sequenceNumber = client->sequence; -@@ -1061,6 +1066,7 @@ ProcGetSelectionOwner(register ClientPtr - i = 0; - while ((i < NumCurrentSelections) && - CurrentSelections[i].selection != stuff->id) i++; -+ memset(&reply, 0, sizeof(xGetSelectionOwnerReply)); - reply.type = X_Reply; - reply.length = 0; - reply.sequenceNumber = client->sequence; -@@ -1112,6 +1118,7 @@ ProcConvertSelection(register ClientPtr - #endif - ) - { -+ memset(&event, 0, sizeof(xEvent)); - event.u.u.type = SelectionRequest; - event.u.selectionRequest.time = stuff->time; - event.u.selectionRequest.owner = -@@ -1125,6 +1132,7 @@ ProcConvertSelection(register ClientPtr - NoEventMask /* CantBeFiltered */, NullGrab)) - return (client->noClientException); - } -+ memset(&event, 0, sizeof(xEvent)); - event.u.u.type = SelectionNotify; - event.u.selectionNotify.time = stuff->time; - event.u.selectionNotify.requestor = stuff->requestor; -@@ -1221,6 +1229,7 @@ ProcTranslateCoords(register ClientPtr c - SecurityReadAccess); - if (!pDst) - return(BadWindow); -+ memset(&rep, 0, sizeof(xTranslateCoordsReply)); - rep.type = X_Reply; - rep.length = 0; - rep.sequenceNumber = client->sequence; -@@ -1370,6 +1379,7 @@ ProcQueryFont(register ClientPtr client) - return(BadAlloc); - } - -+ memset(reply, 0, rlength); - reply->type = X_Reply; - reply->length = (rlength - sizeof(xGenericReply)) >> 2; - reply->sequenceNumber = client->sequence; -@@ -2112,6 +2122,8 @@ DoGetImage(register ClientPtr client, in - return(BadValue); - } - SECURITY_VERIFY_DRAWABLE(pDraw, drawable, client, SecurityReadAccess); -+ -+ memset(&xgi, 0, sizeof(xGetImageReply)); - if(pDraw->type == DRAWABLE_WINDOW) - { - if( /* check for being viewable */ -@@ -2165,7 +2177,7 @@ DoGetImage(register ClientPtr client, in - xgi.length = length; - - if (im_return) { -- pBuf = (char *)xalloc(sz_xGetImageReply + length); -+ pBuf = (char *)xcalloc(1, sz_xGetImageReply + length); - if (!pBuf) - return (BadAlloc); - if (widthBytesLine == 0) -@@ -2205,6 +2217,7 @@ DoGetImage(register ClientPtr client, in - } - if(!(pBuf = (char *) ALLOCATE_LOCAL(length))) - return (BadAlloc); -+ memset(pBuf, 0, length); - WriteReplyToClient(client, sizeof (xGetImageReply), &xgi); - } - -@@ -2973,6 +2986,7 @@ ProcQueryColors(register ClientPtr clien - prgbs = (xrgb *)ALLOCATE_LOCAL(count * sizeof(xrgb)); - if(!prgbs && count) - return(BadAlloc); -+ memset(prgbs, 0, count * sizeof(xrgb)); - if( (retval = QueryColors(pcmp, count, (Pixel *)&stuff[1], prgbs)) ) - { - if (prgbs) DEALLOCATE_LOCAL(prgbs); -@@ -2984,6 +2998,8 @@ ProcQueryColors(register ClientPtr clien - return (retval); - } - } -+ -+ memset(&qcr, 0, sizeof(xQueryColorsReply)); - qcr.type = X_Reply; - qcr.length = (count * sizeof(xrgb)) >> 2; - qcr.sequenceNumber = client->sequence; -@@ -3201,6 +3217,7 @@ ProcQueryBestSize (register ClientPtr cl - pScreen = pDraw->pScreen; - (* pScreen->QueryBestSize)(stuff->class, &stuff->width, - &stuff->height, pScreen); -+ memset(&reply, 0, sizeof(xQueryBestSizeReply)); - reply.type = X_Reply; - reply.length = 0; - reply.sequenceNumber = client->sequence; -@@ -3976,6 +3993,7 @@ SendErrorToClient(ClientPtr client, unsi - { - xError rep; - -+ memset(&rep, 0, sizeof(xError)); - rep.type = X_Error; - rep.sequenceNumber = client->sequence; - rep.errorCode = errorCode; ---- a/nx-X11/programs/Xserver/dix/dixfonts.c -+++ b/nx-X11/programs/Xserver/dix/dixfonts.c -@@ -850,6 +850,7 @@ finish: - for (i = 0; i < nnames; i++) - stringLens += (names->length[i] <= 255) ? names->length[i] : 0; - -+ memset(&reply, 0, sizeof(xListFontsReply)); - reply.type = X_Reply; - reply.length = (stringLens + nnames + 3) >> 2; - reply.nFonts = nnames; -@@ -1102,6 +1103,7 @@ doListFontsWithInfo(ClientPtr client, LF - err = AllocError; - break; - } -+ memset(reply + c->length, 0, length - c->length); - c->reply = reply; - c->length = length; - } ---- a/nx-X11/programs/Xserver/dix/events.c -+++ b/nx-X11/programs/Xserver/dix/events.c -@@ -3733,6 +3733,7 @@ ProcGetInputFocus(ClientPtr client) - FocusClassPtr focus = inputInfo.keyboard->focus; - - REQUEST_SIZE_MATCH(xReq); -+ memset(&rep, 0, sizeof(xGetInputFocusReply)); - rep.type = X_Reply; - rep.length = 0; - rep.sequenceNumber = client->sequence; -@@ -3807,6 +3808,7 @@ ProcGrabPointer(ClientPtr client) - } - /* at this point, some sort of reply is guaranteed. */ - time = ClientTimeToServerTime(stuff->time); -+ memset(&rep, 0, sizeof(xGrabPointerReply)); - rep.type = X_Reply; - rep.sequenceNumber = client->sequence; - rep.length = 0; -@@ -3982,6 +3984,7 @@ ProcGrabKeyboard(ClientPtr client) - int result; - - REQUEST_SIZE_MATCH(xGrabKeyboardReq); -+ memset(&rep, 0, sizeof(xGrabKeyboardReply)); - #ifdef XCSECURITY - if (!SecurityCheckDeviceAccess(client, inputInfo.keyboard, TRUE)) - { -@@ -4036,6 +4039,7 @@ ProcQueryPointer(ClientPtr client) - return BadWindow; - if (mouse->valuator->motionHintWindow) - MaybeStopHint(mouse, client); -+ memset(&rep, 0, sizeof(xQueryPointerReply)); - rep.type = X_Reply; - rep.sequenceNumber = client->sequence; - rep.mask = mouse->button->state | inputInfo.keyboard->key->state; ---- a/nx-X11/programs/Xserver/dix/extension.c -+++ b/nx-X11/programs/Xserver/dix/extension.c -@@ -313,6 +313,7 @@ ProcQueryExtension(ClientPtr client) - - REQUEST_FIXED_SIZE(xQueryExtensionReq, stuff->nbytes); - -+ memset(&reply, 0, sizeof(xQueryExtensionReply)); - reply.type = X_Reply; - reply.length = 0; - reply.major_opcode = 0; -@@ -352,6 +353,7 @@ ProcListExtensions(ClientPtr client) - - REQUEST_SIZE_MATCH(xReq); - -+ memset(&reply, 0, sizeof(xListExtensionsReply)); - reply.type = X_Reply; - reply.nExtensions = 0; - reply.length = 0; ---- a/nx-X11/programs/Xserver/dix/main.c -+++ b/nx-X11/programs/Xserver/dix/main.c -@@ -543,6 +543,7 @@ CreateConnectionBlock() - char *pBuf; - - -+ memset(&setup, 0, sizeof(xConnSetup)); - /* Leave off the ridBase and ridMask, these must be sent with - connection */ - -@@ -583,6 +584,7 @@ CreateConnectionBlock() - while (--i >= 0) - *pBuf++ = 0; - -+ memset(&format, 0, sizeof(xPixmapFormat)); - for (i=0; i<screenInfo.numPixmapFormats; i++) - { - format.depth = screenInfo.formats[i].depth; -@@ -594,6 +596,8 @@ CreateConnectionBlock() - } - - connBlockScreenStart = sizesofar; -+ memset(&depth, 0, sizeof(xDepth)); -+ memset(&visual, 0, sizeof(xVisualType)); - for (i=0; i<screenInfo.numScreens; i++) - { - ScreenPtr pScreen; ---- a/nx-X11/programs/Xserver/dix/property.c -+++ b/nx-X11/programs/Xserver/dix/property.c -@@ -531,6 +531,7 @@ ProcGetProperty(ClientPtr client) - pProp = pProp->next; - } - -+ memset(&reply, 0, sizeof(xGetPropertyReply)); - reply.type = X_Reply; - reply.sequenceNumber = client->sequence; - if (!pProp) ---- a/nx-X11/programs/Xserver/dix/window.c -+++ b/nx-X11/programs/Xserver/dix/window.c -@@ -774,6 +774,7 @@ CreateWindow(Window wid, register Window - - if (SubSend(pParent)) - { -+ memset(&event, 0, sizeof(xEvent)); - event.u.u.type = CreateNotify; - event.u.createNotify.window = wid; - event.u.createNotify.parent = pParent->drawable.id; -@@ -841,6 +842,7 @@ CrushTree(WindowPtr pWin) - pParent = pChild->parent; - if (SubStrSend(pChild, pParent)) - { -+ memset(&event, 0, sizeof(xEvent)); - event.u.u.type = DestroyNotify; - event.u.destroyNotify.window = pChild->drawable.id; - DeliverEvents(pChild, &event, 1, NullWindow); -@@ -890,6 +892,7 @@ DeleteWindow(pointer value, XID wid) - pParent = pWin->parent; - if (wid && pParent && SubStrSend(pWin, pParent)) - { -+ memset(&event, 0, sizeof(xEvent)); - event.u.u.type = DestroyNotify; - event.u.destroyNotify.window = pWin->drawable.id; - DeliverEvents(pWin, &event, 1, NullWindow); -@@ -2306,6 +2309,7 @@ ConfigureWindow(register WindowPtr pWin, - #endif - )) - { -+ memset(&event, 0, sizeof(xEvent)); - event.u.u.type = ConfigureRequest; - event.u.configureRequest.window = pWin->drawable.id; - if (mask & CWSibling) -@@ -2350,6 +2354,7 @@ ConfigureWindow(register WindowPtr pWin, - if (size_change && ((pWin->eventMask|wOtherEventMasks(pWin)) & ResizeRedirectMask)) - { - xEvent eventT; -+ memset(&eventT, 0, sizeof(xEvent)); - eventT.u.u.type = ResizeRequest; - eventT.u.resizeRequest.window = pWin->drawable.id; - eventT.u.resizeRequest.width = w; -@@ -2396,6 +2401,7 @@ ConfigureWindow(register WindowPtr pWin, - ActuallyDoSomething: - if (SubStrSend(pWin, pParent)) - { -+ memset(&event, 0, sizeof(xEvent)); - event.u.u.type = ConfigureNotify; - event.u.configureNotify.window = pWin->drawable.id; - if (pSib) -@@ -2552,6 +2558,7 @@ ReparentWindow(register WindowPtr pWin, - if (WasMapped) - UnmapWindow(pWin, FALSE); - -+ memset(&event, 0, sizeof(xEvent)); - event.u.u.type = ReparentNotify; - event.u.reparent.window = pWin->drawable.id; - event.u.reparent.parent = pParent->drawable.id; -@@ -2708,6 +2715,7 @@ MapWindow(register WindowPtr pWin, Clien - #endif - )) - { -+ memset(&event, 0, sizeof(xEvent)); - event.u.u.type = MapRequest; - event.u.mapRequest.window = pWin->drawable.id; - #ifdef XAPPGROUP -@@ -2730,6 +2738,7 @@ MapWindow(register WindowPtr pWin, Clien - pWin->mapped = TRUE; - if (SubStrSend(pWin, pParent)) - { -+ memset(&event, 0, sizeof(xEvent)); - event.u.u.type = MapNotify; - event.u.mapNotify.window = pWin->drawable.id; - event.u.mapNotify.override = pWin->overrideRedirect; -@@ -2820,6 +2829,7 @@ MapSubwindows(register WindowPtr pParent - { - if (parentRedirect && !pWin->overrideRedirect) - { -+ memset(&event, 0, sizeof(xEvent)); - event.u.u.type = MapRequest; - event.u.mapRequest.window = pWin->drawable.id; - event.u.mapRequest.parent = pParent->drawable.id; -@@ -2832,6 +2842,7 @@ MapSubwindows(register WindowPtr pParent - pWin->mapped = TRUE; - if (parentNotify || StrSend(pWin)) - { -+ memset(&event, 0, sizeof(xEvent)); - event.u.u.type = MapNotify; - event.u.mapNotify.window = pWin->drawable.id; - event.u.mapNotify.override = pWin->overrideRedirect; -@@ -2985,6 +2996,7 @@ UnmapWindow(register WindowPtr pWin, Boo - return(Success); - if (SubStrSend(pWin, pParent)) - { -+ memset(&event, 0, sizeof(xEvent)); - event.u.u.type = UnmapNotify; - event.u.unmapNotify.window = pWin->drawable.id; - event.u.unmapNotify.fromConfigure = fromConfigure; -@@ -3279,6 +3291,7 @@ SendVisibilityNotify(WindowPtr pWin) - } - #endif - -+ memset(&event, 0, sizeof(xEvent)); - event.u.u.type = VisibilityNotify; - event.u.visibility.window = pWin->drawable.id; - event.u.visibility.state = visibility; ---- a/nx-X11/programs/Xserver/hw/nxagent/Keyboard.c -+++ b/nx-X11/programs/Xserver/hw/nxagent/Keyboard.c -@@ -1214,6 +1214,7 @@ void nxagentNotifyKeyboardChanges(int ol - dev = inputInfo.keyboard; - xkb = dev -> key -> xkbInfo -> desc; - -+ memset(&nkn, 0, sizeof(xkbNewKeyboardNotify)); - nkn.deviceID = nkn.oldDeviceID = dev -> id; - nkn.minKeyCode = 8; - nkn.maxKeyCode = 255; -@@ -1233,6 +1234,7 @@ void nxagentNotifyKeyboardChanges(int ol - int i; - xEvent event; - -+ memset(&event, 0, sizeof(xEvent)); - event.u.u.type = MappingNotify; - event.u.mappingNotify.request = MappingKeyboard; - event.u.mappingNotify.firstKeyCode = inputInfo.keyboard -> key -> curKeySyms.minKeyCode; ---- a/nx-X11/programs/Xserver/hw/nxagent/NXdispatch.c -+++ b/nx-X11/programs/Xserver/hw/nxagent/NXdispatch.c -@@ -905,6 +905,7 @@ ProcGetWindowAttributes(client) - SecurityReadAccess); - if (!pWin) - return(BadWindow); -+ memset(&wa, 0, sizeof(xGetWindowAttributesReply)); - GetWindowAttributes(pWin, client, &wa); - WriteReplyToClient(client, sizeof(xGetWindowAttributesReply), &wa); - return(client->noClientException); -@@ -1141,6 +1142,7 @@ GetGeometry(client, rep) - - REQUEST_SIZE_MATCH(xResourceReq); - SECURITY_VERIFY_GEOMETRABLE (pDraw, stuff->id, client, SecurityReadAccess); -+ memset(rep, 0, sizeof(xGetGeometryReply)); - rep->type = X_Reply; - rep->length = 0; - rep->sequenceNumber = client->sequence; -@@ -1204,6 +1206,7 @@ ProcQueryTree(client) - SecurityReadAccess); - if (!pWin) - return(BadWindow); -+ memset(&reply, 0, sizeof(xQueryTreeReply)); - reply.type = X_Reply; - reply.root = WindowTable[pWin->drawable.pScreen->myNum]->drawable.id; - reply.sequenceNumber = client->sequence; -@@ -1268,6 +1271,7 @@ ProcInternAtom(client) - if (atom != BAD_RESOURCE) - { - xInternAtomReply reply; -+ memset(&reply, 0, sizeof(xInternAtomReply)); - reply.type = X_Reply; - reply.length = 0; - reply.sequenceNumber = client->sequence; -@@ -1292,6 +1296,7 @@ ProcGetAtomName(client) - if ( (str = NameForAtom(stuff->id)) ) - { - len = strlen(str); -+ memset(&reply, 0, sizeof(xGetAtomNameReply)); - reply.type = X_Reply; - reply.length = (len + 3) >> 2; - reply.sequenceNumber = client->sequence; -@@ -1425,6 +1430,7 @@ ProcGetSelectionOwner(client) - i = 0; - while ((i < NumCurrentSelections) && - CurrentSelections[i].selection != stuff->id) i++; -+ memset(&reply, 0, sizeof(xGetSelectionOwnerReply)); - reply.type = X_Reply; - reply.length = 0; - reply.sequenceNumber = client->sequence; -@@ -1497,7 +1503,9 @@ ProcConvertSelection(client) - CurrentSelections[i].pWin)) - #endif - ) -+ - { -+ memset(&event, 0, sizeof(xEvent)); - event.u.u.type = SelectionRequest; - event.u.selectionRequest.time = stuff->time; - event.u.selectionRequest.owner = -@@ -1511,6 +1519,7 @@ ProcConvertSelection(client) - NoEventMask /* CantBeFiltered */, NullGrab)) - return (client->noClientException); - } -+ memset(&event, 0, sizeof(xEvent)); - event.u.u.type = SelectionNotify; - event.u.selectionNotify.time = stuff->time; - event.u.selectionNotify.requestor = stuff->requestor; -@@ -1615,6 +1624,7 @@ ProcTranslateCoords(client) - SecurityReadAccess); - if (!pDst) - return(BadWindow); -+ memset(&rep, 0, sizeof(xTranslateCoordsReply)); - rep.type = X_Reply; - rep.length = 0; - rep.sequenceNumber = client->sequence; -@@ -1840,6 +1850,7 @@ ProcQueryFont(client) - { - return(BadAlloc); - } -+ memset(reply, 0, rlength); - - reply->type = X_Reply; - reply->length = (rlength - sizeof(xGenericReply)) >> 2; -@@ -2673,6 +2684,7 @@ DoGetImage(client, format, drawable, x, - return(BadValue); - } - SECURITY_VERIFY_DRAWABLE(pDraw, drawable, client, SecurityReadAccess); -+ memset(&xgi, 0, sizeof(xGetImageReply)); - if(pDraw->type == DRAWABLE_WINDOW) - { - if( /* check for being viewable */ -@@ -2726,9 +2738,10 @@ DoGetImage(client, format, drawable, x, - xgi.length = length; - - if (im_return) { -- pBuf = (char *)xalloc(sz_xGetImageReply + length); -+ pBuf = (char *)xcalloc(1, sz_xGetImageReply + length); - if (!pBuf) - return (BadAlloc); -+ - if (widthBytesLine == 0) - linesPerBuf = 0; - else -@@ -2766,6 +2779,7 @@ DoGetImage(client, format, drawable, x, - } - if(!(pBuf = (char *) ALLOCATE_LOCAL(length))) - return (BadAlloc); -+ memset(pBuf, 0, length); - WriteReplyToClient(client, sizeof (xGetImageReply), &xgi); - } - -@@ -3552,6 +3566,7 @@ ProcQueryColors(client) - prgbs = (xrgb *)ALLOCATE_LOCAL(count * sizeof(xrgb)); - if(!prgbs && count) - return(BadAlloc); -+ memset(prgbs, 0, count * sizeof(xrgb)); - if( (retval = QueryColors(pcmp, count, (Pixel *)&stuff[1], prgbs)) ) - { - if (prgbs) DEALLOCATE_LOCAL(prgbs); -@@ -3563,6 +3578,7 @@ ProcQueryColors(client) - return (retval); - } - } -+ memset(&qcr, 0, sizeof(xQueryColorsReply)); - qcr.type = X_Reply; - qcr.length = (count * sizeof(xrgb)) >> 2; - qcr.sequenceNumber = client->sequence; -@@ -3792,6 +3808,7 @@ ProcQueryBestSize (client) - pScreen = pDraw->pScreen; - (* pScreen->QueryBestSize)(stuff->class, &stuff->width, - &stuff->height, pScreen); -+ memset(&reply, 0, sizeof(xQueryBestSizeReply)); - reply.type = X_Reply; - reply.length = 0; - reply.sequenceNumber = client->sequence; -@@ -4685,6 +4702,7 @@ SendErrorToClient(client, majorCode, min - { - xError rep; - -+ memset(&rep, 0, sizeof(xError)); - rep.type = X_Error; - rep.sequenceNumber = client->sequence; - rep.errorCode = errorCode; ---- a/nx-X11/programs/Xserver/hw/nxagent/NXdixfonts.c -+++ b/nx-X11/programs/Xserver/hw/nxagent/NXdixfonts.c -@@ -932,6 +932,7 @@ finish: - for (i = 0; i < nnames; i++) - stringLens += (names->length[i] <= 255) ? names->length[i] : 0; - -+ memset(&reply, 0, sizeof(xListFontsReply)); - reply.type = X_Reply; - reply.length = (stringLens + nnames + 3) >> 2; - reply.nFonts = nnames; -@@ -1231,6 +1232,7 @@ doListFontsWithInfo(client, c) - err = AllocError; - break; - } -+ memset(reply + c->length, 0, length - c->length); - c->reply = reply; - c->length = length; - } ---- a/nx-X11/programs/Xserver/hw/nxagent/NXevents.c -+++ b/nx-X11/programs/Xserver/hw/nxagent/NXevents.c -@@ -3348,6 +3348,7 @@ EnterLeaveEvent(type, mode, detail, pWin - } - if (mask & filters[type]) - { -+ memset(&event, 0, sizeof(xEvent)); - event.u.u.type = type; - event.u.u.detail = detail; - event.u.enterLeave.time = currentTime.milliseconds; -@@ -3822,6 +3823,7 @@ ProcGetInputFocus(client) - FocusClassPtr focus = inputInfo.keyboard->focus; - - REQUEST_SIZE_MATCH(xReq); -+ memset(&rep, 0, sizeof(xGetInputFocusReply)); - rep.type = X_Reply; - rep.length = 0; - rep.sequenceNumber = client->sequence; -@@ -3897,6 +3899,7 @@ ProcGrabPointer(client) - } - /* at this point, some sort of reply is guaranteed. */ - time = ClientTimeToServerTime(stuff->time); -+ memset(&rep, 0, sizeof(xGrabPointerReply)); - rep.type = X_Reply; - rep.sequenceNumber = client->sequence; - rep.length = 0; -@@ -4083,6 +4086,8 @@ ProcGrabKeyboard(client) - int result; - - REQUEST_SIZE_MATCH(xGrabKeyboardReq); -+ memset(&rep, 0, sizeof(xGrabKeyboardReply)); -+ - #ifdef XCSECURITY - if (!SecurityCheckDeviceAccess(client, inputInfo.keyboard, TRUE)) - { -@@ -4139,6 +4144,7 @@ ProcQueryPointer(client) - return BadWindow; - if (mouse->valuator->motionHintWindow) - MaybeStopHint(mouse, client); -+ memset(&rep, 0, sizeof(xQueryPointerReply)); - rep.type = X_Reply; - rep.sequenceNumber = client->sequence; - rep.mask = mouse->button->state | inputInfo.keyboard->key->state; ---- a/nx-X11/programs/Xserver/hw/nxagent/NXextension.c -+++ b/nx-X11/programs/Xserver/hw/nxagent/NXextension.c -@@ -341,6 +341,7 @@ ProcQueryExtension(client) - - REQUEST_FIXED_SIZE(xQueryExtensionReq, stuff->nbytes); - -+ memset(&reply, 0, sizeof(xQueryExtensionReply)); - reply.type = X_Reply; - reply.length = 0; - reply.major_opcode = 0; -@@ -388,6 +389,7 @@ ProcListExtensions(client) - - REQUEST_SIZE_MATCH(xReq); - -+ memset(&reply, 0, sizeof(xListExtensionsReply)); - reply.type = X_Reply; - reply.nExtensions = 0; - reply.length = 0; ---- a/nx-X11/programs/Xserver/hw/nxagent/NXmiexpose.c -+++ b/nx-X11/programs/Xserver/hw/nxagent/NXmiexpose.c -@@ -414,6 +414,7 @@ miSendGraphicsExpose (client, pRgn, draw - else - { - xEvent event; -+ memset(&event, 0, sizeof(xEvent)); - event.u.u.type = NoExpose; - event.u.noExposure.drawable = drawable; - event.u.noExposure.majorEvent = major; -@@ -439,7 +440,7 @@ miSendExposures(pWin, pRgn, dx, dy) - numRects = REGION_NUM_RECTS(pRgn); - if(!(pEvent = (xEvent *) ALLOCATE_LOCAL(numRects * sizeof(xEvent)))) - return; -- -+ memset(pEvent, 0, numRects * sizeof(xEvent)); - for (i=numRects, pe = pEvent; --i >= 0; pe++, pBox++) - { - pe->u.u.type = Expose; ---- a/nx-X11/programs/Xserver/hw/nxagent/NXproperty.c -+++ b/nx-X11/programs/Xserver/hw/nxagent/NXproperty.c -@@ -599,6 +599,7 @@ ProcGetProperty(client) - pProp = pProp->next; - } - -+ memset(&reply, 0, sizeof(xGetPropertyReply)); - reply.type = X_Reply; - reply.sequenceNumber = client->sequence; - if (!pProp) ---- a/nx-X11/programs/Xserver/hw/nxagent/NXrender.c -+++ b/nx-X11/programs/Xserver/hw/nxagent/NXrender.c -@@ -331,6 +331,7 @@ ProcRenderQueryVersion (ClientPtr client - pRenderClient->major_version = stuff->majorVersion; - pRenderClient->minor_version = stuff->minorVersion; - -+ memset(&rep, 0, sizeof(xRenderQueryVersionReply)); - rep.type = X_Reply; - rep.length = 0; - rep.sequenceNumber = client->sequence; -@@ -455,6 +456,7 @@ ProcRenderQueryPictFormats (ClientPtr cl - reply = (xRenderQueryPictFormatsReply *) xalloc (rlength); - if (!reply) - return BadAlloc; -+ memset(reply, 0, rlength); - reply->type = X_Reply; - reply->sequenceNumber = client->sequence; - reply->length = (rlength - sizeof(xGenericReply)) >> 2; ---- a/nx-X11/programs/Xserver/hw/nxagent/NXshm.c -+++ b/nx-X11/programs/Xserver/hw/nxagent/NXshm.c -@@ -375,6 +375,7 @@ ProcShmQueryVersion(client) - register int n; - - REQUEST_SIZE_MATCH(xShmQueryVersionReq); -+ memset(&rep, 0, sizeof(xShmQueryVersionReply)); - rep.type = X_Reply; - rep.length = 0; - rep.sequenceNumber = client->sequence; ---- a/nx-X11/programs/Xserver/hw/nxagent/NXwindow.c -+++ b/nx-X11/programs/Xserver/hw/nxagent/NXwindow.c -@@ -912,6 +912,7 @@ CreateWindow(wid, pParent, x, y, w, h, b - - if (SubSend(pParent)) - { -+ memset(&event, 0, sizeof(xEvent)); - event.u.u.type = CreateNotify; - event.u.createNotify.window = wid; - event.u.createNotify.parent = pParent->drawable.id; -@@ -987,6 +988,7 @@ CrushTree(pWin) - pParent = pChild->parent; - if (SubStrSend(pChild, pParent)) - { -+ memset(&event, 0, sizeof(xEvent)); - event.u.u.type = DestroyNotify; - event.u.destroyNotify.window = pChild->drawable.id; - DeliverEvents(pChild, &event, 1, NullWindow); -@@ -1039,6 +1041,7 @@ DeleteWindow(value, wid) - pParent = pWin->parent; - if (wid && pParent && SubStrSend(pWin, pParent)) - { -+ memset(&event, 0, sizeof(xEvent)); - event.u.u.type = DestroyNotify; - event.u.destroyNotify.window = pWin->drawable.id; - DeliverEvents(pWin, &event, 1, NullWindow); -@@ -2550,6 +2553,7 @@ ConfigureWindow(pWin, mask, vlist, clien - #endif - )) - { -+ memset(&event, 0, sizeof(xEvent)); - event.u.u.type = ConfigureRequest; - event.u.configureRequest.window = pWin->drawable.id; - if (mask & CWSibling) -@@ -2594,6 +2598,7 @@ ConfigureWindow(pWin, mask, vlist, clien - if (size_change && ((pWin->eventMask|wOtherEventMasks(pWin)) & ResizeRedirectMask)) - { - xEvent eventT; -+ memset(&eventT, 0, sizeof(xEvent)); - eventT.u.u.type = ResizeRequest; - eventT.u.resizeRequest.window = pWin->drawable.id; - eventT.u.resizeRequest.width = w; -@@ -2637,6 +2642,7 @@ ConfigureWindow(pWin, mask, vlist, clien - ActuallyDoSomething: - if (SubStrSend(pWin, pParent)) - { -+ memset(&event, 0, sizeof(xEvent)); - event.u.u.type = ConfigureNotify; - event.u.configureNotify.window = pWin->drawable.id; - if (pSib) -@@ -2821,6 +2827,7 @@ ReparentWindow(pWin, pParent, x, y, clie - if (WasMapped) - UnmapWindow(pWin, FALSE); - -+ memset(&event, 0, sizeof(xEvent)); - event.u.u.type = ReparentNotify; - event.u.reparent.window = pWin->drawable.id; - event.u.reparent.parent = pParent->drawable.id; -@@ -2999,6 +3006,7 @@ MapWindow(pWin, client) - #endif - )) - { -+ memset(&event, 0, sizeof(xEvent)); - event.u.u.type = MapRequest; - event.u.mapRequest.window = pWin->drawable.id; - #ifdef XAPPGROUP -@@ -3021,6 +3029,7 @@ MapWindow(pWin, client) - pWin->mapped = TRUE; - if (SubStrSend(pWin, pParent)) - { -+ memset(&event, 0, sizeof(xEvent)); - event.u.u.type = MapNotify; - event.u.mapNotify.window = pWin->drawable.id; - event.u.mapNotify.override = pWin->overrideRedirect; -@@ -3115,6 +3124,7 @@ MapSubwindows(pParent, client) - { - if (parentRedirect && !pWin->overrideRedirect) - { -+ memset(&event, 0, sizeof(xEvent)); - event.u.u.type = MapRequest; - event.u.mapRequest.window = pWin->drawable.id; - event.u.mapRequest.parent = pParent->drawable.id; -@@ -3127,6 +3137,7 @@ MapSubwindows(pParent, client) - pWin->mapped = TRUE; - if (parentNotify || StrSend(pWin)) - { -+ memset(&event, 0, sizeof(xEvent)); - event.u.u.type = MapNotify; - event.u.mapNotify.window = pWin->drawable.id; - event.u.mapNotify.override = pWin->overrideRedirect; -@@ -3296,6 +3307,7 @@ UnmapWindow(pWin, fromConfigure) - return(Success); - if (SubStrSend(pWin, pParent)) - { -+ memset(&event, 0, sizeof(xEvent)); - event.u.u.type = UnmapNotify; - event.u.unmapNotify.window = pWin->drawable.id; - event.u.unmapNotify.fromConfigure = fromConfigure; -@@ -3574,6 +3586,7 @@ SendVisibilityNotify(pWin) - } - #endif - -+ memset(&event, 0, sizeof(xEvent)); - event.u.u.type = VisibilityNotify; - event.u.visibility.window = pWin->drawable.id; - event.u.visibility.state = visibility; ---- a/nx-X11/programs/Xserver/mi/miexpose.c -+++ b/nx-X11/programs/Xserver/mi/miexpose.c -@@ -420,6 +420,7 @@ miSendGraphicsExpose (client, pRgn, draw - else - { - xEvent event; -+ memset(&event, 0, sizeof(xEvent)); - event.u.u.type = NoExpose; - event.u.noExposure.drawable = drawable; - event.u.noExposure.majorEvent = major; -@@ -445,6 +446,7 @@ miSendExposures(pWin, pRgn, dx, dy) - numRects = REGION_NUM_RECTS(pRgn); - if(!(pEvent = (xEvent *) ALLOCATE_LOCAL(numRects * sizeof(xEvent)))) - return; -+ memset(pEvent, 0, numRects * sizeof(xEvent)); - - for (i=numRects, pe = pEvent; --i >= 0; pe++, pBox++) - { ---- a/nx-X11/programs/Xserver/randr/rrxinerama.c -+++ b/nx-X11/programs/Xserver/randr/rrxinerama.c -@@ -281,7 +281,8 @@ ProcRRXineramaIsActive(ClientPtr client) - xXineramaIsActiveReply rep; - - REQUEST_SIZE_MATCH(xXineramaIsActiveReq); -- -+ -+ memset(&rep, 0, sizeof(xXineramaIsActiveReply)); - rep.type = X_Reply; - rep.length = 0; - rep.sequenceNumber = client->sequence; ---- a/nx-X11/programs/Xserver/render/render.c -+++ b/nx-X11/programs/Xserver/render/render.c -@@ -288,6 +288,7 @@ ProcRenderQueryVersion (ClientPtr client - pRenderClient->major_version = stuff->majorVersion; - pRenderClient->minor_version = stuff->minorVersion; - -+ memset(&rep, 0, sizeof(xRenderQueryVersionReply)); - rep.type = X_Reply; - rep.length = 0; - rep.sequenceNumber = client->sequence; -@@ -410,6 +411,8 @@ ProcRenderQueryPictFormats (ClientPtr cl - reply = (xRenderQueryPictFormatsReply *) xalloc (rlength); - if (!reply) - return BadAlloc; -+ memset(reply, 0, rlength); -+ - reply->type = X_Reply; - reply->sequenceNumber = client->sequence; - reply->length = (rlength - sizeof(xGenericReply)) >> 2; ---- a/nx-X11/programs/Xserver/xfixes/select.c -+++ b/nx-X11/programs/Xserver/xfixes/select.c -@@ -84,6 +84,8 @@ XFixesSelectionCallback (CallbackListPtr - { - xXFixesSelectionNotifyEvent ev; - -+ memset(&ev, 0, sizeof(xXFixesSelectionNotifyEvent)); -+ - ev.type = XFixesEventBase + XFixesSelectionNotify; - ev.subtype = subtype; - ev.sequenceNumber = e->pClient->sequence; ---- a/nx-X11/programs/Xserver/xfixes/xfixes.c -+++ b/nx-X11/programs/Xserver/xfixes/xfixes.c -@@ -42,6 +42,7 @@ ProcXFixesQueryVersion(ClientPtr client) - REQUEST(xXFixesQueryVersionReq); - - REQUEST_SIZE_MATCH(xXFixesQueryVersionReq); -+ memset(&rep, 0, sizeof(xXFixesQueryVersionReply)); - rep.type = X_Reply; - rep.length = 0; - rep.sequenceNumber = client->sequence; ---- a/nx-X11/programs/Xserver/xkb/xkb.c -+++ b/nx-X11/programs/Xserver/xkb/xkb.c -@@ -192,6 +192,7 @@ ProcXkbUseExtension(ClientPtr client) - stuff->wantedMajor,stuff->wantedMinor, - XkbMajorVersion,XkbMinorVersion); - } -+ memset(&rep, 0, sizeof(xkbUseExtensionReply)); - rep.type = X_Reply; - rep.supported = supported; - rep.length = 0; -@@ -1313,6 +1314,8 @@ char *desc,*start; - start= desc= (char *)ALLOCATE_LOCAL(len); - if (!start) - return BadAlloc; -+ memset(start, 0, len); -+ - if ( rep->nTypes>0 ) - desc = XkbWriteKeyTypes(xkb,rep,desc,client); - if ( rep->nKeySyms>0 ) -@@ -2381,6 +2384,8 @@ ProcXkbSetMap(ClientPtr client) - (xkb->max_key_code!=stuff->maxKeyCode)) { - Status status; - xkbNewKeyboardNotify nkn; -+ -+ memset(&nkn, 0, sizeof(xkbNewKeyboardNotify)); - nkn.deviceID= nkn.oldDeviceID= dev->id; - nkn.oldMinKeyCode= xkb->min_key_code; - nkn.oldMaxKeyCode= xkb->max_key_code; -@@ -3480,6 +3485,7 @@ ProcXkbGetNames(ClientPtr client) - CHK_MASK_LEGAL(0x01,stuff->which,XkbAllNamesMask); - - xkb = dev->key->xkbInfo->desc; -+ memset(&rep, 0, sizeof(xkbGetNamesReply)); - rep.type= X_Reply; - rep.sequenceNumber= client->sequence; - rep.length = 0; -@@ -4939,6 +4945,7 @@ ProcXkbSetGeometry(ClientPtr client) - nn.changed= XkbGeometryNameMask; - XkbSendNamesNotify(dev,&nn); - } -+ memset(&nkn, 0, sizeof(xkbNewKeyboardNotify)); - nkn.deviceID= nkn.oldDeviceID= dev->id; - nkn.minKeyCode= nkn.oldMinKeyCode= xkb->min_key_code; - nkn.maxKeyCode= nkn.oldMaxKeyCode= xkb->max_key_code; -@@ -4969,6 +4976,7 @@ ProcXkbPerClientFlags(ClientPtr client) - CHK_MASK_MATCH(0x02,stuff->change,stuff->value); - - interest = XkbFindClientResource((DevicePtr)dev,client); -+ memset(&rep, 0, sizeof(xkbPerClientFlagsReply)); - rep.type= X_Reply; - rep.length = 0; - rep.sequenceNumber = client->sequence; -@@ -5463,6 +5471,7 @@ ProcXkbGetKbdByName(ClientPtr client) - XkbFreeSrvLedInfo(old_sli); - } - -+ memset(&nkn, 0, sizeof(xkbNewKeyboardNotify)); - nkn.deviceID= nkn.oldDeviceID= dev->id; - nkn.minKeyCode= finfo.xkb->min_key_code; - nkn.maxKeyCode= finfo.xkb->max_key_code; ---- a/nx-X11/programs/Xserver/xkb/xkbEvents.c -+++ b/nx-X11/programs/Xserver/xkb/xkbEvents.c -@@ -730,6 +730,7 @@ XkbSrvLedInfoPtr sli; - } - if (pChanges->map.changed) { - xkbMapNotify mn; -+ memset(&mn, 0, sizeof(xkbMapNotify)); - mn.changed= pChanges->map.changed; - mn.firstType= pChanges->map.first_type; - mn.nTypes= pChanges->map.num_types; -@@ -751,6 +752,7 @@ XkbSrvLedInfoPtr sli; - if ((pChanges->ctrls.changed_ctrls)|| - (pChanges->ctrls.enabled_ctrls_changes)) { - xkbControlsNotify cn; -+ memset(&cn, 0, sizeof(xkbControlsNotify)); - cn.changedControls= pChanges->ctrls.changed_ctrls; - cn.enabledControlChanges= pChanges->ctrls.enabled_ctrls_changes; - cn.keycode= cause->kc; -@@ -763,6 +765,7 @@ XkbSrvLedInfoPtr sli; - xkbIndicatorNotify in; - if (sli==NULL) - sli= XkbFindSrvLedInfo(kbd,XkbDfltXIClass,XkbDfltXIId,0); -+ memset(&in, 0, sizeof(xkbIndicatorNotify)); - in.state= sli->effectiveState; - in.changed= pChanges->indicators.map_changes; - XkbSendIndicatorNotify(kbd,XkbIndicatorMapNotify,&in); -@@ -771,12 +774,14 @@ XkbSrvLedInfoPtr sli; - xkbIndicatorNotify in; - if (sli==NULL) - sli= XkbFindSrvLedInfo(kbd,XkbDfltXIClass,XkbDfltXIId,0); -+ memset(&in, 0, sizeof(xkbIndicatorNotify)); - in.state= sli->effectiveState; - in.changed= pChanges->indicators.state_changes; - XkbSendIndicatorNotify(kbd,XkbIndicatorStateNotify,&in); - } - if (pChanges->names.changed) { - xkbNamesNotify nn; -+ memset(&nn, 0, sizeof(xkbNamesNotify)); - nn.changed= pChanges->names.changed; - nn.firstType= pChanges->names.first_type; - nn.nTypes= pChanges->names.num_types; -@@ -789,6 +794,7 @@ XkbSrvLedInfoPtr sli; - } - if ((pChanges->compat.changed_groups)||(pChanges->compat.num_si>0)) { - xkbCompatMapNotify cmn; -+ memset(&cmn, 0, sizeof(xkbCompatMapNotify)); - cmn.changedGroups= pChanges->compat.changed_groups; - cmn.firstSI= pChanges->compat.first_si; - cmn.nSI= pChanges->compat.num_si; diff --git a/debian/patches/1270_nx-X11_CVE-2017-2624-Use-timingsafe_memcmp-to-c.full.patch b/debian/patches/1270_nx-X11_CVE-2017-2624-Use-timingsafe_memcmp-to-c.full.patch deleted file mode 100644 index 2528ebbbd..000000000 --- a/debian/patches/1270_nx-X11_CVE-2017-2624-Use-timingsafe_memcmp-to-c.full.patch +++ /dev/null @@ -1,162 +0,0 @@ -commit 65c5d8ad7a46a83338c23dee66e208a014c3d3d2 -Author: Ulrich Sibiller <uli42@gmx.de> -Date: Fri Mar 3 22:46:33 2017 +0100 - - Backport CVE-2017-2624 (timingsafe_memcmp) - - Fixes ArcticaProject/nx-libs#365 - - These two commits: - - commit 5c44169caed811e59a65ba346de1cadb46d266ec - Author: Adam Jackson <ajax@redhat.com> - Date: Thu Mar 2 17:20:30 2017 -0500 - - os: Squash missing declaration warning for timingsafe_memcmp - - timingsafe_memcmp.c:21:1: warning: no previous prototype for ‘timingsafe_memcmp’ [-Wmissing-prototypes] - timingsafe_memcmp(const void *b1, const void *b2, size_t len) - - Signed-off-by: Adam Jackson <ajax@redhat.com> - - commit d7ac755f0b618eb1259d93c8a16ec6e39a18627c - Author: Matthieu Herrb <matthieu@herrb.eu> - Date: Tue Feb 28 19:18:25 2017 +0100 - - Use timingsafe_memcmp() to compare MIT-MAGIC-COOKIES CVE-2017-2624 - - Provide the function definition for systems that don't have it. - - Signed-off-by: Matthieu Herrb <matthieu@herrb.eu> - - Backported from Arctica GH 3.6.x branch. - - v2: backport to nx-libs 3.6.x (Ulrich Sibiller) - v3: backport to nx-libs 3.5.0.x (Mihai Moldovan) - -commit 22f542626cf9935fd55a899e21144111e481542c -Author: Ulrich Sibiller <uli42@gmx.de> -Date: Sat Mar 4 16:10:38 2017 +0100 - - os: add timingsafe_memcmp to Imake - - There might be some library linking missing on platforms that deliver - timingsafe_memcmp but I cannot test that here. - - Backported from Arctica GH 3.6.x branch. - - v2: backport to nx-libs 3.5.0.x (Mihai Moldovan) ---- a/nx-X11/config/cf/Imake.tmpl -+++ b/nx-X11/config/cf/Imake.tmpl -@@ -484,6 +484,9 @@ XCOMM the platform-specific parameters - - #ifndef HasBasename - #define HasBasename YES - #endif -+#ifndef HasTimingsafeMemcmp -+#define HasTimingsafeMemcmp NO /* assume not */ -+#endif - #ifndef HasGetopt - # if !defined(Win32Architecture) && !defined(OS2Architecture) - # define HasGetopt YES ---- a/nx-X11/programs/Xserver/include/os.h -+++ b/nx-X11/programs/Xserver/include/os.h -@@ -480,6 +480,11 @@ extern void AbortDDX(void); - extern void ddxGiveUp(void); - extern int TimeSinceLastInputEvent(void); - -+#ifndef HAVE_TIMINGSAFE_MEMCMP -+extern _X_EXPORT int -+timingsafe_memcmp(const void *b1, const void *b2, size_t len); -+#endif -+ - /* Logging. */ - typedef enum _LogParameter { - XLOG_FLUSH, ---- a/nx-X11/programs/Xserver/os/Imakefile -+++ b/nx-X11/programs/Xserver/os/Imakefile -@@ -127,17 +127,22 @@ GETPEER_DEFINES = -DHAS_GETPEEREID - # endif - #endif - -+#if !HasTimingsafeMemcmp -+TMEMCMP_SRCS = timingsafe_memcmp.c -+TMEMCMP_OBJS = timingsafe_memcmp.o -+#endif -+ - BOOTSTRAPCFLAGS = - SRCS = WaitFor.c access.c connection.c io.c $(COLOR_SRCS) \ - osinit.c utils.c log.c auth.c mitauth.c secauth.c \ - $(XDMAUTHSRCS) $(RPCSRCS) $(KRB5SRCS) xdmcp.c OtherSources \ - transport.c $(SNPRINTF_SRCS) $(STRLCAT_SRCS) \ -- $(MALLOC_SRCS) $(LBX_SRCS) xprintf.c -+ $(MALLOC_SRCS) $(LBX_SRCS) xprintf.c $(TMEMCMP_SRCS) - OBJS = WaitFor.o access.o connection.o io.o $(COLOR_OBJS) \ - osinit.o utils.o log.o auth.o mitauth.o secauth.o \ - $(XDMAUTHOBJS) $(RPCOBJS) $(KRB5OBJS) xdmcp.o OtherObjects \ - transport.o $(SNPRINTF_OBJS) $(STRLCAT_OBJS) \ -- $(MALLOC_OBJS) $(LBX_OBJS) xprintf.o -+ $(MALLOC_OBJS) $(LBX_OBJS) xprintf.o $(TMEMCMP_OBJS) - - #if SpecialMalloc - MEM_DEFINES = -DSPECIAL_MALLOC ---- a/nx-X11/programs/Xserver/os/mitauth.c -+++ b/nx-X11/programs/Xserver/os/mitauth.c -@@ -84,7 +84,7 @@ MitCheckCookie ( - - for (auth = mit_auth; auth; auth=auth->next) { - if (data_length == auth->len && -- memcmp (data, auth->data, (int) data_length) == 0) -+ timingsafe_memcmp (data, auth->data, (int) data_length) == 0) - return auth->id; - } - *reason = "Invalid MIT-MAGIC-COOKIE-1 key"; ---- /dev/null -+++ b/nx-X11/programs/Xserver/os/timingsafe_memcmp.c -@@ -0,0 +1,47 @@ -+/* -+ * Copyright (c) 2014 Google Inc. -+ * -+ * Permission to use, copy, modify, and distribute this software for any -+ * purpose with or without fee is hereby granted, provided that the above -+ * copyright notice and this permission notice appear in all copies. -+ * -+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES -+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF -+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR -+ * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES -+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN -+ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF -+ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. -+ */ -+ -+#include <limits.h> -+#include <string.h> -+#include <X11/Xfuncproto.h> -+#include "os.h" -+ -+int -+timingsafe_memcmp(const void *b1, const void *b2, size_t len) -+{ -+ const unsigned char *p1 = b1, *p2 = b2; -+ size_t i; -+ int res = 0, done = 0; -+ -+ for (i = 0; i < len; i++) { -+ /* lt is -1 if p1[i] < p2[i]; else 0. */ -+ int lt = (p1[i] - p2[i]) >> CHAR_BIT; -+ -+ /* gt is -1 if p1[i] > p2[i]; else 0. */ -+ int gt = (p2[i] - p1[i]) >> CHAR_BIT; -+ -+ /* cmp is 1 if p1[i] > p2[i]; -1 if p1[i] < p2[i]; else 0. */ -+ int cmp = lt - gt; -+ -+ /* set res = cmp if !done. */ -+ res |= cmp & ~done; -+ -+ /* set done if p1[i] != p2[i]. */ -+ done |= lt | gt; -+ } -+ -+ return (res); -+} diff --git a/debian/patches/1300_nxcomp_Set-TokenSize-to-1536-for-lin.full+lite.patch b/debian/patches/1300_nxcomp_Set-TokenSize-to-1536-for-lin.full+lite.patch deleted file mode 100644 index 0baf27058..000000000 --- a/debian/patches/1300_nxcomp_Set-TokenSize-to-1536-for-lin.full+lite.patch +++ /dev/null @@ -1,61 +0,0 @@ -From 7d51cb6760b760768aeb91dd81f10443d094bd6c Mon Sep 17 00:00:00 2001 -From: Oleksandr Shneyder <o.schneyder@phoca-gmbh.de> -Date: Thu, 29 Jun 2017 10:08:56 +0200 -Subject: [PATCH] nxcomp: Set TokenSize to 1536 for link type ADSL and WAN. - Improving non-xrender based browser scrolling behaviour when link type is - set to ADSL or WAN. - - In the 40-ies (talking about release version numbers), Firefox started - using the Skia library [1] for client-side rendering of browser content. - - With current versions of Firefox you can switch between libXrender based - rendering (esp. of Fonts) and Skia based rendering: - - gfx.xrender.enabled = true|false - - Some time around Firefox 52, the default for the gfx.xrender.enabled - setting got changed by Firefox upstream from true to false. So nowadays, - Firefox uses Skia by default. - - However, it turns out that Skia scales really badly on remote X11 - connections. Scrolling of long web pages becomes really jolty. - - Something similar could be observed earlier already when using - Chrome or Chromium (which also has been using Skia for some time - now). - - This change in nxcomp works around those issues and greatly - improves scrolling and general browser experience on medium - throughput networks (like cable modem, ADSL, HDSPA, slow LTE). - - [1] https://en.wikipedia.org/wiki/Skia_Graphics_Engine - - Fixes ArcticaProject/nx-libs#443. - - Backported from Arctica GH 3.6.x branch. - - v2: backport to nx-libs 3.5.0.x (Mihai Moldovan) ---- - nxcomp/Loop.cpp | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - ---- a/nxcomp/Loop.cpp -+++ b/nxcomp/Loop.cpp -@@ -13017,7 +13017,7 @@ int SetLinkAdsl() - - control -> LinkMode = LINK_TYPE_ADSL; - -- control -> TokenSize = 512; -+ control -> TokenSize = 1536; - control -> TokenLimit = 24; - - control -> SplitMode = 1; -@@ -13047,7 +13047,7 @@ int SetLinkWan() - - control -> LinkMode = LINK_TYPE_WAN; - -- control -> TokenSize = 768; -+ control -> TokenSize = 1536; - control -> TokenLimit = 24; - - control -> SplitMode = 1; diff --git a/debian/patches/1301_nxcomp_Reduce-TokenSize-slightly-for.full+lite.patch b/debian/patches/1301_nxcomp_Reduce-TokenSize-slightly-for.full+lite.patch deleted file mode 100644 index aceea8f43..000000000 --- a/debian/patches/1301_nxcomp_Reduce-TokenSize-slightly-for.full+lite.patch +++ /dev/null @@ -1,34 +0,0 @@ -From 418db3b5ce28bcc5b1d00d7444041ea2d6592706 Mon Sep 17 00:00:00 2001 -From: Simon Matter <simon.matter@invoca.ch> -Date: Mon, 9 Oct 2017 11:30:02 +0200 -Subject: [PATCH] nxcomp/src/Loop.cpp: Reduce control->TokenSize slightly again - in order to fix fragmentation of packages when on VPN (or otherwise - encapsulated) connections. - - Backported from Arctica GH 3.6.x branch. - - v2: backport to nx-libs 3.5.0.x (Mihai Moldovan) ---- - nxcomp/src/Loop.cpp | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - ---- a/nxcomp/Loop.cpp -+++ b/nxcomp/Loop.cpp -@@ -13017,7 +13017,7 @@ int SetLinkAdsl() - - control -> LinkMode = LINK_TYPE_ADSL; - -- control -> TokenSize = 1536; -+ control -> TokenSize = 1408; - control -> TokenLimit = 24; - - control -> SplitMode = 1; -@@ -13047,7 +13047,7 @@ int SetLinkWan() - - control -> LinkMode = LINK_TYPE_WAN; - -- control -> TokenSize = 1536; -+ control -> TokenSize = 1408; - control -> TokenLimit = 24; - - control -> SplitMode = 1; diff --git a/debian/patches/1400_nx-X11_Render.c-Improve-situation-fo.full.patch b/debian/patches/1400_nx-X11_Render.c-Improve-situation-fo.full.patch deleted file mode 100644 index ca875f3cf..000000000 --- a/debian/patches/1400_nx-X11_Render.c-Improve-situation-fo.full.patch +++ /dev/null @@ -1,68 +0,0 @@ -From da43f047a0d1f9e3a4850f3e8a15a67e81826dae Mon Sep 17 00:00:00 2001 -From: Oleksandr Shneyder <o.schneyder@phoca-gmbh.de> -Date: Mon, 31 Jul 2017 13:20:12 +0200 -Subject: [PATCH] Render.c: Improve situation for multiple trapezoid requests. - - This change improves the situation in nxagent for the following - issue: - - ``` - "XRenderCompositeTrapezoids builds RenderTrapezoids requests to composite the - specified list of trapezoids to dst. XRenderCompositeTrapezoids will split - the list of trapezoids to build requests no larger than the maximum request - size supported by the server. This can create rendering artifacts as the - precompositing done by RenderTrapezoids when a maskFormat is specified - cannot span multiple requests." - ``` - - For more information see: - https://lists.freedesktop.org/archives/xorg/2008-June/036124.html - - Fixes ArcticaProject/nx-libs#336. - - Backported from Arctica GH 3.6.x branch. - - v2: backport to nx-libs 3.5.0.x (Mihai Moldovan) ---- - nx-X11/programs/Xserver/hw/nxagent/Render.c | 15 +-------------- - 1 file changed, 1 insertion(+), 14 deletions(-) - ---- a/nx-X11/programs/Xserver/hw/nxagent/Render.c -+++ b/nx-X11/programs/Xserver/hw/nxagent/Render.c -@@ -84,12 +84,6 @@ FIXME: Most operations don't seem to pro - #undef SKIP_REALLY_ALL_LOUSY_RENDER_OPERATIONS - - /* -- * Do we split the big trapezoid requests? -- */ -- --#define TRAPEZOIDS_PER_REQUEST 256 -- --/* - * Margin added around the glyphs extent (in pixels). - */ - -@@ -1798,8 +1792,6 @@ FIXME: Is this useful or just a waste of - nxagentSynchronizeBox(pDst -> pDrawable, nxagentTrapezoidExtents, NEVER_BREAK); - } - -- while (remaining > 0) -- { - XRenderCompositeTrapezoids(nxagentDisplay, - op, - nxagentPicturePriv(pSrc) -> picture, -@@ -1807,13 +1799,8 @@ FIXME: Is this useful or just a waste of - pForm, - xSrc, - ySrc, -- (XTrapezoid *) current, -- (remaining > TRAPEZOIDS_PER_REQUEST ? -- TRAPEZOIDS_PER_REQUEST : remaining)); -+ (XTrapezoid *) current,remaining); - -- remaining -= TRAPEZOIDS_PER_REQUEST; -- current += TRAPEZOIDS_PER_REQUEST; -- } - - #endif - diff --git a/debian/patches/1500_all_propagate-optflags-to-subcompone.full.patch b/debian/patches/1500_all_propagate-optflags-to-subcompone.full.patch deleted file mode 100644 index ae23a9822..000000000 --- a/debian/patches/1500_all_propagate-optflags-to-subcompone.full.patch +++ /dev/null @@ -1,254 +0,0 @@ -commit d650a0b47eadeb675e2d2cf03ad10a4dbc564971 -Author: Mike Gabriel <mike.gabriel@das-netzwerkteam.de> -Date: Thu Jun 23 14:27:15 2016 +0200 - -OPTFLAGS: Properly propagate build option flags to nxcomp{,ext,shad} and the nx-X11 build scripts. - - Note: - - - The "normal" way to inject CFLAGS (and CPPFLAGS) into nx-X11 builds is copying those - options over into the variable CDEBUGFLAGS. - - LDFLAGS have to be handed to nx-X11 via LOCAL_LDFLAGS. - - This change also includes a slight change in the nx-X11 build order. - - Old build order: - - Main Makefile: - - - [...] - - libNX_X11 - + implicitly building nxcomp - + implicitly building nxcompext - - [...] - - nxagent - + implicitly building nxcompshad - - [...] - - New build ordner: - - Main Makefile: - - - [...] - - nxcomp - - setup nx-X11 build env - + cd nx-X11 && make BuildEnv - - nx-X11/lib/* - - nxcompext - - nxcompshad - - [...] - - nxagent - - [...] - - Fixes ArcticaProject/nx-libs#141 - Fixes X2GoBTS#84 - - Backported from Arctica GH 3.6.x branch. - - v2: backport to nx-libs 3.5.0.x (Mihai Moldovan) ---- a/nx-X11/lib/X11/Imakefile -+++ b/nx-X11/lib/X11/Imakefile -@@ -1148,44 +1148,6 @@ includes:: ks_tables.h - - CONFIGURE ?= ./configure - --#if NXLibraries -- --$(NX_XCOMPCONFIGTARGET): -- cd ../../../nxcomp && \ -- ${CONFIGURE} -- --$(NX_XCOMPEXTCONFIGTARGET): -- cd ../../../nxcompext && \ -- ${CONFIGURE} -- --#ifdef SunArchitecture --$(NX_XCOMPLIBTARGET): $(NX_XCOMPCONFIGTARGET) -- ${MAKE} -C $(NX_XCOMPLIBDIR) -- --$(NX_XCOMPEXTLIBTARGET): $(NX_XCOMPEXTCONFIGTARGET) -- ${MAKE} -C ../../../nxcompext -- --#else --$(NX_XCOMPLIBTARGET): $(NX_XCOMPCONFIGTARGET) -- ${MAKE} -C $(NX_XCOMPLIBDIR) -- --$(NX_XCOMPEXTLIBTARGET): $(NX_XCOMPEXTCONFIGTARGET) $(NX_XCOMPLIBTARGET) lib$(LIBNAME).so.$(SOXLIBREV) -- ${MAKE} -C ../../../nxcompext -- --#endif -- --depend:: -- --lib$(LIBNAME).so.$(SOXLIBREV): $(NX_XCOMPLIBTARGET) -- --all:: $(NX_XCOMPLIBTARGET) -- --depend:: $(NX_XCOMPLIBTARGET) -- --all:: $(NX_XCOMPEXTLIBTARGET) -- --#endif -- - depend:: ks_tables.h - - clean:: ---- a/nx-X11/Makefile -+++ b/nx-X11/Makefile -@@ -56,6 +56,18 @@ World: - ;; esac; - @date - @echo "" -+ if [ ! -f xmakefile ]; then ${MAKE} ${MFLAGS} BuildEnv; fi -+ ${MAKE} ${MAKE_OPTS} $(MFLAGS) $(WORLDOPTS) World -+ @echo "" -+ @date -+ @echo "" -+ @-$(RM) $(VERSPROG) -+ @-$(CC) $(VERSINC) -o $(VERSPROG) $(VERSSRC) -+ @echo Full build of $(RELEASE) complete. -+ @-$(RM) $(VERSPROG) -+ @echo "" -+ -+BuildEnv: - @if [ -f xmakefile ]; then \ - ${MAKE} ${MAKE_OPTS} -k distclean || \ - ${MAKE} ${MAKE_OPTS} -k clean || \ -@@ -91,15 +103,6 @@ World: - ${MAKE} ${MAKE_OPTS} $(MFLAGS) BOOTSTRAPSUBDIRS= clean - ${MAKE} ${MAKE_OPTS} $(MFLAGS) includes - ${MAKE} ${MAKE_OPTS} $(MFLAGS) depend -- ${MAKE} ${MAKE_OPTS} $(MFLAGS) $(WORLDOPTS) World -- @echo "" -- @date -- @echo "" -- @-$(RM) $(VERSPROG) -- @-$(CC) $(VERSINC) -o $(VERSPROG) $(VERSSRC) -- @echo Full build of $(RELEASE) complete. -- @-$(RM) $(VERSPROG) -- @echo "" - - .PRECIOUS: Makefile - ---- a/nx-X11/programs/Xserver/Imakefile -+++ b/nx-X11/programs/Xserver/Imakefile -@@ -1035,27 +1035,7 @@ NX_XSHADOWLIBNAME = cygXcompshad.dll - NX_XSHADOWLIBNAME = libXcompshad.so - #endif - --NX_XSHADOWLIBDIR = $(XTOP)/../nxcompshad --NX_XSHADOWLIBTARGET = $(NX_XSHADOWLIBDIR)/$(NX_XSHADOWLIBNAME) --NX_XSHADOWCONFIGTARGET = $(NX_XSHADOWLIBDIR)/config.status -- --CONFIGURE ?= ./configure -- --$(NX_XSHADOWCONFIGTARGET): -- cd $(NX_XSHADOWLIBDIR) && \ -- ${CONFIGURE} -- --#ifdef SunArchitecture --$(NX_XSHADOWLIBTARGET): $(NX_XSHADOWCONFIGTARGET) -- cd $(NX_XSHADOWLIBDIR) && \ -- ${MAKE} --#else --$(NX_XSHADOWLIBTARGET): $(NX_XSHADOWCONFIGTARGET) -- cd $(NX_XSHADOWLIBDIR) && \ -- rm -f *.o && ${MAKE} --#endif -- --ServerTarget(nxagent,$(NX_XSHADOWLIBTARGET) $(NXAGENTDIRS),$(NXAGENTOBJS), \ -+ServerTarget(nxagent,$(NXAGENTDIRS),$(NXAGENTOBJS), \ - $(LIBCWRAPPER) $(NXAGENTLIBS) $(LOADABLEEXTS),$(NXAGENTSYSLIBS) $(NXAGENTNXLIBS)) - - /* ---- a/nxcompext/Makefile.in -+++ b/nxcompext/Makefile.in -@@ -34,6 +34,8 @@ CXXFLAGS = @CXXFLAGS@ @X_CFLAGS@ @DEF - CXXINCLUDES = -I. -I../nxcomp - CXXDEFINES = - -+CPPFLAGS = @CPPFLAGS@ -+ - CC = @CC@ - CCFLAGS = @CFLAGS@ @X_CFLAGS@ @DEFS@ \ - -Wall -Wpointer-arith -Wstrict-prototypes -Wmissing-prototypes \ -@@ -75,9 +77,9 @@ DEPENDINCLUDES = -I/usr/include/c++ -I/ - .SUFFIXES: .cpp.c - - .cpp.o: -- $(CXX) -c $(CXXFLAGS) $(CXXINCLUDES) $< -+ $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) $(CXXINCLUDES) $< - .c.o: -- $(CC) -c $(CCFLAGS) $(CCINCLUDES) $< -+ $(CC) -c $(CPPFLAGS) $(CCFLAGS) $(CCINCLUDES) $< - - LIBRARY = Xcompext - ---- a/nxcompext/configure.in -+++ b/nxcompext/configure.in -@@ -7,8 +7,12 @@ AC_PREREQ(2.13) - - dnl Reset default compilation flags. - --CXXFLAGS="$CXXFLAGS -O3" --CFLAGS="$CFLAGS -O3" -+if test "x$CXXFLAGS" = "x"; then -+ CXXFLAGS="-O3" -+fi -+if test "x$CFLAGS" == "x"; then -+ CFLAGS="-O3" -+fi - - dnl Reset default linking directives. - ---- a/nxcompshad/Makefile.in -+++ b/nxcompshad/Makefile.in -@@ -36,6 +36,8 @@ CXXFLAGS = @CXXFLAGS@ @X_CFLAGS@ @DEF - CXXINCLUDES = - CXXDEFINES = - -+CPPFLAGS = @CPPFLAGS@ -+ - # - # C programs don't share the C++ flags. They should - # have their own @CCFLAGS@. -@@ -96,9 +98,9 @@ DEPENDINCLUDES = -I/usr/include/g++ -I/u - .SUFFIXES: .cpp.c - - .cpp.o: -- $(CXX) -c $(CXXFLAGS) $(CXXINCLUDES) $(CXXDEFINES) $< -+ $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) $(CXXINCLUDES) $(CXXDEFINES) $< - .c.o: -- $(CC) -c $(CCFLAGS) $(CCINCLUDES) $(CCDEFINES) $< -+ $(CC) -c $(CPPFLAGS) $(CCFLAGS) $(CCINCLUDES) $(CCDEFINES) $< - - LIBRARY = Xcompshad - ---- a/nxcompshad/configure.in -+++ b/nxcompshad/configure.in -@@ -7,8 +7,12 @@ AC_PREREQ(2.13) - - dnl Reset default compilation flags. - --CXXFLAGS="$CXXFLAGS -O3" --CPPFLAGS="$CPPFLAGS -O3" -+if test "x$CXXFLAGS" == "x"; then -+ CXXFLAGS="-O3" -+fi -+if test "x$CPPFLAGS" == "x"; then -+ CPPFLAGS="-O3" -+fi - - dnl Reset default linking directives. - -@@ -77,8 +81,8 @@ case "${gcc_version}" in - - *) - AC_MSG_RESULT([yes]) -- CXXFLAGS="$CXXFLAGS -Wmissing-declarations -Wnested-externs" -- CPPFLAGS="$CPPFLAGS -Wmissing-declarations -Wnested-externs" -+ CXXFLAGS="$CXXFLAGS -Wmissing-declarations" -+ CPPFLAGS="$CPPFLAGS -Wmissing-declarations" - ;; - esac - diff --git a/debian/patches/1510_all_propagate-optflags-to-subcompone.full+lite.patch b/debian/patches/1510_all_propagate-optflags-to-subcompone.full+lite.patch deleted file mode 100644 index 6acd9804c..000000000 --- a/debian/patches/1510_all_propagate-optflags-to-subcompone.full+lite.patch +++ /dev/null @@ -1,105 +0,0 @@ -commit d650a0b47eadeb675e2d2cf03ad10a4dbc564971 -Author: Mike Gabriel <mike.gabriel@das-netzwerkteam.de> -Date: Thu Jun 23 14:27:15 2016 +0200 - -OPTFLAGS: Properly propagate build option flags to nxcomp{,ext,shad} and the nx-X11 build scripts. - - Note: - - - The "normal" way to inject CFLAGS (and CPPFLAGS) into nx-X11 builds is copying those - options over into the variable CDEBUGFLAGS. - - LDFLAGS have to be handed to nx-X11 via LOCAL_LDFLAGS. - - This change also includes a slight change in the nx-X11 build order. - - Old build order: - - Main Makefile: - - - [...] - - libNX_X11 - + implicitly building nxcomp - + implicitly building nxcompext - - [...] - - nxagent - + implicitly building nxcompshad - - [...] - - New build ordner: - - Main Makefile: - - - [...] - - nxcomp - - setup nx-X11 build env - + cd nx-X11 && make BuildEnv - - nx-X11/lib/* - - nxcompext - - nxcompshad - - [...] - - nxagent - - [...] - - Fixes ArcticaProject/nx-libs#141 - Fixes X2GoBTS#84 - - Backported from Arctica GH 3.6.x branch. - - v2: backport to nx-libs 3.5.0.x (Mihai Moldovan) ---- a/nxcomp/Makefile.in -+++ b/nxcomp/Makefile.in -@@ -41,6 +41,8 @@ CXXFLAGS = @CXXFLAGS@ @X_CFLAGS@ @DEF - CXXINCLUDES = - CXXDEFINES = - -+CPPFLAGS = @CPPFLAGS@ -+ - # - # C programs have their own CFLAGS. - # -@@ -84,9 +86,9 @@ DEPENDINCLUDES = -I/usr/include/c++ -I/u - .SUFFIXES: .cpp.c - - .cpp.o: -- $(CXX) -c $(CXXFLAGS) $(CXXINCLUDES) $(CXXDEFINES) $< -+ $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) $(CXXINCLUDES) $(CXXDEFINES) $< - .c.o: -- $(CC) -c $(CCFLAGS) $(CCINCLUDES) $(CCDEFINES) $< -+ $(CC) -c $(CPPFLAGS) $(CCFLAGS) $(CCINCLUDES) $(CCDEFINES) $< - - LIBRARY = Xcomp - ---- a/nxcomp/configure.in -+++ b/nxcomp/configure.in -@@ -7,8 +7,12 @@ AC_PREREQ(2.13) - - dnl Set our default compilation flags. - --CXXFLAGS="$CXXFLAGS -O3 -fno-rtti -fno-exceptions" --CFLAGS="$CFLAGS -O3" -+if test "x$CXXFLAGS" = "x"; then -+ CXXFLAGS="-O3 -fno-rtti -fno-exceptions" -+fi -+if test "x$CFLAGS" = "x"; then -+ CFLAGS="$CFLAGS -O3" -+fi - - dnl Reset default linking directives. - ---- a/nxproxy/configure.in -+++ b/nxproxy/configure.in -@@ -7,8 +7,12 @@ AC_PREREQ(2.13) - - dnl Reset default compilation flags. - --CXXFLAGS="$CXXFLAGS -O3" --CPPFLAGS="$CPPFLAGS -O3" -+if test "x$CXXFLAGS" == "x"; then -+ CXXFLAGS="-O3" -+fi -+if test "x$CPPFLAGS" == "x"; then -+ CPPFLAGS="-O3" -+fi - - dnl Prefer headers and libraries from nx-X11 if present. - diff --git a/debian/patches/1600_nxcomp-handle-launchd-socket-in-Auth.full+lite.patch b/debian/patches/1600_nxcomp-handle-launchd-socket-in-Auth.full+lite.patch deleted file mode 100644 index d9726dc39..000000000 --- a/debian/patches/1600_nxcomp-handle-launchd-socket-in-Auth.full+lite.patch +++ /dev/null @@ -1,60 +0,0 @@ -From bd25453bd41957079c7516adf407b8785ef22f1f Mon Sep 17 00:00:00 2001 -From: Mihai Moldovan <ionic@ionic.de> -Date: Fri, 3 Nov 2017 12:30:12 +0100 -Subject: [PATCH] nxcomp/src/Auth.cpp: handle launchd sockets in DISPLAY - variable correctly when fetching X cookie. - -Backported from Arctica GH 3.6.x branch. - -v2: backport to nx-libs 3.5.0.x (Mihai Moldovan) ---- - nxcomp/src/Auth.cpp | 26 +++++++++++++++++++++++--- - 1 file changed, 23 insertions(+), 3 deletions(-) - ---- a/nxcomp/Auth.cpp -+++ b/nxcomp/Auth.cpp -@@ -267,11 +267,33 @@ int Auth::getCookie() - // - - char line[DEFAULT_STRING_LIMIT]; -+ FILE *data = NULL; -+ int result = -1; - - if (strncmp(display_, "localhost:", 10) == 0) - { - snprintf(line, DEFAULT_STRING_LIMIT, "unix:%s", display_ + 10); - } -+ else if ((0 == strncasecmp(display_, "/tmp/launch", 11)) || (0 == strncasecmp(display_, "/private/tmp/com.apple.launchd", 30))) -+ { -+ /* -+ * Launchd socket support, mostly for OS X, but maybe also other BSD derivates. -+ */ -+ const char *separator = strrchr(display_, ':'); -+ -+ if ((NULL == separator) || (!isdigit(*(separator + 1)))) -+ { -+ #ifdef PANIC -+ *logofs << "Auth: PANIC! Unable to find separating colon character '" -+ << "in launchd socket path '" << display_ -+ << "'.\n" << logofs_flush; -+ #endif -+ -+ goto AuthGetCookieResult; -+ } -+ -+ snprintf(line, DEFAULT_STRING_LIMIT, "unix:%s", separator + 1); -+ } - else - { - snprintf(line, DEFAULT_STRING_LIMIT, "%.200s", display_); -@@ -304,9 +326,7 @@ int Auth::getCookie() - // implementation. - // - -- FILE *data = Popen((char *const *) parameters, "r"); -- -- int result = -1; -+ data = Popen((char *const *) parameters, "r"); - - if (data == NULL) - { diff --git a/debian/patches/1610_nxcomp-harcode-some-UNIX-socket-path.full+lite.patch b/debian/patches/1610_nxcomp-harcode-some-UNIX-socket-path.full+lite.patch deleted file mode 100644 index d6b5ec132..000000000 --- a/debian/patches/1610_nxcomp-harcode-some-UNIX-socket-path.full+lite.patch +++ /dev/null @@ -1,60 +0,0 @@ -From db1c2fbc5aaace3443cdecf4a1e34644f8f5f1fc Mon Sep 17 00:00:00 2001 -From: Mihai Moldovan <ionic@ionic.de> -Date: Fri, 3 Nov 2017 12:57:25 +0100 -Subject: [PATCH] nxcomp/src/Loop.cpp: hardcode X11 and (legacy/xfs) font UNIX - paths. - -Fixes: ArcticaProject/nx-libs#536 - -Allowing overrides via NX_TEMP and TEMP breaks system using -pam_tmpdir.so and most server infrastructure expects the location to be -fixed anyway. - -Backported from Arctica GH 3.6.x branch. - -v2: backport to nx-libs 3.5.0.x (Mihai Moldovan) ---- - nxcomp/src/Loop.cpp | 18 +++++------------- - 1 file changed, 5 insertions(+), 13 deletions(-) - ---- a/nxcomp/Loop.cpp -+++ b/nxcomp/Loop.cpp -@@ -4029,8 +4029,7 @@ int SetupUnixSocket() - - char dirName[DEFAULT_STRING_LENGTH]; - -- snprintf(dirName, DEFAULT_STRING_LENGTH - 1, "%s/.X11-unix", -- control -> TempPath); -+ snprintf(dirName, DEFAULT_STRING_LENGTH - 1, "/tmp/.X11-unix"); - - *(dirName + DEFAULT_STRING_LENGTH - 1) = '\0'; - -@@ -4295,8 +4294,7 @@ int SetupDisplaySocket(int &xServerAddrF - - char unixSocketDir[DEFAULT_STRING_LENGTH]; - -- snprintf(unixSocketDir, DEFAULT_STRING_LENGTH - 1, "%s/.X11-unix", -- control -> TempPath); -+ snprintf(unixSocketDir, DEFAULT_STRING_LENGTH - 1, "/tmp/.X11-unix"); - - #ifdef __APPLE__ - -@@ -13761,14 +13759,14 @@ int ParseFontPath(char *path) - - // - // Let's assume that a port specification "unix/:7100" -- // corresponds to "$TEMP/.font-unix/fs7100" and a port -- // "unix/:-1" corresponds to "$TEMP/.font-unix/fs-1". -+ // corresponds to "/tmp/.font-unix/fs7100" and a port -+ // "unix/:-1" corresponds to "/tmp/.font-unix/fs-1". - // - - if (strncmp("unix/:", path, 6) == 0) - { -- snprintf(path, DEFAULT_STRING_LENGTH - 1, "%s/.font-unix/fs%s", -- control -> TempPath, oldPath + 6); -+ snprintf(path, DEFAULT_STRING_LENGTH - 1, "/tmp/.font-unix/fs%s", -+ oldPath + 6); - - *(path + DEFAULT_STRING_LENGTH - 1) = '\0'; - diff --git a/debian/patches/2001_nx-X11_install-location.debian.patch b/debian/patches/2001_nx-X11_install-location.debian.patch new file mode 100644 index 000000000..f71b0ace2 --- /dev/null +++ b/debian/patches/2001_nx-X11_install-location.debian.patch @@ -0,0 +1,37 @@ +Description: FHS adaptation for Debian packaging + On Debian, NX libraries and binaries are installed to + /usr/lib/nx. +Forwarded: not-needed +Author: Mike Gabriel <mike.gabriel@das-netzwerkteam.de> +Last-Update: 2012-12-31 +--- a/nx-X11/config/cf/Imake.tmpl ++++ b/nx-X11/config/cf/Imake.tmpl +@@ -722,7 +722,7 @@ + #define AlternateUsrLibDir YES + #endif + #else +-#define UsrLibDir Concat4(/usr/local,/,LibDirName,/nx/X11) ++#define UsrLibDir Concat4(/usr,/,LibDirName,/nx/X11) + #ifndef AlternateUsrLibDir + #define AlternateUsrLibDir NO + #endif +@@ -740,7 +740,7 @@ + #define AlternateUsrDataDir YES + #endif + #else +-#define UsrDataDir Concat4(/usr/local,/,share,/nx) ++#define UsrDataDir Concat4(/usr,/,share,/nx) + #ifndef AlternateUsrDataDir + #define AlternateUsrDataDir NO + #endif +--- a/nx-X11/config/cf/site.def ++++ b/nx-X11/config/cf/site.def +@@ -69,7 +69,7 @@ + #ifdef AfterVendorCF + + #ifndef ProjectRoot +-#define ProjectRoot /usr/local ++#define ProjectRoot /usr + #endif + + /* diff --git a/debian/patches/0102_xserver-xext_set-securitypolicy-path.debian.patch b/debian/patches/2002_xserver-xext_set-securitypolicy-path.debian.patch index a62fd3212..b3186a9b4 100644 --- a/debian/patches/0102_xserver-xext_set-securitypolicy-path.debian.patch +++ b/debian/patches/2002_xserver-xext_set-securitypolicy-path.debian.patch @@ -8,7 +8,7 @@ Author: Mike Gabriel <mike.gabriel@das-netzwerkteam.de> Last-Update: 2012-01-12 --- a/nx-X11/programs/Xserver/Xext/security.c +++ b/nx-X11/programs/Xserver/Xext/security.c -@@ -86,7 +86,7 @@ extern unsigned char LbxReqCode; +@@ -84,7 +84,7 @@ #ifdef NXAGENT_SERVER diff --git a/debian/patches/9900-dxpc-license-history.full+lite.patch b/debian/patches/9900-dxpc-license-history.full+lite.patch deleted file mode 100644 index 0eab1b5ae..000000000 --- a/debian/patches/9900-dxpc-license-history.full+lite.patch +++ /dev/null @@ -1,4162 +0,0 @@ -From 1f44331574bdbe4069d13e4c26df18094b49e658 Mon Sep 17 00:00:00 2001 -From: Mike Gabriel <mike.gabriel@das-netzwerkteam.de> -Date: Thu, 21 May 2015 12:25:13 +0200 -Subject: [PATCH 3/3] Document retroactive re-licensing of the original DXPC - code (closes #30). - - * Update nxcomp/LICENSE. - * Add nxcomp/README.on-retroactive-DXPC-license, giving a - short overview of the flow of discussions - * Add "modified or unmodified" to the license information - printed out to stdout in nxcomp/Misc.cpp - * Fix copyright year (2006->2003) for Gian Filippo Pinzari - (and move him to the GPL-2 section). - * Add the complete .mbox file of Debian bug #748565. ---- - doc/DXPC_re-licensed::debbug_784565.mbox | 3769 +++++++++++++++++++++++++++++ - nxcomp/LICENSE | 59 +- - nxcomp/Misc.cpp | 6 +- - nxcomp/README.on-retroactive-DXPC-license | 269 ++ - 4 files changed, 4097 insertions(+), 6 deletions(-) - create mode 100644 doc/DXPC_re-licensed::debbug_784565.mbox - create mode 100644 nxcomp/README.on-retroactive-DXPC-license - ---- /dev/null -+++ b/doc/DXPC_re-licensed::debbug_784565.mbox -@@ -0,0 +1,3769 @@ -+From invernomuto@paranoici.org Wed May 06 17:36:12 2015 -+Received: (at submit) by bugs.debian.org; 6 May 2015 17:36:12 +0000 -+X-Spam-Checker-Version: SpamAssassin 3.4.0-bugs.debian.org_2005_01_02 -+ (2014-02-07) on buxtehude.debian.org -+X-Spam-Level: -+X-Spam-Status: No, score=-12.0 required=4.0 tests=BAYES_00,DKIM_SIGNED, -+ DKIM_VALID,DKIM_VALID_AU,FOURLA,HAS_PACKAGE,SPF_HELO_PASS,SPF_PASS, -+ XMAILER_REPORTBUG autolearn=ham autolearn_force=no -+ version=3.4.0-bugs.debian.org_2005_01_02 -+X-Spam-Bayes: score:0.0000 Tokens: new, 12; hammy, 150; neutral, 79; spammy, -+ 0. spammytokens: hammytokens:0.000-+--H*M:reportbug, 0.000-+--H*MI:reportbug, -+ 0.000-+--H*x:reportbug, 0.000-+--H*UA:reportbug, 0.000-+--H*x:6.6.3 -+Return-path: <invernomuto@paranoici.org> -+Received: from perdizione.investici.org ([94.23.50.208]) -+ by buxtehude.debian.org with esmtps (TLS1.2:DHE_RSA_AES_256_CBC_SHA256:256) -+ (Exim 4.80) -+ (envelope-from <invernomuto@paranoici.org>) -+ id 1Yq3Ex-0001dB-Ks -+ for submit@bugs.debian.org; Wed, 06 May 2015 17:36:11 +0000 -+Received: from [94.23.50.208] (perdizione [94.23.50.208]) (Authenticated sender: invernomuto@paranoici.org) by localhost (Postfix) with ESMTPSA id 3987C120F77; -+ Wed, 6 May 2015 17:36:07 +0000 (UTC) -+DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=paranoici.org; -+ s=stigmate; t=1430933767; -+ bh=QAdaIheSnzoHI301+0HPUrAK62wjbKWg7iWEzGzlOTs=; -+ h=From:To:Subject:Date; -+ b=X/2YGWFWL2KRAVqONR2Q6Q6HuMii+1WfGCbSpf8XvQesaf7qWlvY2u1IVKgKVpN2m -+ Baq+3OrQ1adlmdHQQJm7tLfv37vRZVNOUpP3lyKQX4v3B/Gos63+1GqfyJ7qGkvQha -+ 4qwytZrPI20VmUswHf7qhgSGIVQmy0COEZZX0PF8= -+Received: from frx by homebrew with local (Exim 4.85) -+ (envelope-from <invernomuto@paranoici.org>) -+ id 1Yq3EK-0001ye-Bx; Wed, 06 May 2015 19:35:32 +0200 -+Content-Type: text/plain; charset="us-ascii" -+MIME-Version: 1.0 -+Content-Transfer-Encoding: 7bit -+From: "Francesco Poli \(wintermute\)" <invernomuto@paranoici.org> -+To: Debian Bug Tracking System <submit@bugs.debian.org> -+Subject: nx-libs-lite: parts are derived from non-free code -+Message-ID: <20150506173532.7531.31389.reportbug@homebrew> -+X-Mailer: reportbug 6.6.3 -+Date: Wed, 06 May 2015 19:35:32 +0200 -+Delivered-To: submit@bugs.debian.org -+ -+Package: nx-libs-lite -+Version: 3.5.0.27-1 -+Severity: serious -+Justification: Policy 2.2.1 -+ -+Hello and thanks for maintaining this package in Debian! -+ -+I noticed that the debian/copyright states: -+ -+[...] -+| Parts of this software are derived from DXPC project. These copyright -+| notices apply to original DXPC code: -+| -+| Redistribution and use in source and binary forms are permitted provided -+| that the above copyright notice and this paragraph are duplicated in all -+| such forms. -+| -+| THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED -+| WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF -+| MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. -+| -+| Copyright (c) 1995,1996 Brian Pane -+| Copyright (c) 1996,1997 Zachary Vonler and Brian Pane -+| Copyright (c) 1999 Kevin Vigor and Brian Pane -+| Copyright (c) 2000,2001 Gian Filippo Pinzari and Brian Pane -+[...] -+ -+This license lacks the permission to modify the DXPC code. -+Hence, the original DXPC code does not appear to comply with the -+DFSG. And the nx-libs-lite is in part derived from DXPC code. -+ -+This basically means that nx-libs-lite includes parts which are -+non-free (as they are derived from non-modifiable code) and -+are also possibly legally undistributable (as they are non-modifiable, -+but actually modified). The combination with the rest of nx-libs-lite -+(which is GPL-licensed) may also be legally undistributable (since -+the license with no permission to modify is GPL-incompatible). -+ -+ -+If there's anything I misunderstood, please clarify. -+ -+Otherwise, please address this issue as soon as possible. -+The copyright owners for the original DXPC code should be -+contacted and persuaded to re-license under GPL-compatible -+terms. -+ -+Thanks for your time. -+Bye. -+ -+ -+ -+From mike.gabriel@das-netzwerkteam.de Mon May 11 09:07:54 2015 -+Received: (at 784565) by bugs.debian.org; 11 May 2015 09:07:54 +0000 -+X-Spam-Checker-Version: SpamAssassin 3.4.0-bugs.debian.org_2005_01_02 -+ (2014-02-07) on buxtehude.debian.org -+X-Spam-Level: -+X-Spam-Status: No, score=-11.9 required=4.0 tests=BAYES_00,FOURLA, -+ HAS_BUG_NUMBER,PGPSIGNATURE,T_RP_MATCHES_RCVD autolearn=ham -+ autolearn_force=no version=3.4.0-bugs.debian.org_2005_01_02 -+X-Spam-Bayes: score:0.0000 Tokens: new, 24; hammy, 150; neutral, 203; spammy, -+ 0. spammytokens: hammytokens:0.000-+--H*c:pgp-signature, -+ 0.000-+--H*c:protocol, 0.000-+--H*c:micalg, 0.000-+--H*c:signed, -+ 0.000-+--H*RU:sk:grimnir -+Return-path: <mike.gabriel@das-netzwerkteam.de> -+Received: from freya.das-netzwerkteam.de ([88.198.48.199]) -+ by buxtehude.debian.org with esmtps (TLS1.1:DHE_RSA_AES_256_CBC_SHA1:256) -+ (Exim 4.80) -+ (envelope-from <mike.gabriel@das-netzwerkteam.de>) -+ id 1Yrjgn-0001o6-MP -+ for 784565@bugs.debian.org; Mon, 11 May 2015 09:07:54 +0000 -+Received: from grimnir.das-netzwerkteam.de (grimnir.das-netzwerkteam.de [78.46.204.98]) -+ by freya.das-netzwerkteam.de (Postfix) with ESMTPS id 85F37E4B; -+ Mon, 11 May 2015 11:07:49 +0200 (CEST) -+Received: from localhost (localhost [127.0.0.1]) -+ by grimnir.das-netzwerkteam.de (Postfix) with ESMTP id F1CFF3C20D; -+ Mon, 11 May 2015 11:07:48 +0200 (CEST) -+X-Virus-Scanned: Debian amavisd-new at grimnir.das-netzwerkteam.de -+Received: from grimnir.das-netzwerkteam.de ([127.0.0.1]) -+ by localhost (grimnir.das-netzwerkteam.de [127.0.0.1]) (amavisd-new, port 10024) -+ with ESMTP id wKYnujH8-HJ8; Mon, 11 May 2015 11:07:48 +0200 (CEST) -+Received: from grimnir.das-netzwerkteam.de (localhost [127.0.0.1]) -+ by grimnir.das-netzwerkteam.de (Postfix) with ESMTPS id 960E33C18A; -+ Mon, 11 May 2015 11:07:48 +0200 (CEST) -+Received: from bifrost.das-netzwerkteam.de (bifrost.das-netzwerkteam.de -+ [178.62.101.154]) by mail.das-netzwerkteam.de (Horde Framework) with HTTP; -+ Mon, 11 May 2015 09:07:48 +0000 -+Date: Mon, 11 May 2015 09:07:48 +0000 -+Message-ID: <20150511090748.Horde.Edus-FOfuc519TjISGi1vQ2@mail.das-netzwerkteam.de> -+From: Mike Gabriel <mike.gabriel@das-netzwerkteam.de> -+To: "Francesco Poli (wintermute)" <invernomuto@paranoici.org>, -+ 784565@bugs.debian.org -+Cc: x2go-dev@lists.x2go.org, Nito Martinez <nito.martinez@qindel.com>, -+ opensource@gznianguan.com, dktrkranz@debian.org -+Subject: Re: [pkg-x2go-devel] Bug#784565: nx-libs-lite: parts are derived -+ from non-free code -+In-Reply-To: <20150506173532.7531.31389.reportbug@homebrew> -+User-Agent: Internet Messaging Program (IMP) H5 (6.2.2) -+Accept-Language: de,en -+Organization: DAS-NETZWERKTEAM -+X-Originating-IP: 178.62.101.154 -+X-Remote-Browser: Mozilla/5.0 (X11; Linux x86_64; rv:32.0) Gecko/20100101 -+ Firefox/32.0 Iceweasel/32.0 -+Content-Type: multipart/signed; boundary="=_ALb-1vQm6P3YAYx12TU2SQ1"; -+ protocol="application/pgp-signature"; micalg=pgp-sha1 -+MIME-Version: 1.0 -+ -+This message is in MIME format and has been PGP signed. -+ -+--=_ALb-1vQm6P3YAYx12TU2SQ1 -+Content-Type: text/plain; charset=us-ascii; format=flowed; DelSp=Yes -+Content-Disposition: inline -+Content-Transfer-Encoding: quoted-printable -+ -+Hi Francesco, -+Cc:ing a couple of people/groups being affected by the below. -+ -+On Mi 06 Mai 2015 19:35:32 CEST, Francesco Poli (wintermute) wrote: -+ -+> Package: nx-libs-lite -+> Version: 3.5.0.27-1 -+> Severity: serious -+> Justification: Policy 2.2.1 -+> -+> Hello and thanks for maintaining this package in Debian! -+> -+> I noticed that the debian/copyright states: -+> -+> [...] -+> | Parts of this software are derived from DXPC project. These copyright -+> | notices apply to original DXPC code: -+> | -+> | Redistribution and use in source and binary forms are permitted prov= -+ided -+> | that the above copyright notice and this paragraph are duplicated in= -+ all -+> | such forms. -+> | -+> | THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLI= -+ED -+> | WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF -+> | MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. -+> | -+> | Copyright (c) 1995,1996 Brian Pane -+> | Copyright (c) 1996,1997 Zachary Vonler and Brian Pane -+> | Copyright (c) 1999 Kevin Vigor and Brian Pane -+> | Copyright (c) 2000,2001 Gian Filippo Pinzari and Brian Pane -+> [...] -+> -+> This license lacks the permission to modify the DXPC code. -+> Hence, the original DXPC code does not appear to comply with the -+> DFSG. And the nx-libs-lite is in part derived from DXPC code. -+> -+> This basically means that nx-libs-lite includes parts which are -+> non-free (as they are derived from non-modifiable code) and -+> are also possibly legally undistributable (as they are non-modifiable, -+> but actually modified). The combination with the rest of nx-libs-lite -+> (which is GPL-licensed) may also be legally undistributable (since -+> the license with no permission to modify is GPL-incompatible). -+> -+> -+> If there's anything I misunderstood, please clarify. -+> -+> Otherwise, please address this issue as soon as possible. -+> The copyright owners for the original DXPC code should be -+> contacted and persuaded to re-license under GPL-compatible -+> terms. -+> -+> Thanks for your time. -+> Bye. -+ -+I/we will investigate this asap. Thanks for bringing this up. -+ -+Greets, -+Mike -+--=20 -+ -+DAS-NETZWERKTEAM -+mike=20gabriel, herweg 7, 24357 fleckeby -+fon: +49 (1520) 1976 148 -+ -+GnuPG Key ID 0x25771B31 -+mail: mike.gabriel@das-netzwerkteam.de, http://das-netzwerkteam.de -+ -+freeBusy: -+https://mail.das-netzwerkteam.de/freebusy/m.gabriel%40das-netzwerkteam.de.x= -+fb -+ -+--=_ALb-1vQm6P3YAYx12TU2SQ1 -+Content-Type: application/pgp-signature -+Content-Description: Digitale PGP-Signatur -+Content-Disposition: inline -+ -+-----BEGIN PGP SIGNATURE----- -+Version: GnuPG v1 -+ -+iQIcBAABAgAGBQJVUHFkAAoJEJr0azAldxsxbNYP/jqxwacIBSYlAhaZEf62JFtt -+ObBSEqUQfjljkolnzeaf2K4lBT6dl1x9VxGvIM5S8y9H/qpbFW+XWNHIR1BpdAsw -+TgKuqb6giM+28V9pMaHuqwPwMQ7YnFsfSKf/YCEs0AvJJKsf5jSUbeHAJ/RHwC4Z -+iGOj/KRqQ3tqIZJbzV2TCMNYnPm4sttcvKcRIOnBLDEVn1CRhlYX93v/pP87iPok -+wvvnbPpM+D2oq1JjS6mR2JbVHspc9/ZGq5I100Cdo5r3Y3upunNyG4IRCL0ttBzg -+nRjEiktViU/hhBB2xjYRaDsEpRFSsOeItLWss2PNYER2uIYuimvUsJzhtj7IwsV8 -+4J8wlvn0uRZRiQwSWI/UaL1r1eqI4AlMA4hzDnWR7cBB4nTNE6YWzTpYYhsqNVfJ -+jURTKIwGzDVVcpU5UZZhEtPcD5utkd8eYn4fA68pvkje3OFpLjfQnFWUcjIn5ywb -+mejuW08cnsdfB0he+NTFXpK4p4wiu92pqul/EqPKW3Dm1w7FZXPHpIkN6VQ03LdY -+kSXOOpITg8cHESsHlvyKIZITaLDrNAPB4RHkRxyWhRpZWgEM35FasE6hIRTbszQ9 -+jpuXcrG11L7HbITi599U8ZAo4qK9OgWfzJEsBdQKXBHEqCjiv4GvdXvgJyR2Eukp -+OIldtig78B5JgGKDLKjY -+=G+R6 -+-----END PGP SIGNATURE----- -+ -+--=_ALb-1vQm6P3YAYx12TU2SQ1-- -+ -+ -+ -+ -+From X2Go-ML-1@baur-itcs.de Mon May 11 09:21:13 2015 -+Received: (at 784565) by bugs.debian.org; 11 May 2015 09:21:13 +0000 -+X-Spam-Checker-Version: SpamAssassin 3.4.0-bugs.debian.org_2005_01_02 -+ (2014-02-07) on buxtehude.debian.org -+X-Spam-Level: -+X-Spam-Status: No, score=-9.4 required=4.0 tests=BAYES_00,DIGITS_LETTERS, -+ FOURLA,FVGT_m_MULTI_ODD,HAS_BUG_NUMBER,MONEY,PGPSIGNATURE,RCVD_IN_DNSWL_NONE, -+ RCVD_IN_MSPIKE_H2,STOCKLIKE autolearn=ham autolearn_force=no -+ version=3.4.0-bugs.debian.org_2005_01_02 -+X-Spam-Bayes: score:0.0000 Tokens: new, 67; hammy, 149; neutral, 240; spammy, -+ 1. spammytokens:0.997-1--jjng hammytokens:0.000-+--sk:iqecbae, -+ 0.000-+--sk:iQEcBAE, 0.000-+--sha256, 0.000-+--SHA256, 0.000-+--H*UA:31.6.0 -+Return-path: <X2Go-ML-1@baur-itcs.de> -+Received: from mout.kundenserver.de ([212.227.17.10]) -+ by buxtehude.debian.org with esmtps (TLS1.2:DHE_RSA_AES_256_CBC_SHA256:256) -+ (Exim 4.80) -+ (envelope-from <X2Go-ML-1@baur-itcs.de>) -+ id 1Yrjtg-0003AA-Jy -+ for 784565@bugs.debian.org; Mon, 11 May 2015 09:21:13 +0000 -+Received: from [192.168.0.171] ([78.43.125.82]) by mrelayeu.kundenserver.de -+ (mreue102) with ESMTPSA (Nemesis) id 0MBke7-1Z2Qat2SRz-00AqUz; Mon, 11 May -+ 2015 11:20:48 +0200 -+Message-ID: <5550746E.1040707@baur-itcs.de> -+Date: Mon, 11 May 2015 11:20:46 +0200 -+From: Stefan Baur <X2Go-ML-1@baur-itcs.de> -+User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:31.0) Gecko/20100101 Thunderbird/31.6.0 -+MIME-Version: 1.0 -+To: Mike Gabriel <mike.gabriel@das-netzwerkteam.de>, -+ "Francesco Poli (wintermute)" <invernomuto@paranoici.org>, -+ 784565@bugs.debian.org -+CC: opensource@gznianguan.com, Nito Martinez <nito.martinez@qindel.com>, -+ dktrkranz@debian.org, x2go-dev@lists.x2go.org -+Subject: Re: [X2Go-Dev] [pkg-x2go-devel] Bug#784565: nx-libs-lite: parts are -+ derived from non-free code -+References: <20150511090748.Horde.Edus-FOfuc519TjISGi1vQ2@mail.das-netzwerkteam.de> -+In-Reply-To: <20150511090748.Horde.Edus-FOfuc519TjISGi1vQ2@mail.das-netzwerkteam.de> -+Content-Type: text/plain; charset=windows-1252 -+Content-Transfer-Encoding: 8bit -+X-Provags-ID: V03:K0:1hGpzbQ6YusgDW3LQNBHFEMw92BwlVIDUv6GGAN1bbqSykY6aoQ -+ ekoiYjWtMWz72yWg8Xd5/k/PEjXU7VxzZNBzxoyEx46ughI6kPZG/kS6r+aMsjf3KVXNi4U -+ da367A2ZowOeet1s6/LouBbblzzvjx7LF9SFO2TW4oakOyxhNCWEhVpveTV9FQPnavxZzhL -+ D5GN1YjxQGdnacFHIIuSQ== -+X-UI-Out-Filterresults: notjunk:1; -+ -+-----BEGIN PGP SIGNED MESSAGE----- -+Hash: SHA256 -+ -+hi everyone, -+ -+looking at the current homepage of DXPC, the following can be found in -+their changelog http://www.vigor.nu/dxpc/CHANGES: -+ -+ -+3.8.1 Release: -+ -+[...] -+ -+Changed license to BSD license. -+ -+- -Stefan -+ -+Am 11.05.2015 um 11:07 schrieb Mike Gabriel: -+> Hi Francesco, Cc:ing a couple of people/groups being affected by -+> the below. -+> -+> On Mi 06 Mai 2015 19:35:32 CEST, Francesco Poli (wintermute) -+> wrote: -+> -+>> Package: nx-libs-lite Version: 3.5.0.27-1 Severity: serious -+>> Justification: Policy 2.2.1 -+>> -+>> Hello and thanks for maintaining this package in Debian! -+>> -+>> I noticed that the debian/copyright states: -+>> -+>> [...] | Parts of this software are derived from DXPC project. -+>> These copyright | notices apply to original DXPC code: | | -+>> Redistribution and use in source and binary forms are permitted -+>> provided | that the above copyright notice and this paragraph -+>> are duplicated in all | such forms. | | THIS SOFTWARE IS -+>> PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED | -+>> WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES -+>> OF | MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. | | -+>> Copyright (c) 1995,1996 Brian Pane | Copyright (c) 1996,1997 -+>> Zachary Vonler and Brian Pane | Copyright (c) 1999 Kevin Vigor -+>> and Brian Pane | Copyright (c) 2000,2001 Gian Filippo Pinzari -+>> and Brian Pane [...] -+>> -+>> This license lacks the permission to modify the DXPC code. Hence, -+>> the original DXPC code does not appear to comply with the DFSG. -+>> And the nx-libs-lite is in part derived from DXPC code. -+>> -+>> This basically means that nx-libs-lite includes parts which are -+>> non-free (as they are derived from non-modifiable code) and are -+>> also possibly legally undistributable (as they are -+>> non-modifiable, but actually modified). The combination with the -+>> rest of nx-libs-lite (which is GPL-licensed) may also be legally -+>> undistributable (since the license with no permission to modify -+>> is GPL-incompatible). -+>> -+>> -+>> If there's anything I misunderstood, please clarify. -+>> -+>> Otherwise, please address this issue as soon as possible. The -+>> copyright owners for the original DXPC code should be contacted -+>> and persuaded to re-license under GPL-compatible terms. -+>> -+>> Thanks for your time. Bye. -+> -+> I/we will investigate this asap. Thanks for bringing this up. -+> -+> Greets, Mike -+> -+> -+> _______________________________________________ x2go-dev mailing -+> list x2go-dev@lists.x2go.org -+> http://lists.x2go.org/listinfo/x2go-dev -+> -+ -+ -+- -- -+BAUR-ITCS UG (haftungsbeschränkt) -+Geschäftsführer: Stefan Baur -+Eichenäckerweg 10, 89081 Ulm | Registergericht Ulm, HRB 724364 -+Fon/Fax 0731 40 34 66-36/-35 | USt-IdNr.: DE268653243 -+-----BEGIN PGP SIGNATURE----- -+Version: GnuPG v2 -+ -+iQEcBAEBCAAGBQJVUHRuAAoJEG7d9BjNvlEZsCYH/i0GArfIg0xNQ91srhMtMxVf -+NcaQ5uOJLLZ+e0WOcRMm5Kprg9f6uKQNFRo1dv9NCFNxjrpdR/5/LMmeSYxafIQA -+beoYbnuMMRBvcjoUN5ScGD/jjng/9VCiwviBVjUc6AhDebGjVone2OtaIXPoMELI -+ClKnDShC41qQpSUgEESUYHiIIptkkmSrIJS6Ostsby5rhT1mApv7ulBqVvADUKCX -+OtNZmG+O6Bvur63G2fBTrdQwZAed0+Q6/XlhfOkf5QNG4I9fd5KlrMDpSmO8w7Cm -+h4rVnveLS5+0afZXs9sImhNW4I7Ah8zh5sAUFNCGXEuO60XRRysUO4i1WjRgnZw= -+=sgsA -+-----END PGP SIGNATURE----- -+ -+ -+ -+From mike.gabriel@das-netzwerkteam.de Mon May 11 09:26:40 2015 -+Received: (at 784565) by bugs.debian.org; 11 May 2015 09:26:40 +0000 -+X-Spam-Checker-Version: SpamAssassin 3.4.0-bugs.debian.org_2005_01_02 -+ (2014-02-07) on buxtehude.debian.org -+X-Spam-Level: -+X-Spam-Status: No, score=-11.9 required=4.0 tests=BAYES_00,FOURLA, -+ HAS_BUG_NUMBER,PGPSIGNATURE,T_RP_MATCHES_RCVD autolearn=ham -+ autolearn_force=no version=3.4.0-bugs.debian.org_2005_01_02 -+X-Spam-Bayes: score:0.0000 Tokens: new, 15; hammy, 150; neutral, 246; spammy, -+ 0. spammytokens: hammytokens:0.000-+--H*c:pgp-signature, -+ 0.000-+--H*c:protocol, 0.000-+--H*c:micalg, 0.000-+--H*c:signed, -+ 0.000-+--H*RU:sk:grimnir -+Return-path: <mike.gabriel@das-netzwerkteam.de> -+Received: from freya.das-netzwerkteam.de ([88.198.48.199]) -+ by buxtehude.debian.org with esmtps (TLS1.1:DHE_RSA_AES_256_CBC_SHA1:256) -+ (Exim 4.80) -+ (envelope-from <mike.gabriel@das-netzwerkteam.de>) -+ id 1Yrjyx-0003n8-Sv -+ for 784565@bugs.debian.org; Mon, 11 May 2015 09:26:40 +0000 -+Received: from grimnir.das-netzwerkteam.de (grimnir.das-netzwerkteam.de [78.46.204.98]) -+ by freya.das-netzwerkteam.de (Postfix) with ESMTPS id B938DE53; -+ Mon, 11 May 2015 11:26:37 +0200 (CEST) -+Received: from localhost (localhost [127.0.0.1]) -+ by grimnir.das-netzwerkteam.de (Postfix) with ESMTP id 564F73C20D; -+ Mon, 11 May 2015 11:26:37 +0200 (CEST) -+X-Virus-Scanned: Debian amavisd-new at grimnir.das-netzwerkteam.de -+Received: from grimnir.das-netzwerkteam.de ([127.0.0.1]) -+ by localhost (grimnir.das-netzwerkteam.de [127.0.0.1]) (amavisd-new, port 10024) -+ with ESMTP id zA86M1U+gj03; Mon, 11 May 2015 11:26:37 +0200 (CEST) -+Received: from grimnir.das-netzwerkteam.de (localhost [127.0.0.1]) -+ by grimnir.das-netzwerkteam.de (Postfix) with ESMTPS id E81223BF5A; -+ Mon, 11 May 2015 11:26:36 +0200 (CEST) -+Received: from bifrost.das-netzwerkteam.de (bifrost.das-netzwerkteam.de -+ [178.62.101.154]) by mail.das-netzwerkteam.de (Horde Framework) with HTTP; -+ Mon, 11 May 2015 09:26:36 +0000 -+Date: Mon, 11 May 2015 09:26:36 +0000 -+Message-ID: <20150511092636.Horde.oj6sHKnvQDt85T3EW1WhVA1@mail.das-netzwerkteam.de> -+From: Mike Gabriel <mike.gabriel@das-netzwerkteam.de> -+To: "Francesco Poli (wintermute)" <invernomuto@paranoici.org>, -+ 784565@bugs.debian.org -+Cc: x2go-dev@lists.x2go.org, nito.martinez@qindel.com, -+ opensource@gznianguan.com -+Subject: Re: [pkg-x2go-devel] Bug#784565: nx-libs-lite: parts are derived -+ from non-free code -+In-Reply-To: <20150506173532.7531.31389.reportbug@homebrew> -+User-Agent: Internet Messaging Program (IMP) H5 (6.2.2) -+Accept-Language: de,en -+Organization: DAS-NETZWERKTEAM -+X-Originating-IP: 178.62.101.154 -+X-Remote-Browser: Mozilla/5.0 (X11; Linux x86_64; rv:32.0) Gecko/20100101 -+ Firefox/32.0 Iceweasel/32.0 -+Content-Type: multipart/signed; boundary="=_8dL5yJABYXdTfUqhzQkNVg1"; -+ protocol="application/pgp-signature"; micalg=pgp-sha1 -+MIME-Version: 1.0 -+ -+This message is in MIME format and has been PGP signed. -+ -+--=_8dL5yJABYXdTfUqhzQkNVg1 -+Content-Type: text/plain; charset=us-ascii; format=flowed; DelSp=Yes -+Content-Disposition: inline -+Content-Transfer-Encoding: quoted-printable -+ -+Hi Francesco, -+ -+On Mi 06 Mai 2015 19:35:32 CEST, Francesco Poli (wintermute) wrote: -+ -+> Package: nx-libs-lite -+> Version: 3.5.0.27-1 -+> Severity: serious -+> Justification: Policy 2.2.1 -+> -+> Hello and thanks for maintaining this package in Debian! -+> -+> I noticed that the debian/copyright states: -+> -+> [...] -+> | Parts of this software are derived from DXPC project. These copyright -+> | notices apply to original DXPC code: -+> | -+> | Redistribution and use in source and binary forms are permitted prov= -+ided -+> | that the above copyright notice and this paragraph are duplicated in= -+ all -+> | such forms. -+> | -+> | THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLI= -+ED -+> | WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF -+> | MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. -+> | -+> | Copyright (c) 1995,1996 Brian Pane -+> | Copyright (c) 1996,1997 Zachary Vonler and Brian Pane -+> | Copyright (c) 1999 Kevin Vigor and Brian Pane -+> | Copyright (c) 2000,2001 Gian Filippo Pinzari and Brian Pane -+> [...] -+> -+> This license lacks the permission to modify the DXPC code. -+> Hence, the original DXPC code does not appear to comply with the -+> DFSG. And the nx-libs-lite is in part derived from DXPC code. -+> -+> This basically means that nx-libs-lite includes parts which are -+> non-free (as they are derived from non-modifiable code) and -+> are also possibly legally undistributable (as they are non-modifiable, -+> but actually modified). The combination with the rest of nx-libs-lite -+> (which is GPL-licensed) may also be legally undistributable (since -+> the license with no permission to modify is GPL-incompatible). -+> -+> -+> If there's anything I misunderstood, please clarify. -+> -+> Otherwise, please address this issue as soon as possible. -+> The copyright owners for the original DXPC code should be -+> contacted and persuaded to re-license under GPL-compatible -+> terms. -+> -+> Thanks for your time. -+> Bye. -+ -+Please follow-up with reading [1]. -+ -+As it seems, dxpc has been long ago relicensed to BSD-2-clause (for=20=20 -+v3.8.1=20in/around 2002). -+ -+I have no exact clue, if NoMachine forked prior to that (if they quote=20= -+=20 -+the=20old licensing terms, then probably they did). -+ -+However, how do you see the situation considering that upstream=20=20 -+changed=20to BSD-2-clause a long time ago. What approach do you propose=20= -+=20 -+for=20nx-libs-lite to get the issue fully fixed? -+ -+Mike -+ -+[1] https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=3D142028 -+ -+--=20 -+ -+DAS-NETZWERKTEAM -+mike=20gabriel, herweg 7, 24357 fleckeby -+fon: +49 (1520) 1976 148 -+ -+GnuPG Key ID 0x25771B31 -+mail: mike.gabriel@das-netzwerkteam.de, http://das-netzwerkteam.de -+ -+freeBusy: -+https://mail.das-netzwerkteam.de/freebusy/m.gabriel%40das-netzwerkteam.de.x= -+fb -+ -+--=_8dL5yJABYXdTfUqhzQkNVg1 -+Content-Type: application/pgp-signature -+Content-Description: Digitale PGP-Signatur -+Content-Disposition: inline -+ -+-----BEGIN PGP SIGNATURE----- -+Version: GnuPG v1 -+ -+iQIcBAABAgAGBQJVUHXMAAoJEJr0azAldxsxls4P/RyFv6ghemJhfrHNbAUEDmNz -+kyY2Q4Jt6pIDXX3U3yThYCeyG1nVAwKJI2B/q7q/YWWdzea8RzTTXrj3DubYplOZ -+PatD30FhlKdL+rsohmLFrA5dHVcwFbJA4GqrR2Y8y6NSLEtifYE4EDIDKLqvX6Dy -+msvHyLl+3AXg2gR4Wmu9lOLC8MrPA3A7nwlw/wCa6kwf3i6FUsAB2nzUsj3yUX1f -+4iXzcZhjGCJli9otPLlYFjPuc0HjwBgoOx5tEOL1hgVYP+yiQCw24LOKwHTnDogZ -+ONio1VdS+VPUbhVTlBfYD29lSDO8pgBGk43325b7Bmo56Ica+HCr8TznMVASidvJ -+dbAXZQOMuHxBofP9sm89q2lIXjPmJFWspG76OEM8dAIMKo87gQNuOTNPuOK0Zj8T -+Ua+40fIc5/C7CyRgGO8wqb6dYjD4Q6HxbjSQJrlxsHdjKIozv+MXGV+if/bKSXM8 -+tIAh9JzcwgYtRVlVQXCmpk+yP9DntWFs5WeOEGBqKZw+was5OSXSlpjukNn9us2a -+bWj0E84zMlIu61KVZ8ot14OMIzgUxzymIt/LzWHKiiSezb20S22LJGBaKLxbqplp -+9Gi8g9rEhjn5Pgpt9B3MlIWQTKhpAa71GCD9Okt9vhPsBiKE57fSjCYgQR83lhDy -+kbLoUbByjixBA+TXUYM8 -+=NW/2 -+-----END PGP SIGNATURE----- -+ -+--=_8dL5yJABYXdTfUqhzQkNVg1-- -+ -+ -+ -+ -+From invernomuto@paranoici.org Mon May 11 19:37:54 2015 -+Received: (at 784565) by bugs.debian.org; 11 May 2015 19:37:54 +0000 -+X-Spam-Checker-Version: SpamAssassin 3.4.0-bugs.debian.org_2005_01_02 -+ (2014-02-07) on buxtehude.debian.org -+X-Spam-Level: -+X-Spam-Status: No, score=-11.5 required=4.0 tests=BAYES_00,DKIM_SIGNED, -+ DKIM_VALID,DKIM_VALID_AU,FOURLA,HAS_BUG_NUMBER,MDO_CABLE_TV3,PGPSIGNATURE, -+ SPF_HELO_PASS,SPF_PASS autolearn=ham autolearn_force=no -+ version=3.4.0-bugs.debian.org_2005_01_02 -+X-Spam-Bayes: score:0.0000 Tokens: new, 9; hammy, 150; neutral, 119; spammy, -+ 0. spammytokens: hammytokens:0.000-+--H*UA:sk:x86_64-, -+ 0.000-+--H*x:sk:x86_64-, 0.000-+--H*c:PGP-SHA256, 0.000-+--H*c:SignHturH, -+ 0.000-+--H*c:pgp-signature -+Return-path: <invernomuto@paranoici.org> -+Received: from perdizione.investici.org ([94.23.50.208]) -+ by buxtehude.debian.org with esmtps (TLS1.2:DHE_RSA_AES_256_CBC_SHA256:256) -+ (Exim 4.80) -+ (envelope-from <invernomuto@paranoici.org>) -+ id 1YrtWT-0004t9-Ty -+ for 784565@bugs.debian.org; Mon, 11 May 2015 19:37:54 +0000 -+Received: from [94.23.50.208] (perdizione [94.23.50.208]) (Authenticated sender: invernomuto@paranoici.org) by localhost (Postfix) with ESMTPSA id 9C4DF120408; -+ Mon, 11 May 2015 19:37:46 +0000 (UTC) -+DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=paranoici.org; -+ s=stigmate; t=1431373066; -+ bh=vGWv2ZFJgWpWShHOYFcPN0r6i8IFunsxG5IJHqxpdbk=; -+ h=Date:From:To:Cc:Subject:In-Reply-To:References; -+ b=JQRMmMDPSZFkJ21FEn1TdsCco0YtUFBII0CsMLxdl3mxM5SzGN9flVttwlZ+5RrgR -+ a7/u/VUVPzv0ZcdVKwrC+Nq6imwd5hzUj80C+e6KLZQoovz6shmhuIdKtga2OIl7lm -+ cF0ONDqjdq0pI158Ws5hz0MiwJkzF6V5VbIEk3SY= -+Received: from frx by homebrew with local (Exim 4.85) -+ (envelope-from <invernomuto@paranoici.org>) -+ id 1YrtVj-0001Cl-NV; Mon, 11 May 2015 21:37:07 +0200 -+Date: Mon, 11 May 2015 21:36:59 +0200 -+From: Francesco Poli <invernomuto@paranoici.org> -+To: Mike Gabriel <mike.gabriel@das-netzwerkteam.de> -+Cc: 784565@bugs.debian.org, x2go-dev@lists.x2go.org, -+ nito.martinez@qindel.com, opensource@gznianguan.com -+Subject: Re: [pkg-x2go-devel] Bug#784565: nx-libs-lite: parts are derived -+ from non-free code -+Message-Id: <20150511213659.34dce0505c493c1e23d2c3ee@paranoici.org> -+In-Reply-To: <20150511092636.Horde.oj6sHKnvQDt85T3EW1WhVA1@mail.das-netzwerkteam.de> -+References: <20150506173532.7531.31389.reportbug@homebrew> -+ <20150511092636.Horde.oj6sHKnvQDt85T3EW1WhVA1@mail.das-netzwerkteam.de> -+X-Mailer: Sylpheed 3.5.0beta1 (GTK+ 2.24.25; x86_64-pc-linux-gnu) -+Mime-Version: 1.0 -+Content-Type: multipart/signed; protocol="application/pgp-signature"; -+ micalg="PGP-SHA256"; -+ boundary="Signature=_Mon__11_May_2015_21_36_59_+0200_DweA9EbdD2ISBmUH" -+ -+--Signature=_Mon__11_May_2015_21_36_59_+0200_DweA9EbdD2ISBmUH -+Content-Type: text/plain; charset=US-ASCII -+Content-Disposition: inline -+Content-Transfer-Encoding: quoted-printable -+ -+On Mon, 11 May 2015 09:26:36 +0000 Mike Gabriel wrote: -+ -+[...] -+> As it seems, dxpc has been long ago relicensed to BSD-2-clause (for =20 -+> v3.8.1 in/around 2002). -+ -+This is great news, indeed! -+ -+>=20 -+> I have no exact clue, if NoMachine forked prior to that (if they quote =20 -+> the old licensing terms, then probably they did). -+ -+Yep, it's plausible... -+ -+>=20 -+> However, how do you see the situation considering that upstream =20 -+> changed to BSD-2-clause a long time ago. What approach do you propose =20 -+> for nx-libs-lite to get the issue fully fixed? -+ -+If the fork has been performed before the DXPC re-licensing (as it's -+likely), I see two possible strategies: -+ -+ (A) someone gets in touch with DXPC copyright owners and asks them -+whether the re-licensing may be considered retroactive (applicable to -+older versions of DXPC); in case the answer is negative, DXPC copyright -+owners should be persuaded to make the re-licensing retroactive -+ -+ (B) nx-libs-lite upstream developers re-fork from scratch, basing the -+new code on a BSD-licensed version of DXPC (I suspect this may turn out -+to be somewhat painful...) -+ -+ -+Obviously, the optimal solution is (A). I hope it may work... -+ -+Thanks for your time and for your prompt and kind replies. -+ -+ -+--=20 -+ http://www.inventati.org/frx/ -+ There's not a second to spare! To the laboratory! -+..................................................... Francesco Poli . -+ GnuPG key fpr =3D=3D CA01 1147 9CD2 EFDF FB82 3925 3E1C 27E1 1F69 BFFE -+ -+--Signature=_Mon__11_May_2015_21_36_59_+0200_DweA9EbdD2ISBmUH -+Content-Type: application/pgp-signature -+ -+-----BEGIN PGP SIGNATURE----- -+Version: GnuPG v2 -+ -+iQIcBAEBCAAGBQJVUQTgAAoJED4cJ+Efab/+Mx4QAMLmPwqnPYyI0Bl6sZgxP3nA -+Yfrf7m2+swTrNz3M2xNepx1KoylRNlz2DiCuG7QWABNupSK60ACtIuAvWIAPSYNt -+wlHDRGiVrpCKBKzB4N3zjB0MN1VELhdWqrap8Yw5nnwohJ2jXoAUaqorwEba6YBg -+VK1BsGvlqcwSYt8eWt+ugpaRR43DbZTCpAvBn3t9DdYe8LwtlJDTCatbJfovlTJ9 -+P19TNbwxiEoj8uWbmpOO/kLvvMed0avTEsvgAROQKF/dnWCnB1dh5QGd06IHdAY7 -+KfnoZc4HUM8BB/ylWsaV13Cd8UA/2B2FKp3xbab3ry8gWeMe6dnk/pFa+pv6TGeT -+I+6VxWOMT/hc4AwBOl+R7yqp2AkcNO+KP2o5i04+yENcbgrGxyCQU2aVsHkJsVYi -+N5myXypSZY3tF6TnAm/UYP2GgiMCo0FXptwVoLiGSJkBw0tn13I25pYSqjYZlq4q -+4RQYuTEHEkV16tCdEdy+DSuI0GsABYUkY3a3A3TLj9LjiPPEDwLOxHjZlLbeyXP+ -+xtmC3d82YvMmLXUiqItuhiBYjCRFq8piGGCDRX7wp1B+t6xHUcR8UV5O4s554iMX -++r2m1mLzM285PoKwP/Smd6BXU5RfhT4svmxvaMSSvADNo8X4ddNd2Hiq/Gib2ftH -+mYKFpBE7IMwQqfrOpAW5 -+=Bt09 -+-----END PGP SIGNATURE----- -+ -+--Signature=_Mon__11_May_2015_21_36_59_+0200_DweA9EbdD2ISBmUH-- -+ -+ -+ -+From mike.gabriel@das-netzwerkteam.de Tue May 12 03:59:27 2015 -+Received: (at 784565) by bugs.debian.org; 12 May 2015 03:59:27 +0000 -+X-Spam-Checker-Version: SpamAssassin 3.4.0-bugs.debian.org_2005_01_02 -+ (2014-02-07) on buxtehude.debian.org -+X-Spam-Level: -+X-Spam-Status: No, score=-11.4 required=4.0 tests=BAYES_00,FOURLA, -+ HAS_BUG_NUMBER,MDO_CABLE_TV3,PGPSIGNATURE,T_RP_MATCHES_RCVD autolearn=ham -+ autolearn_force=no version=3.4.0-bugs.debian.org_2005_01_02 -+X-Spam-Bayes: score:0.0000 Tokens: new, 21; hammy, 150; neutral, 206; spammy, -+ 0. spammytokens: hammytokens:0.000-+--H*c:pgp-signature, -+ 0.000-+--H*c:protocol, 0.000-+--H*c:micalg, 0.000-+--H*c:signed, -+ 0.000-+--H*RU:sk:grimnir -+Return-path: <mike.gabriel@das-netzwerkteam.de> -+Received: from freya.das-netzwerkteam.de ([88.198.48.199]) -+ by buxtehude.debian.org with esmtps (TLS1.1:DHE_RSA_AES_256_CBC_SHA1:256) -+ (Exim 4.80) -+ (envelope-from <mike.gabriel@das-netzwerkteam.de>) -+ id 1Ys1Lq-0000j4-Sf -+ for 784565@bugs.debian.org; Tue, 12 May 2015 03:59:27 +0000 -+Received: from grimnir.das-netzwerkteam.de (grimnir.das-netzwerkteam.de [78.46.204.98]) -+ by freya.das-netzwerkteam.de (Postfix) with ESMTPS id B4F9BAA3; -+ Tue, 12 May 2015 05:59:21 +0200 (CEST) -+Received: from localhost (localhost [127.0.0.1]) -+ by grimnir.das-netzwerkteam.de (Postfix) with ESMTP id 299233C21D; -+ Tue, 12 May 2015 05:59:21 +0200 (CEST) -+X-Virus-Scanned: Debian amavisd-new at grimnir.das-netzwerkteam.de -+Received: from grimnir.das-netzwerkteam.de ([127.0.0.1]) -+ by localhost (grimnir.das-netzwerkteam.de [127.0.0.1]) (amavisd-new, port 10024) -+ with ESMTP id G2j6l6YtFs0q; Tue, 12 May 2015 05:59:21 +0200 (CEST) -+Received: from grimnir.das-netzwerkteam.de (localhost [127.0.0.1]) -+ by grimnir.das-netzwerkteam.de (Postfix) with ESMTPS id C67023BF5A; -+ Tue, 12 May 2015 05:59:20 +0200 (CEST) -+Received: from p5B3B925B.dip0.t-ipconnect.de (p5B3B925B.dip0.t-ipconnect.de -+ [91.59.146.91]) by mail.das-netzwerkteam.de (Horde Framework) with HTTP; -+ Tue, 12 May 2015 03:59:20 +0000 -+Date: Tue, 12 May 2015 03:59:20 +0000 -+Message-ID: <20150512035920.Horde.JnI2DWx-AAFvzpbQFqakJw3@mail.das-netzwerkteam.de> -+From: Mike Gabriel <mike.gabriel@das-netzwerkteam.de> -+To: Francesco Poli <invernomuto@paranoici.org> -+Cc: 784565@bugs.debian.org, x2go-dev@lists.x2go.org, -+ nito.martinez@qindel.com, opensource@gznianguan.com -+Subject: Re: [pkg-x2go-devel] Bug#784565: nx-libs-lite: parts are derived -+ from non-free code -+References: <20150506173532.7531.31389.reportbug@homebrew> -+ <20150511092636.Horde.oj6sHKnvQDt85T3EW1WhVA1@mail.das-netzwerkteam.de> -+ <20150511213659.34dce0505c493c1e23d2c3ee@paranoici.org> -+In-Reply-To: <20150511213659.34dce0505c493c1e23d2c3ee@paranoici.org> -+User-Agent: Internet Messaging Program (IMP) H5 (6.2.2) -+Accept-Language: de,en -+Organization: DAS-NETZWERKTEAM -+X-Originating-IP: 91.59.146.91 -+X-Remote-Browser: Mozilla/5.0 (X11; Linux x86_64; rv:32.0) Gecko/20100101 -+ Firefox/32.0 Iceweasel/32.0 -+Content-Type: multipart/signed; boundary="=_kYZkQgyfaSLUTLVIkzgq8w1"; -+ protocol="application/pgp-signature"; micalg=pgp-sha1 -+MIME-Version: 1.0 -+ -+This message is in MIME format and has been PGP signed. -+ -+--=_kYZkQgyfaSLUTLVIkzgq8w1 -+Content-Type: text/plain; charset=us-ascii; format=flowed; DelSp=Yes -+Content-Disposition: inline -+Content-Transfer-Encoding: quoted-printable -+ -+Hi Francesco, -+ -+On Mo 11 Mai 2015 21:36:59 CEST, Francesco Poli wrote: -+ -+> On Mon, 11 May 2015 09:26:36 +0000 Mike Gabriel wrote: -+> -+> [...] -+>> As it seems, dxpc has been long ago relicensed to BSD-2-clause (for -+>> v3.8.1 in/around 2002). -+> -+> This is great news, indeed! -+> -+>> -+>> I have no exact clue, if NoMachine forked prior to that (if they quote -+>> the old licensing terms, then probably they did). -+> -+> Yep, it's plausible... -+> -+>> -+>> However, how do you see the situation considering that upstream -+>> changed to BSD-2-clause a long time ago. What approach do you propose -+>> for nx-libs-lite to get the issue fully fixed? -+> -+> If the fork has been performed before the DXPC re-licensing (as it's -+> likely), I see two possible strategies: -+> -+> (A) someone gets in touch with DXPC copyright owners and asks them -+> whether the re-licensing may be considered retroactive (applicable to -+> older versions of DXPC); in case the answer is negative, DXPC copyright -+> owners should be persuaded to make the re-licensing retroactive -+ -+This is the way to go, I will pull in Kevin Vigor (the upstream author=20= -+=20 -+of=20DXPC) into this thread with my next email. -+ -+> (B) nx-libs-lite upstream developers re-fork from scratch, basing the -+> new code on a BSD-licensed version of DXPC (I suspect this may turn out -+> to be somewhat painful...) -+ -+Yeah, indeed painful. -+ -+> Obviously, the optimal solution is (A). I hope it may work... -+> -+> Thanks for your time and for your prompt and kind replies. -+ -+Also, Michael DePaulo, one of the upstream NX maintainers noted that=20=20 -+DXPC=20simply used a previous version of the BSD license, see [1]. The=20= -+=20 -+weakness=20of that ancient license template is that modification is not=20= -+=20 -+explictily=20allowed, but neither forbidden. -+ -+I think, regarding the historical usage of the BSD license predecessor=20= -+=20 -+and=20the switch to BSD-2-clause should be fine already (I am not a=20=20 -+lawyer,=20though). I will contact DXPC upstream nonetheless and ask for=20= -+=20 -+a=20statement. -+ -+Greets, -+Mike -+ -+[1] http://en.wikipedia.org/wiki/BSD_licenses#Previous_license -+ -+--=20 -+ -+DAS-NETZWERKTEAM -+mike=20gabriel, herweg 7, 24357 fleckeby -+fon: +49 (1520) 1976 148 -+ -+GnuPG Key ID 0x25771B31 -+mail: mike.gabriel@das-netzwerkteam.de, http://das-netzwerkteam.de -+ -+freeBusy: -+https://mail.das-netzwerkteam.de/freebusy/m.gabriel%40das-netzwerkteam.de.x= -+fb -+ -+--=_kYZkQgyfaSLUTLVIkzgq8w1 -+Content-Type: application/pgp-signature -+Content-Description: Digitale PGP-Signatur -+Content-Disposition: inline -+ -+-----BEGIN PGP SIGNATURE----- -+Version: GnuPG v1 -+ -+iQIbBAABAgAGBQJVUXqYAAoJEJr0azAldxsxYVAP+Pg4A2zg6TEs+vk/mknbLwV2 -+dOv/tQiarKfb6JJRcm1j6rzGBhGzO4iwj/Uk8wmbFvIJgxs6mM93kfOPa0lJYM1N -+D0YcKPPsHqgxcyVW8pIyawhnW5IsIDSaugjsandx1hbfl+J5SBCAtSovhz5F+Fkf -+fs1wvgYcGKtWGNTxV5Qy48EnzSzAVz2r4GKBYUdRiCNpXtl/M8jJFIfm/cmJ7PJq -+ycY8Diu6x3mVvPdvap/0pOOY0uqg256XX7dcFJUtTNZoai4oGOuwR1o4g9jztyd/ -+4JJ2E1MigAjGSYPpTnQGhORA86yDLQrk/NlLG/2/J8meG7Nsky6xmf3zBhuG/0G0 -+3TZYQcoFrFS3EWQs0uKiGKGylchODCfXHZgF0y5NT5iqr4DMT51AlUeQl3MWhxf8 -+j8OMjK86jsPMrSjL0l4uYbs+znMdlVpgjBSYsKoXg3tIc3WJpj77qyPUbfwO8hys -+5Q2j4lDaGV5NAnSmZ//p9lPwRu8oAMwSkrMkRTaJwLVhcmDzgoujZEpEPj64lIEy -+HD3p/5dSJF+RsYT6286JkWAZm+XvXeFpEqGZ7xAVsrYSY1qFm3g0se1oHxxcVWyN -+PEsQBOt8WXgYmtz7RLaBDbBQVMmeRMxbPCkC1xCHCU+Vq3y9dW/3TyOW4Oz1YoZR -+3YATO+YehUKVdM5teyg= -+=884K -+-----END PGP SIGNATURE----- -+ -+--=_kYZkQgyfaSLUTLVIkzgq8w1-- -+ -+ -+ -+ -+From mike.gabriel@das-netzwerkteam.de Tue May 12 04:46:43 2015 -+Received: (at 784565) by bugs.debian.org; 12 May 2015 04:46:44 +0000 -+X-Spam-Checker-Version: SpamAssassin 3.4.0-bugs.debian.org_2005_01_02 -+ (2014-02-07) on buxtehude.debian.org -+X-Spam-Level: -+X-Spam-Status: No, score=-11.4 required=4.0 tests=BAYES_00,FOURLA, -+ HAS_BUG_NUMBER,MDO_CABLE_TV3,PGPSIGNATURE,T_RP_MATCHES_RCVD autolearn=ham -+ autolearn_force=no version=3.4.0-bugs.debian.org_2005_01_02 -+X-Spam-Bayes: score:0.0000 Tokens: new, 27; hammy, 149; neutral, 375; spammy, -+ 1. spammytokens:0.998-1--arctica hammytokens:0.000-+--IIRC, -+ 0.000-+--H*c:pgp-signature, 0.000-+--H*c:protocol, 0.000-+--H*c:micalg, -+ 0.000-+--H*c:signed -+Return-path: <mike.gabriel@das-netzwerkteam.de> -+Received: from freya.das-netzwerkteam.de ([88.198.48.199]) -+ by buxtehude.debian.org with esmtps (TLS1.1:DHE_RSA_AES_256_CBC_SHA1:256) -+ (Exim 4.80) -+ (envelope-from <mike.gabriel@das-netzwerkteam.de>) -+ id 1Ys25b-0004lf-4r -+ for 784565@bugs.debian.org; Tue, 12 May 2015 04:46:43 +0000 -+Received: from grimnir.das-netzwerkteam.de (grimnir.das-netzwerkteam.de [78.46.204.98]) -+ by freya.das-netzwerkteam.de (Postfix) with ESMTPS id 6AB7617F5; -+ Tue, 12 May 2015 06:46:40 +0200 (CEST) -+Received: from localhost (localhost [127.0.0.1]) -+ by grimnir.das-netzwerkteam.de (Postfix) with ESMTP id 71D923BC0D; -+ Tue, 12 May 2015 06:46:38 +0200 (CEST) -+X-Virus-Scanned: Debian amavisd-new at grimnir.das-netzwerkteam.de -+Received: from grimnir.das-netzwerkteam.de ([127.0.0.1]) -+ by localhost (grimnir.das-netzwerkteam.de [127.0.0.1]) (amavisd-new, port 10024) -+ with ESMTP id TYvbPGLabTH7; Tue, 12 May 2015 06:46:38 +0200 (CEST) -+Received: from grimnir.das-netzwerkteam.de (localhost [127.0.0.1]) -+ by grimnir.das-netzwerkteam.de (Postfix) with ESMTPS id 0669F3BA08; -+ Tue, 12 May 2015 06:46:38 +0200 (CEST) -+Received: from p5B3B925B.dip0.t-ipconnect.de (p5B3B925B.dip0.t-ipconnect.de -+ [91.59.146.91]) by mail.das-netzwerkteam.de (Horde Framework) with HTTP; -+ Tue, 12 May 2015 04:46:37 +0000 -+Date: Tue, 12 May 2015 04:46:37 +0000 -+Message-ID: <20150512044637.Horde.8WHdvRpU7GS9Szy323gv_Q2@mail.das-netzwerkteam.de> -+From: Mike Gabriel <mike.gabriel@das-netzwerkteam.de> -+To: Kevin Vigor <kevin@vigor.nu> -+Cc: 784565@bugs.debian.org, x2go-dev@lists.x2go.org, -+ nito.martinez@qindel.com, opensource@gznianguan.com, Francesco Poli -+ <invernomuto@paranoici.org> -+Subject: Re: [pkg-x2go-devel] Bug#784565: nx-libs-lite: parts are derived -+ from non-free code -+References: <20150506173532.7531.31389.reportbug@homebrew> -+ <20150511092636.Horde.oj6sHKnvQDt85T3EW1WhVA1@mail.das-netzwerkteam.de> -+ <20150511213659.34dce0505c493c1e23d2c3ee@paranoici.org> -+In-Reply-To: <20150511213659.34dce0505c493c1e23d2c3ee@paranoici.org> -+User-Agent: Internet Messaging Program (IMP) H5 (6.2.2) -+Accept-Language: de,en -+Organization: DAS-NETZWERKTEAM -+X-Originating-IP: 91.59.146.91 -+X-Remote-Browser: Mozilla/5.0 (X11; Linux x86_64; rv:32.0) Gecko/20100101 -+ Firefox/32.0 Iceweasel/32.0 -+Content-Type: multipart/signed; boundary="=_9zX_XixEpAdR4NT64zJguA1"; -+ protocol="application/pgp-signature"; micalg=pgp-sha1 -+MIME-Version: 1.0 -+ -+This message is in MIME format and has been PGP signed. -+ -+--=_9zX_XixEpAdR4NT64zJguA1 -+Content-Type: text/plain; charset=us-ascii; format=flowed; DelSp=Yes -+Content-Disposition: inline -+Content-Transfer-Encoding: quoted-printable -+ -+Dear Kevin, -+ -+(I Cc: several people involved in this, also the X2Go development=20=20 -+mailing=20list...) -+ -+[If you feel unconfortable with discussing the details / the impact of=20= -+=20 -+the=20below in public, feel free to answer to me directly first with=20=20 -+questions=20and concerns, before answering to all people who are listed=20= -+=20 -+in=20Cc:.] -+ -+Someone from the Debian legal team recently brought up a license issue=20= -+=20 -+discovered=20in nx-libs 3.x series. -+ -+TL;DR; Suggested by Francesco Poli from the Debian legal team: """ -+(A) someone gets in touch with DXPC copyright owners and asks them -+whether the re-licensing [in 2002] may be considered retroactive=20=20 -+(applicable=20to -+older versions of DXPC); in case the answer is negative, DXPC copyright -+owners should be persuaded to make the re-licensing retroactive -+""" -+ -+The person contacting you about the above question is me. Mike=20=20 -+Gabriel,=20Debian Developer and one of the current upstream maintainers=20= -+=20 -+of=20nx-libs 3.x (previously also know as "NX redistributed" for X2Go)=20= -+=20 -+[1]. -+ -+This=20issue requires some time of reading from you and (hopefully) a=20=20 -+public=20statement, that the original DXPC code can be considered as=20=20 -+BSD-2-clause=20(the current license) also for released versions prior=20=20 -+2002=20when the ancient BSD license template [2] was still shipped with=20= -+=20 -+DXPC. -+ -+For=20a complete follow-up, please check Debian bug #784565 [3]. -+ -+We are aware that NoMachine forked DXPC at some early stage around the=20= -+=20 -+year=202000 and wrote their own commercial product around it. Obviously,=20= -+=20 -+this=20fork happened before 2002 (i.e., before DXPC release 3.8.1), as=20= -+=20 -+libxcomp3=20in NoMachine's NX ships the previously used BSD license=20=20 -+template.=20I am not sure, if that fork was easy for you or actually a=20= -+=20 -+nuisance.=20I may only guess at this point. I'd be happy to know more=20=20 -+(maybe=20not in this mail thread, though). -+ -+NoMachine has stopped publishing NXv3 updates a couple of years ago=20=20 -+(2011=20IIRC), now. The maintenance has been moved into the hands of the=20= -+=20 -+currently=20available FLOSS projects "X2Go", "Arctica Project" [NEW] and=20= -+=20 -+"TheQVD".=20Some of us are running a business model on top of that=20=20 -+(consultancy,=20support contracts, feature development contracts), some=20= -+=20 -+of=20us spend a lot of their free time on improving / maintaining=20=20 -+nx-libs=20(as we call NoMachine's NXv3 at the moment). -+ -+To outline the impact of my mail clearly: If you say that it was not=20=20 -+legal=20by NoMachine to fork DXPC at the given time (before 2002), then=20= -+=20 -+all=20FLOSS remote desktop / remote application would be in real=20=20 -+trouble,=20because then the core component of their software projects=20=20 -+could=20not be considered as free (as in DFSG, Debian free software=20=20 -+guidelines[4])=20anymore. Also the code changes originally performed by=20= -+=20 -+NoMachine=20might have been illegal in the first place. All current=20=20 -+maintenance=20activities and also planned future development on nx-libs=20= -+=20 -+would=20become questionable. -+ -+Thus, I hope you can chime in on this: Dear developers of nx-libs,=20=20 -+please=20assume the BSD-2-license as retroactive and applicable to DXPC=20= -+=20 -+version=20earlier than 3.8.1. As the copyright holder, I agree with=20=20 -+modifications=20of code bases that originate before the change to=20=20 -+BSD-2-clause=20license got introduced in 3.8.1 of DXPC. -+ -+And... I will bring up that question later (but it is burning under my=20= -+=20 -+nails)...=20Be sure: The nx-libs maintainers would be happy to have the=20= -+=20 -+original=20DXPC author on the nx-libs developer team. But I will bring=20= -+=20 -+up=20that question later (when this very issue is settled). ;-) -+ -+Greets, -+Mike -+ -+[1] https://github.com/ArcticaProject/nx-libs -+[2] http://en.wikipedia.org/wiki/BSD_licenses#Previous_license -+[3] http://bugs.debian.org/784565 -+[4] http://de.wikipedia.org/wiki/Debian_Free_Software_Guidelines -+ -+On Mo 11 Mai 2015 21:36:59 CEST, Francesco Poli wrote: -+ -+> On Mon, 11 May 2015 09:26:36 +0000 Mike Gabriel wrote: -+> -+> [...] -+>> As it seems, dxpc has been long ago relicensed to BSD-2-clause (for -+>> v3.8.1 in/around 2002). -+> -+> This is great news, indeed! -+> -+>> -+>> I have no exact clue, if NoMachine forked prior to that (if they quote -+>> the old licensing terms, then probably they did). -+> -+> Yep, it's plausible... -+> -+>> -+>> However, how do you see the situation considering that upstream -+>> changed to BSD-2-clause a long time ago. What approach do you propose -+>> for nx-libs-lite to get the issue fully fixed? -+> -+> If the fork has been performed before the DXPC re-licensing (as it's -+> likely), I see two possible strategies: -+> -+> (A) someone gets in touch with DXPC copyright owners and asks them -+> whether the re-licensing may be considered retroactive (applicable to -+> older versions of DXPC); in case the answer is negative, DXPC copyright -+> owners should be persuaded to make the re-licensing retroactive -+> -+> (B) nx-libs-lite upstream developers re-fork from scratch, basing the -+> new code on a BSD-licensed version of DXPC (I suspect this may turn out -+> to be somewhat painful...) -+> -+> -+> Obviously, the optimal solution is (A). I hope it may work... -+> -+> Thanks for your time and for your prompt and kind replies. -+ -+ -+--=20 -+ -+DAS-NETZWERKTEAM -+mike=20gabriel, herweg 7, 24357 fleckeby -+fon: +49 (1520) 1976 148 -+ -+GnuPG Key ID 0x25771B31 -+mail: mike.gabriel@das-netzwerkteam.de, http://das-netzwerkteam.de -+ -+freeBusy: -+https://mail.das-netzwerkteam.de/freebusy/m.gabriel%40das-netzwerkteam.de.x= -+fb -+ -+--=_9zX_XixEpAdR4NT64zJguA1 -+Content-Type: application/pgp-signature -+Content-Description: Digitale PGP-Signatur -+Content-Disposition: inline -+ -+-----BEGIN PGP SIGNATURE----- -+Version: GnuPG v1 -+ -+iQIcBAABAgAGBQJVUYWtAAoJEJr0azAldxsxEMcP/0mjNHW4k/IiNjSbrm1j7pIQ -+k6yVqJ8cMW/71H0/VLuzS6roL02JAXMzToMzAcbPGqeV5rjhLDJNjcOuuADhb8HI -+Izisai5ABzHiclnITalVTsF4i5+MsTXI+6eNez9sv3Es8pwFuLkvAlqKsheO33mP -+dz83ZqDmCGKcCCbZmhbhGHdhScS8GMSyU7cBm6xu0TMh8rOtcECBG/+wfohVeR2I -+vy0GeYR0ZF0yIxcBGXYvjiocStjsxaqnD9QCt8JAfewVO3jY/Ye6DIEI92moS/Nz -+6iTA9GspZyYNqL7QsOraG2HF6TmIfK5xBaUjDrLH+HfKm2K6Dxp0wo6Y6VDY9mIi -+svCFCoIQ3RBihcsOp7k1v1eZl+WJJ2XXilQr3SrtlOiZAK0/FtbkUwhk4DLu5o3R -+CBHwy6F14szo8F4ChFGqqbOlODGJOiCONfOShRZQLgAgHciRirrgTKF4b25cspNU -+v7ag47K4WN3YNtkA5DO5Bj2NKAP8oWyvlTpO0uIuUZo/pj+7sHnWG8QSDJiyunVt -+3VxMLM4h3C02k+EtR2uvtKKqVFf+JgiwRGDhFx2ldUwWFg0+3IeWKuuTxRt6NcR+ -+ZdDN2tR0PWpe4v+jsUqSD3YJNRoK1oyj9kMYriTkHTvhr/XcKr5KYNsWMC6nvqps -+JDhKCpypB1iR9N13NpeX -+=HDe/ -+-----END PGP SIGNATURE----- -+ -+--=_9zX_XixEpAdR4NT64zJguA1-- -+ -+ -+ -+ -+From kevin@vigor.nu Tue May 12 15:07:38 2015 -+Received: (at 784565) by bugs.debian.org; 12 May 2015 15:07:38 +0000 -+X-Spam-Checker-Version: SpamAssassin 3.4.0-bugs.debian.org_2005_01_02 -+ (2014-02-07) on buxtehude.debian.org -+X-Spam-Level: -+X-Spam-Status: No, score=-6.4 required=4.0 tests=BAYES_00,FOURLA, -+ HAS_BUG_NUMBER,MDO_CABLE_TV3,SPF_PASS autolearn=ham autolearn_force=no -+ version=3.4.0-bugs.debian.org_2005_01_02 -+X-Spam-Bayes: score:0.0000 Tokens: new, 34; hammy, 150; neutral, 395; spammy, -+ 0. spammytokens: hammytokens:0.000-+--IIRC, 0.000-+--H*f:sk:2015050, -+ 0.000-+--H*UA:31.0, 0.000-+--H*u:31.0, 0.000-+--H*u:x86_64 -+Return-path: <kevin@vigor.nu> -+Received: from gateway30.websitewelcome.com ([192.185.184.48]) -+ by buxtehude.debian.org with esmtps (TLS1.2:DHE_RSA_AES_256_CBC_SHA256:256) -+ (Exim 4.80) -+ (envelope-from <kevin@vigor.nu>) -+ id 1YsBmT-0007o6-Qg -+ for 784565@bugs.debian.org; Tue, 12 May 2015 15:07:38 +0000 -+Received: by gateway30.websitewelcome.com (Postfix, from userid 500) -+ id 69AEB573DA20; Tue, 12 May 2015 09:55:02 -0500 (CDT) -+Received: from gator4058.hostgator.com (gator4058.hostgator.com [192.185.4.69]) -+ by gateway30.websitewelcome.com (Postfix) with ESMTP id 677E2573DA04 -+ for <784565@bugs.debian.org>; Tue, 12 May 2015 09:55:02 -0500 (CDT) -+Received: from [63.158.132.10] (port=46206 helo=[10.50.3.84]) -+ by gator4058.hostgator.com with esmtpsa (UNKNOWN:DHE-RSA-AES128-SHA:128) -+ (Exim 4.82) -+ (envelope-from <kevin@vigor.nu>) -+ id 1YsBaH-0003xr-Ii; Tue, 12 May 2015 09:55:01 -0500 -+Message-ID: <55521444.9090407@vigor.nu> -+Date: Tue, 12 May 2015 08:55:00 -0600 -+From: Kevin Vigor <kevin@vigor.nu> -+User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Thunderbird/31.5.0 -+MIME-Version: 1.0 -+To: Mike Gabriel <mike.gabriel@das-netzwerkteam.de> -+CC: 784565@bugs.debian.org, x2go-dev@lists.x2go.org, -+ nito.martinez@qindel.com, opensource@gznianguan.com, -+ Francesco Poli <invernomuto@paranoici.org> -+Subject: Re: [pkg-x2go-devel] Bug#784565: nx-libs-lite: parts are derived -+ from non-free code -+References: <20150506173532.7531.31389.reportbug@homebrew> <20150511092636.Horde.oj6sHKnvQDt85T3EW1WhVA1@mail.das-netzwerkteam.de> <20150511213659.34dce0505c493c1e23d2c3ee@paranoici.org> <20150512044637.Horde.8WHdvRpU7GS9Szy323gv_Q2@mail.das-netzwerkteam.de> -+In-Reply-To: <20150512044637.Horde.8WHdvRpU7GS9Szy323gv_Q2@mail.das-netzwerkteam.de> -+Content-Type: text/plain; charset=windows-1252; format=flowed -+Content-Transfer-Encoding: 7bit -+X-AntiAbuse: This header was added to track abuse, please include it with any abuse report -+X-AntiAbuse: Primary Hostname - gator4058.hostgator.com -+X-AntiAbuse: Original Domain - bugs.debian.org -+X-AntiAbuse: Originator/Caller UID/GID - [47 12] / [47 12] -+X-AntiAbuse: Sender Address Domain - vigor.nu -+X-BWhitelist: no -+X-Source-IP: 63.158.132.10 -+X-Exim-ID: 1YsBaH-0003xr-Ii -+X-Source: -+X-Source-Args: -+X-Source-Dir: -+X-Source-Sender: ([10.50.3.84]) [63.158.132.10]:46206 -+X-Source-Auth: kevin@vigor.nu -+X-Email-Count: 2 -+X-Source-Cap: a3ZpZ29yO2t2aWdvcjtnYXRvcjQwNTguaG9zdGdhdG9yLmNvbQ== -+X-Greylist: delayed 379 seconds by postgrey-1.34 at buxtehude; Tue, 12 May 2015 15:07:37 UTC -+ -+Hi Mike, et al, -+ -+ I am not the original author of dxpc, that being Brian Pane. However, I took over maintenance circa 1999 and am still the primary maintainer (though the project has effectively been dead for most of a decade now). -+ -+ As you are aware, when I inherited the code, it was licensed under a variant of the BSD license that did not include the 'with modification' clause. To the best of my recollection, somebody from the FSF contacted me circa 2001 regarding this and as a result, subsequent releases were done under a standard 2-clause BSD license with the modification clause. Again, to the best of my recollection, I contacted Brian about this change and he offered no objection. -+ -+ Further, I recall distinctly that NoMachine contacted me and explicitly asked permission before including DXPC code in NX, which I happily granted with no new conditions beyond the BSD license already in play. -+ -+ It is possible, though by no means certain, that I could dig up ancient email to corroborate this account if necessary. However, I am more than willing to publicly state that I believe NoMachine's use of DXPC code to be both legal and ethical, and that my intent when changing the license to 2-clause BSD was simply to clarity the existing intent and that it ought therefore be considered retroactive. -+ -+ Yours, -+ Kevin Vigor -+ -+On 05/11/15 22:46, Mike Gabriel wrote: -+> Dear Kevin, -+> -+> (I Cc: several people involved in this, also the X2Go development mailing list...) -+> -+> [If you feel unconfortable with discussing the details / the impact of the below in public, feel free to answer to me directly first with questions and concerns, before answering to all people who are listed in Cc:.] -+> -+> Someone from the Debian legal team recently brought up a license issue discovered in nx-libs 3.x series. -+> -+> TL;DR; Suggested by Francesco Poli from the Debian legal team: """ -+> (A) someone gets in touch with DXPC copyright owners and asks them -+> whether the re-licensing [in 2002] may be considered retroactive (applicable to -+> older versions of DXPC); in case the answer is negative, DXPC copyright -+> owners should be persuaded to make the re-licensing retroactive -+> """ -+> -+> The person contacting you about the above question is me. Mike Gabriel, Debian Developer and one of the current upstream maintainers of nx-libs 3.x (previously also know as "NX redistributed" for X2Go) [1]. -+> -+> This issue requires some time of reading from you and (hopefully) a public statement, that the original DXPC code can be considered as BSD-2-clause (the current license) also for released versions prior 2002 when the ancient BSD license template [2] was still shipped with DXPC. -+> -+> For a complete follow-up, please check Debian bug #784565 [3]. -+> -+> We are aware that NoMachine forked DXPC at some early stage around the year 2000 and wrote their own commercial product around it. Obviously, this fork happened before 2002 (i.e., before DXPC release 3.8.1), as libxcomp3 in NoMachine's NX ships the previously used BSD license template. I am not sure, if that fork was easy for you or actually a nuisance. I may only guess at this point. I'd be happy to know more (maybe not in this mail thread, though). -+> -+> NoMachine has stopped publishing NXv3 updates a couple of years ago (2011 IIRC), now. The maintenance has been moved into the hands of the currently available FLOSS projects "X2Go", "Arctica Project" [NEW] and "TheQVD". Some of us are running a business model on top of that (consultancy, support contracts, feature development contracts), some of us spend a lot of their free time on improving / maintaining nx-libs (as we call NoMachine's NXv3 at the moment). -+> -+> To outline the impact of my mail clearly: If you say that it was not legal by NoMachine to fork DXPC at the given time (before 2002), then all FLOSS remote desktop / remote application would be in real trouble, because then the core component of their software projects could not be considered as free (as in DFSG, Debian free software guidelines[4]) anymore. Also the code changes originally performed by NoMachine might have been illegal in the first place. All current maintenance activities and also planned future development on nx-libs would become questionable. -+> -+> Thus, I hope you can chime in on this: Dear developers of nx-libs, please assume the BSD-2-license as retroactive and applicable to DXPC version earlier than 3.8.1. As the copyright holder, I agree with modifications of code bases that originate before the change to BSD-2-clause license got introduced in 3.8.1 of DXPC. -+> -+> And... I will bring up that question later (but it is burning under my nails)... Be sure: The nx-libs maintainers would be happy to have the original DXPC author on the nx-libs developer team. But I will bring up that question later (when this very issue is settled). ;-) -+> -+> Greets, -+> Mike -+> -+> [1] https://github.com/ArcticaProject/nx-libs -+> [2] http://en.wikipedia.org/wiki/BSD_licenses#Previous_license -+> [3] http://bugs.debian.org/784565 -+> [4] http://de.wikipedia.org/wiki/Debian_Free_Software_Guidelines -+> -+> On Mo 11 Mai 2015 21:36:59 CEST, Francesco Poli wrote: -+> -+>> On Mon, 11 May 2015 09:26:36 +0000 Mike Gabriel wrote: -+>> -+>> [...] -+>>> As it seems, dxpc has been long ago relicensed to BSD-2-clause (for -+>>> v3.8.1 in/around 2002). -+>> -+>> This is great news, indeed! -+>> -+>>> -+>>> I have no exact clue, if NoMachine forked prior to that (if they quote -+>>> the old licensing terms, then probably they did). -+>> -+>> Yep, it's plausible... -+>> -+>>> -+>>> However, how do you see the situation considering that upstream -+>>> changed to BSD-2-clause a long time ago. What approach do you propose -+>>> for nx-libs-lite to get the issue fully fixed? -+>> -+>> If the fork has been performed before the DXPC re-licensing (as it's -+>> likely), I see two possible strategies: -+>> -+>> (A) someone gets in touch with DXPC copyright owners and asks them -+>> whether the re-licensing may be considered retroactive (applicable to -+>> older versions of DXPC); in case the answer is negative, DXPC copyright -+>> owners should be persuaded to make the re-licensing retroactive -+>> -+>> (B) nx-libs-lite upstream developers re-fork from scratch, basing the -+>> new code on a BSD-licensed version of DXPC (I suspect this may turn out -+>> to be somewhat painful...) -+>> -+>> -+>> Obviously, the optimal solution is (A). I hope it may work... -+>> -+>> Thanks for your time and for your prompt and kind replies. -+> -+> -+ -+ -+ -+ -+From mike.gabriel@das-netzwerkteam.de Tue May 12 15:42:13 2015 -+Received: (at 784565) by bugs.debian.org; 12 May 2015 15:42:13 +0000 -+X-Spam-Checker-Version: SpamAssassin 3.4.0-bugs.debian.org_2005_01_02 -+ (2014-02-07) on buxtehude.debian.org -+X-Spam-Level: -+X-Spam-Status: No, score=-6.4 required=4.0 tests=BAYES_00,FOURLA, -+ HAS_BUG_NUMBER,MDO_CABLE_TV3,T_RP_MATCHES_RCVD autolearn=ham -+ autolearn_force=no version=3.4.0-bugs.debian.org_2005_01_02 -+X-Spam-Bayes: score:0.0000 Tokens: new, 28; hammy, 150; neutral, 444; spammy, -+ 0. spammytokens: hammytokens:0.000-+--IIRC, 0.000-+--H*RU:sk:grimnir, -+ 0.000-+--H*r:sk:grimnir, 0.000-+--H*RU:78.46.204.98, -+ 0.000-+--H*RU:88.198.48.199 -+Return-path: <mike.gabriel@das-netzwerkteam.de> -+Received: from freya.das-netzwerkteam.de ([88.198.48.199]) -+ by buxtehude.debian.org with esmtps (TLS1.1:DHE_RSA_AES_256_CBC_SHA1:256) -+ (Exim 4.80) -+ (envelope-from <mike.gabriel@das-netzwerkteam.de>) -+ id 1YsCJx-0003Fj-12 -+ for 784565@bugs.debian.org; Tue, 12 May 2015 15:42:13 +0000 -+Received: from grimnir.das-netzwerkteam.de (grimnir.das-netzwerkteam.de [78.46.204.98]) -+ by freya.das-netzwerkteam.de (Postfix) with ESMTPS id AB2291F6 -+ for <784565@bugs.debian.org>; Tue, 12 May 2015 17:42:08 +0200 (CEST) -+Received: from localhost (localhost [127.0.0.1]) -+ by grimnir.das-netzwerkteam.de (Postfix) with ESMTP id 0899C3BFDA -+ for <784565@bugs.debian.org>; Tue, 12 May 2015 17:42:08 +0200 (CEST) -+X-Virus-Scanned: Debian amavisd-new at grimnir.das-netzwerkteam.de -+Received: from grimnir.das-netzwerkteam.de ([127.0.0.1]) -+ by localhost (grimnir.das-netzwerkteam.de [127.0.0.1]) (amavisd-new, port 10024) -+ with ESMTP id tKjFu527nUiq for <784565@bugs.debian.org>; -+ Tue, 12 May 2015 17:42:07 +0200 (CEST) -+Received: from localhost (localhost [127.0.0.1]) -+ by grimnir.das-netzwerkteam.de (Postfix) with ESMTP id 558633C022 -+ for <784565@bugs.debian.org>; Tue, 12 May 2015 17:42:07 +0200 (CEST) -+Received: from localhost (localhost [127.0.0.1]) -+ by grimnir.das-netzwerkteam.de (Postfix) with ESMTP id 1F4393BFDA -+ for <784565@bugs.debian.org>; Tue, 12 May 2015 17:42:07 +0200 (CEST) -+Received: from [10.215.43.89] (unknown [46.115.20.43]) -+ by grimnir.das-netzwerkteam.de (Postfix) with ESMTPSA id 867C23BA87; -+ Tue, 12 May 2015 17:42:02 +0200 (CEST) -+From: Mike Gabriel <mike.gabriel@das-netzwerkteam.de> -+Reply-To: Mike Gabriel <mike.gabriel@das-netzwerkteam.de> -+To: Kevin Vigor <kevin@vigor.nu> -+Cc: 784565@bugs.debian.org, x2go-dev@lists.x2go.org, nito.martinez@qindel.com, opensource@gznianguan.com, Francesco Poli <invernomuto@paranoici.org> -+Subject: Re: [pkg-x2go-devel] Bug#784565: nx-libs-lite: parts are derived -+ from non-free code -+X-Mailer: Modest 3.2 -+References: <20150506173532.7531.31389.reportbug@homebrew> -+ <20150511092636.Horde.oj6sHKnvQDt85T3EW1WhVA1@mail.das-netzwerkteam.de> -+ <20150511213659.34dce0505c493c1e23d2c3ee@paranoici.org> -+ <20150512044637.Horde.8WHdvRpU7GS9Szy323gv_Q2@mail.das-netzwerkteam.de> -+ <55521444.9090407@vigor.nu> -+In-Reply-To: <55521444.9090407@vigor.nu> -+Content-Type: text/plain; charset=utf-8 -+Content-ID: <1431445315.4712.6.camel@Nokia-N900> -+Date: Tue, 12 May 2015 17:41:55 +0200 -+Message-Id: <1431445315.4712.7.camel@Nokia-N900> -+Mime-Version: 1.0 -+Content-Transfer-Encoding: 8bit -+ -+Hi Kevin, -+ -+thanks for your feedback. Let us wait for Francesco, our expert on license issues, and see what he thinks about your feedback. -+ -+Thank you very much for providing info and sharing pieces of nx-libs's history. -+ -+As you sent your reply to the Debian bug tracker already, this will public statement enough, I guess. -+ -+Thanks a lot, -+Mike -+ -+-- -+ -+DAS-NETZWERKTEAM -+mike gabriel, herweg 7, 24357 fleckeby -+fon: +49 (1520) 1976148 -+ -+GnuPG Key ID 0x25771B13 -+mail: mike.gabriel@das-netzwerkteam.de, http://das-netzwerkteam.de -+ -+ -+----- Original message ----- -+> Hi Mike, et al, -+> -+>    I am not the original author of dxpc, that being Brian Pane. -+> However, I took over maintenance circa 1999 and am still the primary -+> maintainer (though the project has effectively been dead for most of a -+> decade now). -+> -+>    As you are aware, when I inherited the code, it was licensed under a -+> variant of the BSD license that did not include the 'with modification' -+> clause. To the best of my recollection, somebody from the FSF contacted -+> me circa 2001 regarding this and as a result, subsequent releases were -+> done under a standard 2-clause BSD license with the modification clause. -+> Again, to the best of my recollection, I contacted Brian about this -+> change and he offered no objection. -+> -+>    Further, I recall distinctly that NoMachine contacted me and -+> explicitly asked permission before including DXPC code in NX, which I -+> happily granted with no new conditions beyond the BSD license already in -+> play. -+> -+>    It is possible, though by no means certain, that I could dig up -+> ancient email to corroborate this account if necessary. However, I am -+> more than willing to publicly state that I believe NoMachine's use of -+> DXPC code to be both legal and ethical, and that my intent when changing -+> the license to 2-clause BSD was simply to clarity the existing intent -+> and that it ought therefore be considered retroactive. -+> -+>    Yours, -+>       Kevin Vigor -+> -+> On 05/11/15 22:46, Mike Gabriel wrote: -+> > Dear Kevin, -+> > -+> > (I Cc: several people involved in this, also the X2Go development -+> > mailing list...) -+> > -+> > [If you feel unconfortable with discussing the details / the impact of -+> > the below in public, feel free to answer to me directly first with -+> > questions and concerns, before answering to all people who are listed -+> > in Cc:.] -+> > -+> > Someone from the Debian legal team recently brought up a license issue -+> > discovered in nx-libs 3.x series. -+> > -+> > TL;DR; Suggested by Francesco Poli from the Debian legal team: """ -+> > (A) someone gets in touch with DXPC copyright owners and asks them -+> > whether the re-licensing [in 2002] may be considered retroactive -+> > (applicable to older versions of DXPC); in case the answer is -+> > negative, DXPC copyright owners should be persuaded to make the -+> > re-licensing retroactive """ -+> > -+> > The person contacting you about the above question is me. Mike -+> > Gabriel, Debian Developer and one of the current upstream maintainers -+> > of nx-libs 3.x (previously also know as "NX redistributed" for X2Go) -+> > [1]. -+> > -+> > This issue requires some time of reading from you and (hopefully) a -+> > public statement, that the original DXPC code can be considered as -+> > BSD-2-clause (the current license) also for released versions prior -+> > 2002 when the ancient BSD license template [2] was still shipped with -+> > DXPC. -+> > -+> > For a complete follow-up, please check Debian bug #784565 [3]. -+> > -+> > We are aware that NoMachine forked DXPC at some early stage around the -+> > year 2000 and wrote their own commercial product around it. Obviously, -+> > this fork happened before 2002 (i.e., before DXPC release 3.8.1), as -+> > libxcomp3 in NoMachine's NX ships the previously used BSD license -+> > template. I am not sure, if that fork was easy for you or actually a -+> > nuisance. I may only guess at this point. I'd be happy to know more -+> > (maybe not in this mail thread, though). -+> > -+> > NoMachine has stopped publishing NXv3 updates a couple of years ago -+> > (2011 IIRC), now. The maintenance has been moved into the hands of the -+> > currently available FLOSS projects "X2Go", "Arctica Project" [NEW] and -+> > "TheQVD". Some of us are running a business model on top of that -+> > (consultancy, support contracts, feature development contracts), some -+> > of us spend a lot of their free time on improving / maintaining -+> > nx-libs (as we call NoMachine's NXv3 at the moment). -+> > -+> > To outline the impact of my mail clearly: If you say that it was not -+> > legal by NoMachine to fork DXPC at the given time (before 2002), then -+> > all FLOSS remote desktop / remote application would be in real -+> > trouble, because then the core component of their software projects -+> > could not be considered as free (as in DFSG, Debian free software -+> > guidelines[4]) anymore. Also the code changes originally performed by -+> > NoMachine might have been illegal in the first place. All current -+> > maintenance activities and also planned future development on nx-libs -+> > would become questionable. -+> > -+> > Thus, I hope you can chime in on this: Dear developers of nx-libs, -+> > please assume the BSD-2-license as retroactive and applicable to DXPC -+> > version earlier than 3.8.1. As the copyright holder, I agree with -+> > modifications of code bases that originate before the change to -+> > BSD-2-clause license got introduced in 3.8.1 of DXPC. -+> > -+> > And... I will bring up that question later (but it is burning under my -+> > nails)... Be sure: The nx-libs maintainers would be happy to have the -+> > original DXPC author on the nx-libs developer team. But I will bring -+> > up that question later (when this very issue is settled). ;-) -+> > -+> > Greets, -+> > Mike -+> > -+> > [1] https://github.com/ArcticaProject/nx-libs -+> > [2] http://en.wikipedia.org/wiki/BSD_licenses#Previous_license -+> > [3] http://bugs.debian.org/784565 -+> > [4] http://de.wikipedia.org/wiki/Debian_Free_Software_Guidelines -+> > -+> > On Mo 11 Mai 2015 21:36:59 CEST, Francesco Poli wrote: -+> > -+> > > On Mon, 11 May 2015 09:26:36 +0000 Mike Gabriel wrote: -+> > > -+> > > [...] -+> > > > As it seems, dxpc has been long ago relicensed to BSD-2-clause (for -+> > > > v3.8.1 in/around 2002). -+> > > -+> > > This is great news, indeed! -+> > > -+> > > > -+> > > > I have no exact clue, if NoMachine forked prior to that (if they -+> > > > quote the old licensing terms, then probably they did). -+> > > -+> > > Yep, it's plausible... -+> > > -+> > > > -+> > > > However, how do you see the situation considering that upstream -+> > > > changed to BSD-2-clause a long time ago. What approach do you -+> > > > propose for nx-libs-lite to get the issue fully fixed? -+> > > -+> > > If the fork has been performed before the DXPC re-licensing (as it's -+> > > likely), I see two possible strategies: -+> > > -+> > > (A) someone gets in touch with DXPC copyright owners and asks them -+> > > whether the re-licensing may be considered retroactive (applicable to -+> > > older versions of DXPC); in case the answer is negative, DXPC -+> > > copyright owners should be persuaded to make the re-licensing -+> > > retroactive -+> > > -+> > > (B) nx-libs-lite upstream developers re-fork from scratch, basing the -+> > > new code on a BSD-licensed version of DXPC (I suspect this may turn -+> > > out to be somewhat painful...) -+> > > -+> > > -+> > > Obviously, the optimal solution is (A). I hope it may work... -+> > > -+> > > Thanks for your time and for your prompt and kind replies. -+> > -+> > -+> -+ -+ -+ -+ -+From invernomuto@paranoici.org Tue May 12 21:42:01 2015 -+Received: (at 784565) by bugs.debian.org; 12 May 2015 21:42:01 +0000 -+X-Spam-Checker-Version: SpamAssassin 3.4.0-bugs.debian.org_2005_01_02 -+ (2014-02-07) on buxtehude.debian.org -+X-Spam-Level: -+X-Spam-Status: No, score=-12.0 required=4.0 tests=BAYES_00,DKIM_SIGNED, -+ DKIM_VALID,DKIM_VALID_AU,FOURLA,HAS_BUG_NUMBER,PGPSIGNATURE,SPF_HELO_PASS, -+ SPF_PASS autolearn=ham autolearn_force=no -+ version=3.4.0-bugs.debian.org_2005_01_02 -+X-Spam-Bayes: score:0.0000 Tokens: new, 15; hammy, 150; neutral, 119; spammy, -+ 0. spammytokens: hammytokens:0.000-+--H*UA:sk:x86_64-, -+ 0.000-+--H*x:sk:x86_64-, 0.000-+--H*c:PGP-SHA256, 0.000-+--H*c:SignHturH, -+ 0.000-+--H*c:pgp-signature -+Return-path: <invernomuto@paranoici.org> -+Received: from perdizione.investici.org ([94.23.50.208]) -+ by buxtehude.debian.org with esmtps (TLS1.2:DHE_RSA_AES_256_CBC_SHA256:256) -+ (Exim 4.80) -+ (envelope-from <invernomuto@paranoici.org>) -+ id 1YsHw8-0008Hh-DT -+ for 784565@bugs.debian.org; Tue, 12 May 2015 21:42:01 +0000 -+Received: from [94.23.50.208] (perdizione [94.23.50.208]) (Authenticated sender: invernomuto@paranoici.org) by localhost (Postfix) with ESMTPSA id 9E73512097E; -+ Tue, 12 May 2015 21:41:55 +0000 (UTC) -+DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=paranoici.org; -+ s=stigmate; t=1431466915; -+ bh=w0yVuJLtWq+0cj6zbjNb4THkJk0Xq3N9SMQ1+u0ZZnk=; -+ h=Date:From:To:Cc:Subject:In-Reply-To:References; -+ b=RRQcr33uMGnEaupGoWl0nXectE2hPbUghdie73/SnVp5Ax5QWxqK90ic5VPUE7RsN -+ RsJ6HcYccQEzYLzm37W24u9eQZFa+Oc1CZaJBvFgOg9MAvh6tHaLUgOuFGkYXhn5R0 -+ Nlq5WHCpVKi9YvGfj/aAtfe84CJPt2HIKAqPXb5w= -+Received: from frx by homebrew with local (Exim 4.85) -+ (envelope-from <invernomuto@paranoici.org>) -+ id 1YsHvP-00019Q-D1; Tue, 12 May 2015 23:41:15 +0200 -+Date: Tue, 12 May 2015 23:40:48 +0200 -+From: Francesco Poli <invernomuto@paranoici.org> -+To: Mike Gabriel <mike.gabriel@das-netzwerkteam.de> -+Cc: Kevin Vigor <kevin@vigor.nu>, 784565@bugs.debian.org, -+ x2go-dev@lists.x2go.org, nito.martinez@qindel.com, -+ opensource@gznianguan.com -+Subject: Re: [pkg-x2go-devel] Bug#784565: nx-libs-lite: parts are derived -+ from non-free code -+Message-Id: <20150512234048.054319a449ffadcf87577425@paranoici.org> -+In-Reply-To: <1431445315.4712.7.camel@Nokia-N900> -+References: <20150506173532.7531.31389.reportbug@homebrew> -+ <20150511092636.Horde.oj6sHKnvQDt85T3EW1WhVA1@mail.das-netzwerkteam.de> -+ <20150511213659.34dce0505c493c1e23d2c3ee@paranoici.org> -+ <20150512044637.Horde.8WHdvRpU7GS9Szy323gv_Q2@mail.das-netzwerkteam.de> -+ <55521444.9090407@vigor.nu> -+ <1431445315.4712.7.camel@Nokia-N900> -+X-Mailer: Sylpheed 3.5.0beta1 (GTK+ 2.24.25; x86_64-pc-linux-gnu) -+Mime-Version: 1.0 -+Content-Type: multipart/signed; protocol="application/pgp-signature"; -+ micalg="PGP-SHA256"; -+ boundary="Signature=_Tue__12_May_2015_23_40_48_+0200_KqpLAiCdvC+4zCCk" -+ -+--Signature=_Tue__12_May_2015_23_40_48_+0200_KqpLAiCdvC+4zCCk -+Content-Type: text/plain; charset=US-ASCII -+Content-Disposition: inline -+Content-Transfer-Encoding: quoted-printable -+ -+On Tue, 12 May 2015 17:41:55 +0200 Mike Gabriel wrote: -+ -+> Hi Kevin, -+ -+Hello Mike, hello Kevin, hello to all the other recipients. -+ -+First of all, I wish to express my gratitude to Kevin for his prompt, -+kind and generous response. -+ -+>=20 -+> thanks for your feedback. Let us wait for Francesco, our expert on licens= -+e issues, and see what he thinks about your feedback. -+ -+I think that this is an important first step to solve this issue for -+the best. -+Kevin Vigor is one of the copyright owners of the code that was forked -+before the re-licensing. -+We now know that he intended the re-licensing to be retroactive and -+this is really good. -+ -+I think that now it would be useful to ascertain that the other -+copyright owners (Brian Pane, Zachary Vonler, Gian Filippo Pinzari) are -+also OK with this interpretation of the re-licensing operation. -+ -+Maybe Kevin is able to dig the original conversations (assuming they -+were carried on by e-mail or similar archived means) or otherwise to -+get in touch with them and check? Or, alternatively, Kevin could help -+Mike to get in touch with them? -+ -+I hope everything may be settled for the best soon. -+Thanks a lot to everyone involved. -+ -+ -+ -+--=20 -+ http://www.inventati.org/frx/ -+ There's not a second to spare! To the laboratory! -+..................................................... Francesco Poli . -+ GnuPG key fpr =3D=3D CA01 1147 9CD2 EFDF FB82 3925 3E1C 27E1 1F69 BFFE -+ -+--Signature=_Tue__12_May_2015_23_40_48_+0200_KqpLAiCdvC+4zCCk -+Content-Type: application/pgp-signature -+ -+-----BEGIN PGP SIGNATURE----- -+Version: GnuPG v2 -+ -+iQIcBAEBCAAGBQJVUnNlAAoJED4cJ+Efab/+CBQP/33+SjLcIk2VZbjeeyCxhCAo -+kmgg9BDtqce1Dy22ONotywDNQ187suqlmkEa6yAAdglB0M3CYMFKSIsZHn2C0uGb -+B45HnzXE7PJd/j/WOXuCIvDe70iGJ7Ubk16DCjyRuKsF70cr2DcsbieiwZh8Wi4v -+GXNOxpm5Nv2bs1vQnRzYFc7GLWny3eCqcWF23XisqvxQecOHopoGWr9F6NuS5ymz -+NQ8Z7eanEPaqE86GYFIqJyt9Wcz+fM2r1d/IrNmYaTVBJPrqndQKnXJAViwYhtaM -+V8+CIKDuttcIYMto9dyE9+vr6wgtDyepVatQIHyVA2LpzR9jub8MGelXMdA7em3i -+/H3gz3H/tQti3T3HoHu+4CSAEWsXdtkHq2RWU9k3+HQuWB00z7WDr404xzs7k2Wg -+h6VR9c+VjV92KnMvDqWjE4VBYjrn6Ag5u/0Cf6HMx5RAGFNL8ROjOGbQSskfUogo -+GnWX2b8yLIe8ojg3AVowWV2oKVlWzsjZVHH9lp0M/lqGmnPVEJk0mh6DKbZPjK8O -+P2dpZ8IlSa18R2CvMWnf7HXKRR/s2ef7rUmBkT2sFnTwsT5PeDSU45/7ZuWbNIpw -+8/Y5q38c36Axeng1J0OCR8YX47dH0PubVnBzYEqoun3GucR1jifOiNzWLyM2ZxNe -+0JSSqn5ddFC8/iuGpFDI -+=ZqCl -+-----END PGP SIGNATURE----- -+ -+--Signature=_Tue__12_May_2015_23_40_48_+0200_KqpLAiCdvC+4zCCk-- -+ -+ -+ -+From niels@thykier.net Wed May 13 16:04:21 2015 -+Received: (at control) by bugs.debian.org; 13 May 2015 16:04:21 +0000 -+X-Spam-Checker-Version: SpamAssassin 3.4.0-bugs.debian.org_2005_01_02 -+ (2014-02-07) on buxtehude.debian.org -+X-Spam-Level: -+X-Spam-Status: No, score=-3.9 required=4.0 tests=BAYES_00,DKIM_SIGNED, -+ DKIM_VALID,DKIM_VALID_AU,RCVD_IN_DNSWL_LOW,RCVD_IN_MSPIKE_H4, -+ RCVD_IN_MSPIKE_WL autolearn=ham autolearn_force=no -+ version=3.4.0-bugs.debian.org_2005_01_02 -+X-Spam-Bayes: score:0.0000 Tokens: new, 6; hammy, 61; neutral, 18; spammy, 0. -+ spammytokens: hammytokens:0.000-+--H*u:devscripts, 0.000-+--H*u:bts, -+ 0.000-+--H*UA:bts, 0.000-+--H*UA:devscripts, 0.000-+--H*MI:thykier -+Return-path: <niels@thykier.net> -+Received: from mailrelay11.public.one.com ([195.47.247.189]) -+ by buxtehude.debian.org with esmtps (TLS1.2:DHE_RSA_AES_256_CBC_SHA256:256) -+ (Exim 4.80) -+ (envelope-from <niels@thykier.net>) -+ id 1YsZ8u-0002Ch-RD -+ for control@bugs.debian.org; Wed, 13 May 2015 16:04:21 +0000 -+X-HalOne-Cookie: 4652f81fa62fa9da4dd9249e7484054c41bc782d -+X-HalOne-ID: b22b9887-f989-11e4-950a-b82a72d06996 -+DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; -+ d=thykier.net; s=20140924; -+ h=from:subject:date:message-id:to; -+ bh=EysymZxJFEX8N6fIBUIaFmFP7WdtVLf5PrmWzWVb22Y=; -+ b=Ur7nNbvtl3pu7O1YKIHwSM8MHIW+JPWJKM1GBE23FB4sLbENnBM2V0rmU5++qyolEv7hHAhvKkWFO -+ lH4tbbHCyoYVdUE76nRT/1HEb5/X+pxjrsC1qTXWWXkekbuLNcDwIl0+WdVVEd5B4LYpW7igVWi4AH -+ XncGXx/MNYDQvFiU= -+Received: from thykier.net (unknown [80.62.116.219]) -+ by smtpfilter3.public.one.com (Halon Mail Gateway) with ESMTPSA -+ for <control@bugs.debian.org>; Wed, 13 May 2015 16:04:12 +0000 (GMT) -+Received: by thykier.net (Postfix, from userid 1000) -+ id 985EB4BB; Wed, 13 May 2015 18:04:10 +0200 (CEST) -+From: Niels Thykier <niels@thykier.net> -+To: control@bugs.debian.org -+Subject: tagging 784565 -+Date: Wed, 13 May 2015 18:04:10 +0200 -+User-Agent: devscripts bts/2.15.4 -+Message-ID: <1431533050-371-bts-niels@thykier.net> -+Delivered-To: control@bugs.debian.org -+ -+# distributable -+tags 784565 + jessie-ignore -+thanks -+ -+ -+ -+ -+From mike.gabriel@das-netzwerkteam.de Thu May 14 04:58:16 2015 -+Received: (at 784565) by bugs.debian.org; 14 May 2015 04:58:16 +0000 -+X-Spam-Checker-Version: SpamAssassin 3.4.0-bugs.debian.org_2005_01_02 -+ (2014-02-07) on buxtehude.debian.org -+X-Spam-Level: -+X-Spam-Status: No, score=-11.9 required=4.0 tests=BAYES_00,FOURLA, -+ HAS_BUG_NUMBER,PGPSIGNATURE,T_RP_MATCHES_RCVD autolearn=ham -+ autolearn_force=no version=3.4.0-bugs.debian.org_2005_01_02 -+X-Spam-Bayes: score:0.0000 Tokens: new, 22; hammy, 150; neutral, 339; spammy, -+ 0. spammytokens: hammytokens:0.000-+--H*c:pgp-signature, -+ 0.000-+--H*c:protocol, 0.000-+--H*c:micalg, 0.000-+--H*c:signed, -+ 0.000-+--H*RU:sk:grimnir -+Return-path: <mike.gabriel@das-netzwerkteam.de> -+Received: from freya.das-netzwerkteam.de ([88.198.48.199]) -+ by buxtehude.debian.org with esmtps (TLS1.1:DHE_RSA_AES_256_CBC_SHA1:256) -+ (Exim 4.80) -+ (envelope-from <mike.gabriel@das-netzwerkteam.de>) -+ id 1YslDr-0000NV-Ur -+ for 784565@bugs.debian.org; Thu, 14 May 2015 04:58:16 +0000 -+Received: from grimnir.das-netzwerkteam.de (grimnir.das-netzwerkteam.de [78.46.204.98]) -+ by freya.das-netzwerkteam.de (Postfix) with ESMTPS id A03C82B5; -+ Thu, 14 May 2015 06:58:11 +0200 (CEST) -+Received: from localhost (localhost [127.0.0.1]) -+ by grimnir.das-netzwerkteam.de (Postfix) with ESMTP id E89E93BD2E; -+ Thu, 14 May 2015 06:58:10 +0200 (CEST) -+X-Virus-Scanned: Debian amavisd-new at grimnir.das-netzwerkteam.de -+Received: from grimnir.das-netzwerkteam.de ([127.0.0.1]) -+ by localhost (grimnir.das-netzwerkteam.de [127.0.0.1]) (amavisd-new, port 10024) -+ with ESMTP id 5m6G8sqwjlfJ; Thu, 14 May 2015 06:58:10 +0200 (CEST) -+Received: from grimnir.das-netzwerkteam.de (localhost [127.0.0.1]) -+ by grimnir.das-netzwerkteam.de (Postfix) with ESMTPS id 5713E3BB3A; -+ Thu, 14 May 2015 06:58:10 +0200 (CEST) -+Received: from bifrost.das-netzwerkteam.de (bifrost.das-netzwerkteam.de -+ [178.62.101.154]) by mail.das-netzwerkteam.de (Horde Framework) with HTTP; -+ Thu, 14 May 2015 04:58:10 +0000 -+Date: Thu, 14 May 2015 04:58:09 +0000 -+Message-ID: <20150514045809.Horde.-3NIZzBnA5V5B6a721F2kg2@mail.das-netzwerkteam.de> -+From: Mike Gabriel <mike.gabriel@das-netzwerkteam.de> -+To: Francesco Poli <invernomuto@paranoici.org> -+Cc: Kevin Vigor <kevin@vigor.nu>, 784565@bugs.debian.org, -+ x2go-dev@lists.x2go.org, nito.martinez@qindel.com, opensource@gznianguan.com -+Subject: Re: [pkg-x2go-devel] Bug#784565: nx-libs-lite: parts are derived -+ from non-free code -+References: <20150506173532.7531.31389.reportbug@homebrew> -+ <20150511092636.Horde.oj6sHKnvQDt85T3EW1WhVA1@mail.das-netzwerkteam.de> -+ <20150511213659.34dce0505c493c1e23d2c3ee@paranoici.org> -+ <20150512044637.Horde.8WHdvRpU7GS9Szy323gv_Q2@mail.das-netzwerkteam.de> -+ <55521444.9090407@vigor.nu> <1431445315.4712.7.camel@Nokia-N900> -+ <20150512234048.054319a449ffadcf87577425@paranoici.org> -+In-Reply-To: <20150512234048.054319a449ffadcf87577425@paranoici.org> -+User-Agent: Internet Messaging Program (IMP) H5 (6.2.2) -+Accept-Language: de,en -+Organization: DAS-NETZWERKTEAM -+X-Originating-IP: 178.62.101.154 -+X-Remote-Browser: Mozilla/5.0 (X11; Linux x86_64; rv:32.0) Gecko/20100101 -+ Firefox/32.0 Iceweasel/32.0 -+Content-Type: multipart/signed; boundary="=_SHoEHYV8bfary9lJHYP1lQ1"; -+ protocol="application/pgp-signature"; micalg=pgp-sha1 -+MIME-Version: 1.0 -+ -+This message is in MIME format and has been PGP signed. -+ -+--=_SHoEHYV8bfary9lJHYP1lQ1 -+Content-Type: text/plain; charset=us-ascii; format=flowed; DelSp=Yes -+Content-Disposition: inline -+Content-Transfer-Encoding: quoted-printable -+ -+Hi all, -+ -+there has been an off-list mail exchange between Francesco and Kevin=20=20 -+(and=20me in Cc:) which I will quote at the end of this mail (as it was=20= -+=20 -+not=20meant to be private and we should fully document the flow on this=20= -+=20 -+issue). -+ -+@Kevin:=20I will take you off this mail thread's Cc: field with my next=20= -+=20 -+post.=20Feel free to follow-up via #784565 [1] on the Debian bug=20=20 -+tracker.=20Thanks a lot for being so responsive and generous with=20=20 -+providing=20information. -+ -+On Di 12 Mai 2015 23:40:48 CEST, Francesco Poli wrote: -+ -+> On Tue, 12 May 2015 17:41:55 +0200 Mike Gabriel wrote: -+ -+> I think that now it would be useful to ascertain that the other -+> copyright owners (Brian Pane, Zachary Vonler, Gian Filippo Pinzari) are -+> also OK with this interpretation of the re-licensing operation. -+ -+As stated by Kevin, Gian Filippo worked/works on the NoMachine side. I=20= -+=20 -+will=20include him in Cc:. -+ -+For Brian Pane we also found and e-Mail address, for Zach Vonler, I=20=20 -+will=20use the mail address provided in DXPC code (which might be=20=20 -+outdated),=20but I think I actually have found his phone number on the=20= -+=20 -+web,=20so if that mail address bounces I will give him a ring. -+ -+> Maybe Kevin is able to dig the original conversations (assuming they -+> were carried on by e-mail or similar archived means) or otherwise to -+> get in touch with them and check? Or, alternatively, Kevin could help -+ -+As stated in the forwarded messages below, Kevin was unable to dig out=20= -+=20 -+any=20mails from backups. So we switch to plan B: contact Brian, Zach=20=20 -+and=20Gian Filippo. -+ -+> Mike to get in touch with them? -+ -+I will do that. -+ -+> I hope everything may be settled for the best soon. -+> Thanks a lot to everyone involved. -+ -+/me, too. -+ -+light+love -+Mike -+ -+[1] http://bugs.debian.org/784565 -+ -+ -+----- Weitergeleitete Nachricht von Kevin Vigor <kevin@vigor.nu> ----- -+ Datum: Wed, 13 May 2015 09:01:27 -0600 -+ Von: Kevin Vigor <kevin@vigor.nu> -+Betreff: Re: [pkg-x2go-devel] Bug#784565: nx-libs-lite: parts are=20=20 -+derived=20from non-free code -+ An: Francesco Poli <invernomuto@paranoici.org> -+ Cc: Mike Gabriel <mike.gabriel@das-netzwerkteam.de> -+ -+On 05/12/15 15:40, Francesco Poli wrote: -+ -+> Maybe Kevin is able to dig the original conversations (assuming they -+> were carried on by e-mail or similar archived means) or otherwise to -+> get in touch with them and check? Or, alternatively, Kevin could help -+> Mike to get in touch with them? -+ -+I'm afraid I was not able to dig anything out of old backups last=20=20 -+night.=20I still have a stack of CDs to look through, but don't hold=20=20 -+your=20breath. Sorry about that. -+ -+I have never had any contact with Zachary Vonler or Gian Filippo=20=20 -+Pinzari,=20and have not spoken with Brian Pane in many years, so I have=20= -+=20 -+no=20recent contact information for any of them. However, a quick google=20= -+=20 -+turns=20up: -+ -+https://www.linkedin.com/profile/view?id=3D728859 -+http://www.brianp.net/contact/ -+ -+which is almost certainly the right Brian Pane (he was at CNet at the=20=20 -+proper=20time). -+ -+ -+ Good luck, -+ Kevin -+ -+----- Ende der weitergeleiteten Nachricht ----- -+ -+----- Weitergeleitete Nachricht von Francesco Poli=20=20 -+<invernomuto@paranoici.org>=20----- -+ Datum: Wed, 13 May 2015 19:43:44 +0200 -+ Von: Francesco Poli <invernomuto@paranoici.org> -+Betreff: Re: [pkg-x2go-devel] Bug#784565: nx-libs-lite: parts are=20=20 -+derived=20from non-free code -+ An: Kevin Vigor <kevin@vigor.nu> -+ Cc: Mike Gabriel <mike.gabriel@das-netzwerkteam.de> -+ -+On Wed, 13 May 2015 09:01:27 -0600 Kevin Vigor wrote: -+ -+> On 05/12/15 15:40, Francesco Poli wrote: -+> -+> > Maybe Kevin is able to dig the original conversations (assuming they -+> > were carried on by e-mail or similar archived means) or otherwise to -+> > get in touch with them and check? Or, alternatively, Kevin could help -+> > Mike to get in touch with them? -+> -+> I'm afraid I was not able to dig anything out of old backups last=20=20 -+>=20night. I still have a stack of CDs to look through, but don't hold=20= -+=20 -+>=20your breath. Sorry about that. -+ -+Thanks a lot for searching: this is really appreciated, at least from -+my side. -+ -+> -+> I have never had any contact with Zachary Vonler or Gian Filippo Pinzari, -+ -+Then I wonder how it was possible to re-license DXPC in 2002... -+:-| -+ -+> and have not spoken with Brian Pane in many years, so I have no recent -+contact information for any of them. However, a quick google turns up: -+> -+> https://www.linkedin.com/profile/view?id=3D728859 -+> http://www.brianp.net/contact/ -+> -+> which is almost certainly the right Brian Pane (he was at CNet at=20=20 -+>=20the proper time). -+ -+This could be really useful, thank you very much! -+ -+Mike, I hope the search may go on from there: Brian should be asked -+about the retroactive nature of the re-licensing of DXPC and maybe he -+also knows how to get in touch with Zachary and/or Gian Filippo... -+ -+ -+P.S.: Kevin, any special reason why you dropped several addresses from -+the Cc list? Should this part of our conversation be kept private for -+the time being? Please clarify. Thanks! -+ -+----- Ende der weitergeleiteten Nachricht ----- -+ -+----- Weitergeleitete Nachricht von Kevin Vigor <kevin@vigor.nu> ----- -+ Datum: Wed, 13 May 2015 14:08:48 -0600 -+ Von: Kevin Vigor <kevin@vigor.nu> -+Betreff: Re: [pkg-x2go-devel] Bug#784565: nx-libs-lite: parts are=20=20 -+derived=20from non-free code -+ An: Francesco Poli <invernomuto@paranoici.org> -+ Cc: Mike Gabriel <mike.gabriel@das-netzwerkteam.de> -+ -+On 05/13/15 11:43, Francesco Poli wrote: -+> On Wed, 13 May 2015 09:01:27 -0600 Kevin Vigor wrote: -+ -+>> I have never had any contact with Zachary Vonler or Gian Filippo Pinzari= -+, -+> -+> Then I wonder how it was possible to re-license DXPC in 2002... -+> :-| -+> -+ -+I believe Gian worked on the NoMachine code; he has never contributed=20=20 -+to=20DXPC directly. -+ -+Zachary Vonler was allegedly the maintainer of DXPC for a while circa=20=20 -+1999,=20but never responded to any email when I attempted to contact=20=20 -+him,=20which is how I came to take over maintenance. -+ -+ -+> P.S.: Kevin, any special reason why you dropped several addresses from -+> the Cc list? Should this part of our conversation be kept private for -+> the time being? Please clarify. Thanks! -+ -+No, I was just trying to keep from spamming email lists unnecessarily.=20= -+=20 -+I=20do not consider any part of this conversation private. -+ -+----- Ende der weitergeleiteten Nachricht ----- -+ -+----- Weitergeleitete Nachricht von Francesco Poli=20=20 -+<invernomuto@paranoici.org>=20----- -+ Datum: Wed, 13 May 2015 22:50:32 +0200 -+ Von: Francesco Poli <invernomuto@paranoici.org> -+Betreff: Re: [pkg-x2go-devel] Bug#784565: nx-libs-lite: parts are=20=20 -+derived=20from non-free code -+ An: Kevin Vigor <kevin@vigor.nu> -+ Cc: Mike Gabriel <mike.gabriel@das-netzwerkteam.de> -+ -+On Wed, 13 May 2015 14:08:48 -0600 Kevin Vigor wrote: -+ -+> On 05/13/15 11:43, Francesco Poli wrote: -+> > On Wed, 13 May 2015 09:01:27 -0600 Kevin Vigor wrote: -+> -+> >> I have never had any contact with Zachary Vonler or Gian Filippo Pinza= -+ri, -+> > -+> > Then I wonder how it was possible to re-license DXPC in 2002... -+> > :-| -+> > -+> -+> I believe Gian worked on the NoMachine code; he has never=20=20 -+>=20contributed to DXPC directly. -+ -+Good, then only Zachary has to be tracked down. -+ -+> -+> Zachary Vonler was allegedly the maintainer of DXPC for a while=20=20 -+>=20circa 1999, but never responded to any email when I attempted to=20=20 -+>=20contact him, which is how I came to take over maintenance. -+ -+Let's hope Brian is able to help Mike in getting in touch with -+Zachary... -+ -+> -+> -+> > P.S.: Kevin, any special reason why you dropped several addresses from -+> > the Cc list? Should this part of our conversation be kept private for -+> > the time being? Please clarify. Thanks! -+> -+> No, I was just trying to keep from spamming email lists=20=20 -+>=20unnecessarily. I do not consider any part of this conversation=20=20 -+>=20private. -+> -+ -+OK, thanks for clarifying. -+ -+----- Ende der weitergeleiteten Nachricht ----- -+ -+--=20 -+ -+DAS-NETZWERKTEAM -+mike gabriel, herweg 7, 24357 fleckeby -+fon: +49 (1520) 1976 148 -+ -+GnuPG Key ID 0x25771B31 -+mail: mike.gabriel@das-netzwerkteam.de, http://das-netzwerkteam.de -+ -+freeBusy: -+https://mail.das-netzwerkteam.de/freebusy/m.gabriel%40das-netzwerkteam.de.x= -+fb -+ -+--=_SHoEHYV8bfary9lJHYP1lQ1 -+Content-Type: application/pgp-signature -+Content-Description: Digitale PGP-Signatur -+Content-Disposition: inline -+ -+-----BEGIN PGP SIGNATURE----- -+Version: GnuPG v1 -+ -+iQIcBAABAgAGBQJVVCthAAoJEJr0azAldxsx3KUP/2997X9KnhVEedREGxsuqvQn -+Dp5oGK2JPf0Z2MZui1FVehvakoHQD0MuhpVs7ZktnshwNvAgxyhW5esC617a9gsz -+jJvaJz0S0MPHfSM4Dz8Yg2t0u0DpueVZBpOeDOlt9W9ECXkpe2YPk5AOialHwTPX -+OP5KKfMSLEGFreUL7U0WeetC/To5zm54Ivx1a0wx2I+HdPJ0YXTxIC7JvUSNejFE -+0+yhK1thXf38juOeb2pxTvRQXcj1IoDMRSc0k7KHeNGmP1NF38fh1illPlBABG1u -+wa3hn+1uMe3+On8LJkDtIHtsXrR2RUuOP+0FbI4rTRo5SOeVFNRSl1ldp2ywl8rQ -+9WkK623cuurOydsHjj+fIlcb7GN/OgrTay8VRS3jUjy9tlQ7PCpF5W1m7kMPHrCP -+nh6/hUa6ep8qE+86dosQS4FxvOgSHOEpbNZ8ulEib/ClHr9wsnWpjxQtvRnZsBTl -+PAIXKvdiHUCgyfs4efSWYtR8QUJTYmPDrGr2V8jWAtzZOo6NSa09c2Yc2OxLRDpP -+HBGVSLUOrocvbb3wPAgnsogxtYCpzo/ga1Rnx2LdIfLNaTv62sek+nHqJzICqtcH -+SdMajeJTVksKQCmHqIQS7C2V44cDYizTe9exZIl75OKT6TDujuW/KZiPQK6VCCNv -+eEgOxmCOHlc8YLLz0dEP -+=N9IW -+-----END PGP SIGNATURE----- -+ -+--=_SHoEHYV8bfary9lJHYP1lQ1-- -+ -+ -+ -+ -+From mike.gabriel@das-netzwerkteam.de Thu May 14 05:55:46 2015 -+Received: (at 784565) by bugs.debian.org; 14 May 2015 05:55:46 +0000 -+X-Spam-Checker-Version: SpamAssassin 3.4.0-bugs.debian.org_2005_01_02 -+ (2014-02-07) on buxtehude.debian.org -+X-Spam-Level: -+X-Spam-Status: No, score=-11.9 required=4.0 tests=BAYES_00,FOURLA, -+ HAS_BUG_NUMBER,PGPSIGNATURE,T_RP_MATCHES_RCVD autolearn=ham -+ autolearn_force=no version=3.4.0-bugs.debian.org_2005_01_02 -+X-Spam-Bayes: score:0.0000 Tokens: new, 23; hammy, 150; neutral, 392; spammy, -+ 0. spammytokens: hammytokens:0.000-+--H*c:pgp-signature, -+ 0.000-+--H*c:protocol, 0.000-+--H*c:micalg, 0.000-+--H*c:signed, -+ 0.000-+--H*RU:sk:grimnir -+Return-path: <mike.gabriel@das-netzwerkteam.de> -+Received: from freya.das-netzwerkteam.de ([88.198.48.199]) -+ by buxtehude.debian.org with esmtps (TLS1.1:DHE_RSA_AES_256_CBC_SHA1:256) -+ (Exim 4.80) -+ (envelope-from <mike.gabriel@das-netzwerkteam.de>) -+ id 1Ysm7W-0005fv-3I -+ for 784565@bugs.debian.org; Thu, 14 May 2015 05:55:46 +0000 -+Received: from grimnir.das-netzwerkteam.de (grimnir.das-netzwerkteam.de [78.46.204.98]) -+ by freya.das-netzwerkteam.de (Postfix) with ESMTPS id BDB433282; -+ Thu, 14 May 2015 07:55:43 +0200 (CEST) -+Received: from localhost (localhost [127.0.0.1]) -+ by grimnir.das-netzwerkteam.de (Postfix) with ESMTP id 20DC03BD2E; -+ Thu, 14 May 2015 07:55:43 +0200 (CEST) -+X-Virus-Scanned: Debian amavisd-new at grimnir.das-netzwerkteam.de -+Received: from grimnir.das-netzwerkteam.de ([127.0.0.1]) -+ by localhost (grimnir.das-netzwerkteam.de [127.0.0.1]) (amavisd-new, port 10024) -+ with ESMTP id 3Dt4TKuxIMPh; Thu, 14 May 2015 07:55:43 +0200 (CEST) -+Received: from grimnir.das-netzwerkteam.de (localhost [127.0.0.1]) -+ by grimnir.das-netzwerkteam.de (Postfix) with ESMTPS id 871AB3B9EA; -+ Thu, 14 May 2015 07:55:42 +0200 (CEST) -+Received: from bifrost.das-netzwerkteam.de (bifrost.das-netzwerkteam.de -+ [178.62.101.154]) by mail.das-netzwerkteam.de (Horde Framework) with HTTP; -+ Thu, 14 May 2015 05:55:42 +0000 -+Date: Thu, 14 May 2015 05:55:42 +0000 -+Message-ID: <20150514055542.Horde.LWDaJ7sgQHr-LCJySXbtvQ3@mail.das-netzwerkteam.de> -+From: Mike Gabriel <mike.gabriel@das-netzwerkteam.de> -+To: Zach Vonler <lightborn@mail.utexas.edu>, Brian Pane <brianp@brianp.net>, -+ Gian Filippo Pinzari <pinzari@nomachine.com> -+Cc: nito.martinez@qindel.com, x2go-dev@lists.x2go.org, -+ opensource@gznianguan.com, 784565@bugs.debian.org, Francesco Poli -+ <invernomuto@paranoici.org> -+Subject: Re: [pkg-x2go-devel] Bug#784565: Bug#784565: nx-libs-lite: parts -+ are derived from non-free code -+References: <20150506173532.7531.31389.reportbug@homebrew> -+ <20150511092636.Horde.oj6sHKnvQDt85T3EW1WhVA1@mail.das-netzwerkteam.de> -+ <20150511213659.34dce0505c493c1e23d2c3ee@paranoici.org> -+ <20150512044637.Horde.8WHdvRpU7GS9Szy323gv_Q2@mail.das-netzwerkteam.de> -+ <55521444.9090407@vigor.nu> <1431445315.4712.7.camel@Nokia-N900> -+ <20150512234048.054319a449ffadcf87577425@paranoici.org> -+In-Reply-To: <20150512234048.054319a449ffadcf87577425@paranoici.org> -+User-Agent: Internet Messaging Program (IMP) H5 (6.2.2) -+Accept-Language: de,en -+Organization: DAS-NETZWERKTEAM -+X-Originating-IP: 178.62.101.154 -+X-Remote-Browser: Mozilla/5.0 (X11; Linux x86_64; rv:32.0) Gecko/20100101 -+ Firefox/32.0 Iceweasel/32.0 -+Content-Type: multipart/signed; boundary="=_whjzG6t3RqUoHnRlD0aGiA1"; -+ protocol="application/pgp-signature"; micalg=pgp-sha1 -+MIME-Version: 1.0 -+ -+This message is in MIME format and has been PGP signed. -+ -+--=_whjzG6t3RqUoHnRlD0aGiA1 -+Content-Type: text/plain; charset=us-ascii; format=flowed; DelSp=Yes -+Content-Disposition: inline -+Content-Transfer-Encoding: quoted-printable -+ -+Dear Brian, dear Zachary, dear Gian Filippo, -+ -+(Find a TL;DR; at the end of this mail...) -+ -+I am contacting you on a licensing issue related to the DXPC code that=20= -+=20 -+you=20worked on at the end of the nineties. I'd highly appreciate it if=20= -+=20 -+you=20could take a little time to read this mail and get back to me,=20=20 -+either=20privately or in public. -+[I have actually Cc:ed quite a number of people in this mail (thread).=20= -+=20 -+All=20of them will be affected by the outcome of this license issue to=20= -+=20 -+some=20lesser or greater extent. If you feel inconvenient with replying=20= -+=20 -+to=20so many people you don't know, really don't hesitate to get back to=20= -+=20 -+me=20in private first, so that we can sort things out. Thank you.] -+ -+Before I continue, let me shortly introduce myself. My name is Mike=20=20 -+Gabriel,=20I work for the Debian project [1.1, 1.2] (which brings forth=20= -+=20 -+one=20of the major GNU/Linux distributions world-wide. I am also the=20=20 -+upstream=20code maintainer of a software project called nx-libs [2]. The=20= -+=20 -+nx-libs=20code has been derived from several of NoMachine's NXv3 [11]=20=20 -+components=20(namely: nx-X11, nxagent, nxcomp, nxcompext and nxcompshad). -+ -+A member of the Debian legal team [3] (Francesco Poli) made us (i.e.,=20=20 -+the=20nx-libs developers, users, package maintainers) aware of an issue=20= -+=20 -+[4]=20in the nx-libs component NXCOMP (which has been derived from DXPC=20= -+=20 -+[5]).=20Please read Message #5 of the brought up issue on the Debian bug=20= -+=20 -+tracker=20(#784565) [4] before you continue reading. Thanks. -+ -+I will now jump into the below quoted mail and continue inline... -+ -+On Di 12 Mai 2015 23:40:48 CEST, Francesco Poli wrote: -+ -+> On Tue, 12 May 2015 17:41:55 +0200 Mike Gabriel wrote: -+> -+>> Hi Kevin, -+> -+> Hello Mike, hello Kevin, hello to all the other recipients. -+> -+> First of all, I wish to express my gratitude to Kevin for his prompt, -+> kind and generous response. -+ -+>> thanks for your feedback. Let us wait for Francesco, our expert on=20=20 -+>>=20license issues, and see what he thinks about your feedback. -+> -+> I think that this is an important first step to solve this issue for -+> the best. -+> Kevin Vigor is one of the copyright owners of the code that was forked -+> before the re-licensing. -+> We now know that he intended the re-licensing to be retroactive and -+> this is really good. -+ -+We are currently in the process of contacting all DXPC related=20=20 -+copyright=20holders mentioned in the NXCOMP license file [6]. We already=20= -+=20 -+received=20some feedback from Kevin Vigor [7], but we also need to=20=20 -+address=20you (Brian, Zachary, Gian Filippo) with this. (The mail=20=20 -+address=20I have from Zachary may be outdated, so any current contact=20=20 -+address=20is highly welcome, in case the mail address being used will=20=20 -+bounce=20back). -+ -+At the moment, NXCOMP (and thus nx-libs, but also NoMachine's NXv3=20=20 -+code)=20cannot be considered as fully free software, until this issue is=20= -+=20 -+settled.=20The DXPC license before DXPC v3.8.1 was an ancient BSD style=20= -+=20 -+license=20that failed in explicitly mentioning, that it is allowed to=20=20 -+modify=20the DXPC code in derivative works. In 2002, DXPC 3.8.1 got=20=20 -+released=20[12], using a more compliant license (BSD-2-clause). As Kevin=20= -+=20 -+told=20us, this license change [8,9] was done after the FSF [10] had=20=20 -+contacted=20the DXPC developers. -+ -+However, the NXCOMP code in NXv3 got forked from DXPC before 2002, as=20=20 -+it=20seems. So unfortunately, the modifications of DXPC as found in=20=20 -+NoMachine's=20NXCOMP product are not compliant with the pre-3.8.1=20=20 -+license=20of DXPC. -+ -+> I think that now it would be useful to ascertain that the other -+> copyright owners (Brian Pane, Zachary Vonler, Gian Filippo Pinzari) are -+> also OK with this interpretation of the re-licensing operation. -+ -+TL;DR; So here comes my actual question: are you (Brian Pane, Zachary=20=20 -+Vonler,=20Gian Filippo Pinzari) ok with retroactively regarding=20=20 -+pre-3.8.1=20code of DXPC (that you probably all worked on at that time)=20= -+=20 -+as=20BSD-2-clause? Are you ok with others having taken or taking the=20=20 -+pre-3.8.1=20DXPC code and distribute it in a modified form? -+ -+A yes from all of you as DXPC copyright holders is essential for the=20=20 -+continuation=20of nx-libs development under a free license. This may=20=20 -+also=20possibly be an issue for NXv4 in case parts of it have been=20=20 -+derived=20from DXPC. -+ -+Thanks to all of you for taking your time. -+ -+light+love -+Mike -+ -+[1.1] http://www.debian.org -+[1.2] https://qa.debian.org/developer.php?login=3Dsunweaver%40debian.org -+[2] https://github.com/ArcticaProject/nx-libs -+[3] https://www.debian.org/legal/ -+[4] https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=3D784565#5 -+[5] http://www.vigor.nu/dxpc/ -+[6] https://github.com/ArcticaProject/nx-libs/blob/3.6.x/nxcomp/LICENSE#L32 -+[7] https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=3D784565#40 -+[8] https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=3D72020 -+[9] https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=3D142028 -+[10] http://www.fsf.org/ -+[11] https://www.nomachine.com/version-3 -+[12] http://www.vigor.nu/dxpc/CHANGES -+--=20 -+ -+DAS-NETZWERKTEAM -+mike=20gabriel, herweg 7, 24357 fleckeby -+fon: +49 (1520) 1976 148 -+ -+GnuPG Key ID 0x25771B31 -+mail: mike.gabriel@das-netzwerkteam.de, http://das-netzwerkteam.de -+ -+freeBusy: -+https://mail.das-netzwerkteam.de/freebusy/m.gabriel%40das-netzwerkteam.de.x= -+fb -+ -+--=_whjzG6t3RqUoHnRlD0aGiA1 -+Content-Type: application/pgp-signature -+Content-Description: Digitale PGP-Signatur -+Content-Disposition: inline -+ -+-----BEGIN PGP SIGNATURE----- -+Version: GnuPG v1 -+ -+iQIcBAABAgAGBQJVVDjeAAoJEJr0azAldxsx1JUP/RdzhmQ3HU+6x479AoGBTKxV -+onR3XPlq8Iw9f6dU0TjqlAHCOGeftJ+X7A3HamiTFsr5wUqlrTuKeYnVd4hTa08e -+ge9WIODczQfnoHm47siTjlMfQuHFIGDnHuJ+3GbvojMI7QXWrM9wgxGo2B/2UUQS -+tFlYPbvfAGhCyUVx/zLRFqDVzzdo+UCVoLLYKE1pkwjhpnGGamY1xd/KFjCgi0Vx -+f/Nx9w28EqmRFZCTmxghLngkTlQwrtBkSUAhLS3ntxV12RrrQQ2verXPWbW1DU9C -+3TZypNZSMc4O8etJ244YUk7wAvspUtJnXyvxoQ2Padw0ogGFayIdLtC8HStCy+Mx -+Q/FIND8+aGdYALNTbQfTCpJ1fmg06Id4hn96rdZOhpT80M3vTuY9HpIyf2dDCdHu -+OmHEjUKnMRgjPbVoIU5lz8s4X/ET7hzxb2psXSwscxI+qqlSrADzC98QB23djJii -+O9qPVB/HqJXwNNXlwiScrLC/q4ro0QgdurKmIDQq1zjdFXyBDEwMzxLNlVSJiEeG -+gMSiXD9lD8J1KBDp35P4wxmOcCSymILU11Lpvf5N22ID7cfk8x58+Fsik+RkQZcm -+94ll8p4XU0xOt8pgzGOVL4rLBsjcPGzuTjUoDsB8zmZLSgEgrISZNQC7pRhEXTRW -+3g7fQuF635IMObwgVJJB -+=c1td -+-----END PGP SIGNATURE----- -+ -+--=_whjzG6t3RqUoHnRlD0aGiA1-- -+ -+ -+ -+ -+From mike.gabriel@das-netzwerkteam.de Thu May 14 06:20:24 2015 -+Received: (at 784565) by bugs.debian.org; 14 May 2015 06:20:24 +0000 -+X-Spam-Checker-Version: SpamAssassin 3.4.0-bugs.debian.org_2005_01_02 -+ (2014-02-07) on buxtehude.debian.org -+X-Spam-Level: -+X-Spam-Status: No, score=-11.9 required=4.0 tests=BAYES_00,FOURLA, -+ HAS_BUG_NUMBER,PGPSIGNATURE,T_RP_MATCHES_RCVD autolearn=ham -+ autolearn_force=no version=3.4.0-bugs.debian.org_2005_01_02 -+X-Spam-Bayes: score:0.0000 Tokens: new, 15; hammy, 149; neutral, 94; spammy, -+ 1. spammytokens:0.997-1--sk:austin. hammytokens:0.000-+--H*c:pgp-signature, -+ 0.000-+--H*c:protocol, 0.000-+--H*c:micalg, 0.000-+--H*c:signed, -+ 0.000-+--H*RU:sk:grimnir -+Return-path: <mike.gabriel@das-netzwerkteam.de> -+Received: from freya.das-netzwerkteam.de ([88.198.48.199]) -+ by buxtehude.debian.org with esmtps (TLS1.1:DHE_RSA_AES_256_CBC_SHA1:256) -+ (Exim 4.80) -+ (envelope-from <mike.gabriel@das-netzwerkteam.de>) -+ id 1YsmVL-0008TY-AE -+ for 784565@bugs.debian.org; Thu, 14 May 2015 06:20:24 +0000 -+Received: from grimnir.das-netzwerkteam.de (grimnir.das-netzwerkteam.de [78.46.204.98]) -+ by freya.das-netzwerkteam.de (Postfix) with ESMTPS id AA82B3282; -+ Thu, 14 May 2015 08:20:19 +0200 (CEST) -+Received: from localhost (localhost [127.0.0.1]) -+ by grimnir.das-netzwerkteam.de (Postfix) with ESMTP id A8B823BD2E; -+ Thu, 14 May 2015 08:20:18 +0200 (CEST) -+X-Virus-Scanned: Debian amavisd-new at grimnir.das-netzwerkteam.de -+Received: from grimnir.das-netzwerkteam.de ([127.0.0.1]) -+ by localhost (grimnir.das-netzwerkteam.de [127.0.0.1]) (amavisd-new, port 10024) -+ with ESMTP id LyPILriO4mkm; Thu, 14 May 2015 08:20:18 +0200 (CEST) -+Received: from grimnir.das-netzwerkteam.de (localhost [127.0.0.1]) -+ by grimnir.das-netzwerkteam.de (Postfix) with ESMTPS id 4BB463BB3A; -+ Thu, 14 May 2015 08:20:18 +0200 (CEST) -+Received: from bifrost.das-netzwerkteam.de (bifrost.das-netzwerkteam.de -+ [178.62.101.154]) by mail.das-netzwerkteam.de (Horde Framework) with HTTP; -+ Thu, 14 May 2015 06:20:18 +0000 -+Date: Thu, 14 May 2015 06:20:18 +0000 -+Message-ID: <20150514062018.Horde.T6fBfDEHTv_IkVi4n506ew5@mail.das-netzwerkteam.de> -+From: Mike Gabriel <mike.gabriel@das-netzwerkteam.de> -+To: Brian Pane <brianp@brianp.net>, Gian Filippo Pinzari -+ <pinzari@nomachine.com> -+Cc: opensource@gznianguan.com, 784565@bugs.debian.org, -+ nito.martinez@qindel.com, Francesco Poli <invernomuto@paranoici.org>, -+ x2go-dev@lists.x2go.org -+Subject: Re: [X2Go-Dev] [pkg-x2go-devel] Bug#784565: Bug#784565: -+ nx-libs-lite: parts are derived from non-free code -+References: <20150506173532.7531.31389.reportbug@homebrew> -+ <20150511092636.Horde.oj6sHKnvQDt85T3EW1WhVA1@mail.das-netzwerkteam.de> -+ <20150511213659.34dce0505c493c1e23d2c3ee@paranoici.org> -+ <20150512044637.Horde.8WHdvRpU7GS9Szy323gv_Q2@mail.das-netzwerkteam.de> -+ <55521444.9090407@vigor.nu> <1431445315.4712.7.camel@Nokia-N900> -+ <20150512234048.054319a449ffadcf87577425@paranoici.org> -+ <20150514055542.Horde.LWDaJ7sgQHr-LCJySXbtvQ3@mail.das-netzwerkteam.de> -+In-Reply-To: <20150514055542.Horde.LWDaJ7sgQHr-LCJySXbtvQ3@mail.das-netzwerkteam.de> -+User-Agent: Internet Messaging Program (IMP) H5 (6.2.2) -+Accept-Language: de,en -+Organization: DAS-NETZWERKTEAM -+X-Originating-IP: 178.62.101.154 -+X-Remote-Browser: Mozilla/5.0 (X11; Linux x86_64; rv:32.0) Gecko/20100101 -+ Firefox/32.0 Iceweasel/32.0 -+Content-Type: multipart/signed; boundary="=_FXxC2VoubfzELdkXQu84zQ1"; -+ protocol="application/pgp-signature"; micalg=pgp-sha1 -+MIME-Version: 1.0 -+ -+This message is in MIME format and has been PGP signed. -+ -+--=_FXxC2VoubfzELdkXQu84zQ1 -+Content-Type: text/plain; charset=us-ascii; format=flowed; DelSp=Yes -+Content-Disposition: inline -+Content-Transfer-Encoding: quoted-printable -+ -+Hi again, -+ -+On Do 14 Mai 2015 07:55:42 CEST, Mike Gabriel wrote: -+ -+> [...] (The mail address I have from Zachary may be outdated, so any=20=20 -+>=20current contact address is highly welcome, in case the mail address=20= -+=20 -+>=20being used will bounce back). -+ -+As it seems, the publicly known mail address of Zachary Vonler at=20=20 -+austin.utexas.edu=20is outdated. -+ -+@Brian: if you happen to have a recent mail address of Zachary, could=20=20 -+you=20please provide it to me privately? Thanks. -+ -+Mike -+--=20 -+ -+DAS-NETZWERKTEAM -+mike=20gabriel, herweg 7, 24357 fleckeby -+fon: +49 (1520) 1976 148 -+ -+GnuPG Key ID 0x25771B31 -+mail: mike.gabriel@das-netzwerkteam.de, http://das-netzwerkteam.de -+ -+freeBusy: -+https://mail.das-netzwerkteam.de/freebusy/m.gabriel%40das-netzwerkteam.de.x= -+fb -+ -+--=_FXxC2VoubfzELdkXQu84zQ1 -+Content-Type: application/pgp-signature -+Content-Description: Digitale PGP-Signatur -+Content-Disposition: inline -+ -+-----BEGIN PGP SIGNATURE----- -+Version: GnuPG v1 -+ -+iQIcBAABAgAGBQJVVD6iAAoJEJr0azAldxsx4+8QAI9fbkDu0G/1NpC4+MDJ3HtH -+wzfUUIIoBAPTahr1ZGrGK4ZMH5+RvXtwX2OBTwRRgKlZOqsdU35bj2HKi01KNLGx -+9NXXnLz97CuTrXJrzis3C+pzCIpR6cR/SPhDdExdhjR8nawXcejfFhPUnbVvPvxY -+jYN43cYFScovk5f5bUtIAybVZZCpdRZwDRevD+1qTTs+WtDf/9PXL7CX9A7j7r6T -+XQIURSVQq/FVXcJHSdZcYZza/4JHIZbEQTeX3FaUK+zkdHlBbbmRwzN0YLP/XQiY -+06tQXFjgjqjjkoxTE5gQrlN3kyxNH2WpXj2eeAqQarkCOnKgiuFEYxhTCYnZHCmk -+WVYhb2/78VbRlRbDJH0jJ0KKNOi9fbXGcVa36IOgV2dLN+tnNorAQjHm7LkBDhyi -+c3EmzEPtDTmcb5XuPYwwbNGn2EE47UsTx3UjPFWAQVQ2LwMXoFb+iH+WWSQ8KW1b -+xKRDOtarACd06rbW/sKQVdzNytydvFkZZn//AHHA7KP7jmqhl/bub8EyEf9cCTVr -+92XB5bbI1rLfEo1D3FTUaCt1tUEumhgRzwlJteX5/vbpf0fJ3QcWMUQSQWYqbhEm -+LnlGOM44jZDtQ7QonezcB/+lQDu2/0Q7fZtgqtr9bxkJ5URr8/ByTI+E3K2bxdme -+jQAQL6yyRC5s419MIJTr -+=6/Dc -+-----END PGP SIGNATURE----- -+ -+--=_FXxC2VoubfzELdkXQu84zQ1-- -+ -+ -+ -+ -+From mike.gabriel@das-netzwerkteam.de Sat May 16 09:19:18 2015 -+Received: (at 784565) by bugs.debian.org; 16 May 2015 09:19:18 +0000 -+X-Spam-Checker-Version: SpamAssassin 3.4.0-bugs.debian.org_2005_01_02 -+ (2014-02-07) on buxtehude.debian.org -+X-Spam-Level: -+X-Spam-Status: No, score=-10.9 required=4.0 tests=BAYES_00,DIGITS_LETTERS, -+ FOURLA,HAS_BUG_NUMBER,PGPSIGNATURE,T_RP_MATCHES_RCVD autolearn=ham -+ autolearn_force=no version=3.4.0-bugs.debian.org_2005_01_02 -+X-Spam-Bayes: score:0.0000 Tokens: new, 31; hammy, 150; neutral, 208; spammy, -+ 0. spammytokens: hammytokens:0.000-+--tarballs, 0.000-+--H*c:pgp-signature, -+ 0.000-+--H*c:protocol, 0.000-+--H*c:micalg, 0.000-+--H*c:signed -+Return-path: <mike.gabriel@das-netzwerkteam.de> -+Received: from freya.das-netzwerkteam.de ([88.198.48.199]) -+ by buxtehude.debian.org with esmtps (TLS1.1:DHE_RSA_AES_256_CBC_SHA1:256) -+ (Exim 4.80) -+ (envelope-from <mike.gabriel@das-netzwerkteam.de>) -+ id 1YtYFZ-0006BP-Mo -+ for 784565@bugs.debian.org; Sat, 16 May 2015 09:19:18 +0000 -+Received: from grimnir.das-netzwerkteam.de (grimnir.das-netzwerkteam.de [78.46.204.98]) -+ by freya.das-netzwerkteam.de (Postfix) with ESMTPS id 434CF3D4F; -+ Sat, 16 May 2015 11:19:13 +0200 (CEST) -+Received: from localhost (localhost [127.0.0.1]) -+ by grimnir.das-netzwerkteam.de (Postfix) with ESMTP id 9294C3BB55; -+ Sat, 16 May 2015 11:19:12 +0200 (CEST) -+X-Virus-Scanned: Debian amavisd-new at grimnir.das-netzwerkteam.de -+Received: from grimnir.das-netzwerkteam.de ([127.0.0.1]) -+ by localhost (grimnir.das-netzwerkteam.de [127.0.0.1]) (amavisd-new, port 10024) -+ with ESMTP id a-GW73-71I6N; Sat, 16 May 2015 11:19:12 +0200 (CEST) -+Received: from grimnir.das-netzwerkteam.de (localhost [127.0.0.1]) -+ by grimnir.das-netzwerkteam.de (Postfix) with ESMTPS id 224123BB3B; -+ Sat, 16 May 2015 11:19:12 +0200 (CEST) -+Received: from 176.4.79.4 ([176.4.79.4]) by mail.das-netzwerkteam.de (Horde -+ Framework) with HTTP; Sat, 16 May 2015 09:19:12 +0000 -+Date: Sat, 16 May 2015 09:19:12 +0000 -+Message-ID: <20150516091912.Horde.W_1Szu5msccGYo-Ndwv3cg1@mail.das-netzwerkteam.de> -+From: Mike Gabriel <mike.gabriel@das-netzwerkteam.de> -+To: 784565@bugs.debian.org, Francesco Poli <invernomuto@paranoici.org> -+Cc: Kevin Vigor <kevin@vigor.nu>, nito.martinez@qindel.com, -+ x2go-dev@lists.x2go.org, opensource@gznianguan.com -+Subject: Re: [pkg-x2go-devel] Bug#784565: Bug#784565: nx-libs-lite: parts -+ are derived from non-free code -+References: <20150506173532.7531.31389.reportbug@homebrew> -+ <20150511092636.Horde.oj6sHKnvQDt85T3EW1WhVA1@mail.das-netzwerkteam.de> -+ <20150511213659.34dce0505c493c1e23d2c3ee@paranoici.org> -+ <20150512044637.Horde.8WHdvRpU7GS9Szy323gv_Q2@mail.das-netzwerkteam.de> -+ <55521444.9090407@vigor.nu> <1431445315.4712.7.camel@Nokia-N900> -+ <20150512234048.054319a449ffadcf87577425@paranoici.org> -+ <20150514045809.Horde.-3NIZzBnA5V5B6a721F2kg2@mail.das-netzwerkteam.de> -+In-Reply-To: <20150514045809.Horde.-3NIZzBnA5V5B6a721F2kg2@mail.das-netzwerkteam.de> -+User-Agent: Internet Messaging Program (IMP) H5 (6.2.2) -+Accept-Language: de,en -+Organization: DAS-NETZWERKTEAM -+X-Originating-IP: 176.4.79.4 -+X-Remote-Browser: Mozilla/5.0 (X11; Linux x86_64; rv:32.0) Gecko/20100101 -+ Firefox/32.0 Iceweasel/32.0 -+Content-Type: multipart/signed; boundary="=_n6jEwcfiXkrvf2B-ZGaJrw3"; -+ protocol="application/pgp-signature"; micalg=pgp-sha1 -+MIME-Version: 1.0 -+ -+This message is in MIME format and has been PGP signed. -+ -+--=_n6jEwcfiXkrvf2B-ZGaJrw3 -+Content-Type: text/plain; charset=us-ascii; format=flowed; DelSp=Yes -+Content-Disposition: inline -+Content-Transfer-Encoding: quoted-printable -+ -+Hi all, esp. Kevin, -+ -+On Do 14 Mai 2015 06:58:09 CEST, Mike Gabriel wrote: -+ -+I looked at dxpc releases (I obtained upstream tarballs from=20=20 -+snapshot.debian.org). -+ -+I=20currently have: -+ -+""" -+[mike@minobo dxpc.nxrebase (upstream-nxrebase)]$ git log -+commit 0676a768a96383641a73a72ecd2e1083322e6abe -+Author: Mike Gabriel <mike.gabriel@das-netzwerkteam.de> -+Date: Sat May 16 10:52:24 2015 +0200 -+ -+ Imported Upstream version 3.9.2 -+ -+commit 4ccf34b2c4763dfb01dceb8588b204b0d029cc3d -+Author: Mike Gabriel <mike.gabriel@das-netzwerkteam.de> -+Date: Sat May 16 10:51:04 2015 +0200 -+ -+ Imported Upstream version 3.9.1 -+ -+commit dd8f60ce63c70ed605a2e1717feb7128e59fb8e6 -+Author: Mike Gabriel <mike.gabriel@das-netzwerkteam.de> -+Date: Sat May 16 10:49:19 2015 +0200 -+ -+ Imported Upstream version 3.9.0 -+ -+commit 01c990099aea802405f8d39c0b819ee1742c185c -+Author: Mike Gabriel <mike.gabriel@das-netzwerkteam.de> -+Date: Sat May 16 10:32:06 2015 +0200 -+ -+ Imported Upstream version 3.8.2 -+ -+commit 48df60b3b946a08541ee48371634f074e875adda -+Author: Mike Gabriel <mike.gabriel@das-netzwerkteam.de> -+Date: Sat May 16 10:31:57 2015 +0200 -+ -+ Imported Upstream version 3.8.0 -+ -+commit 11d81444d0f86a67f9b8483cbfa33343714b26e9 -+Author: Mike Gabriel <mike.gabriel@das-netzwerkteam.de> -+Date: Sat May 16 10:31:53 2015 +0200 -+ -+ Imported Upstream version 3.7.0 -+ -+commit e4f550abd4cd49ecc2381e717a55a9940087a376 -+Author: Mike Gabriel <mike.gabriel@das-netzwerkteam.de> -+Date: Sat May 16 10:31:44 2015 +0200 -+ -+ Imported Upstream version 3.5.0 -+""" -+ -+> @Kevin: I will take you off this mail thread's Cc: field with my=20=20 -+>=20next post. Feel free to follow-up via #784565 [1] on the Debian bug=20= -+=20 -+>=20tracker. Thanks a lot for being so responsive and generous with=20=20 -+>=20providing information. -+ -+With this post I actually reincluded you because it becomes technical=20=20 -+from=20here on and I probably will need your expertise on DXPC. Not sure=20= -+=20 -+if=20you have time or prio or are willing to provide that. Would you be=20= -+=20 -+open=20for answering technical questions on DXPC and esp. the changes=20=20 -+between=203.7.0 and 3.8.1/3.8.2? I'd highly appreciate that. -+ -+As I have not heard back neither from Brian Pane, Zachary Vonler nor=20=20 -+Gian=20Filippo Pinzari (we had Ascension Day and maybe a prolonged=20=20 -+weekend=20that people used for going on VAC), I will try looking at the=20= -+=20 -+DXPC=20changes between 3.7.0 and 3.8.1. Obviously, NoMachine forked=20=20 -+NXCOMP=20from DXPC some time between DXPC 3.7.0 and DXPC 3.8.0. -+ -+Questions to Kevin: -+ -+ o Is there any SVN upstream repo still online -+ (I saw it in one of the tarballs, that SVN was -+ used for 3.9.0). -+ o Do you have any tarballs documenting the -+ changes between 3.7.0 and 3.8.0? Do you also -+ have the 3.8.1 tarball? -+ o Did the 3.8.0 version of DXPC break proto -+ compatibility (i.e., you could not use client -+ 3.7.0 and server 3.8.0 and vice versa with -+ each other)? -+ -+Any help on this is appreciated. Thanks. -+ -+Mike -+ -+ -+--=20 -+ -+DAS-NETZWERKTEAM -+mike=20gabriel, herweg 7, 24357 fleckeby -+fon: +49 (1520) 1976 148 -+ -+GnuPG Key ID 0x25771B31 -+mail: mike.gabriel@das-netzwerkteam.de, http://das-netzwerkteam.de -+ -+freeBusy: -+https://mail.das-netzwerkteam.de/freebusy/m.gabriel%40das-netzwerkteam.de.x= -+fb -+ -+--=_n6jEwcfiXkrvf2B-ZGaJrw3 -+Content-Type: application/pgp-signature -+Content-Description: Digitale PGP-Signatur -+Content-Disposition: inline -+ -+-----BEGIN PGP SIGNATURE----- -+Version: GnuPG v1 -+ -+iQIcBAABAgAGBQJVVwuPAAoJEJr0azAldxsxAqoQAI1IOApnU8WLZH+VT1GIgtvx -+XxuBALPeR8KobmGRfJd4bSzeIpAqw+JSGa0/XApTwjYbpsIUKnMrEfoHfS0wt4Tb -+ZmSiHL4XCYa6SCGOAbSe89QXNA8kS4ewQMSaPTZhGvoR6wIjdNfxXDN5aO6TkUlw -+qw786fMKYcj9htNnshlq264uSfkrMusFEw614dnfKEVnx8YrIUU5lNY9AInShO9S -+K0vy1vn53/Ie5Fec1FK0WUsT4xTu7NW80Ch0+IgopURIl9NmlomJVRwoDLbR47Ox -+6dFVGJ5VKmOt+oW2g4YAdti8YNhSYteyPgTAPMdtU4XqkHV5/RepCoV/6gr3/YR1 -+To63WGpt2B+jl2d4OAPuWWdTRucB2QYsCz/jCvLKeLcg2ODHZJXhSzVYlIie0uFY -+SRvqM8qW+WyuYek2vZDneKvDB2eUqMhRb5dmSeod9UR+3RYTq+JrFUoDq65PONbM -+A0QZ+cG0EkQdxG/1V8yZoMRgxPOtb+AZcMIjC5NikWUsyIkGjMHNHSbJCboJBlyM -+DdyRCTxuM09cpzNxS7Ph0z0iSdQZAl2D7vPCAY1jwyLdu7Xra/p3aM6pqeYuIaWh -+OpoF/sRq08CjWmgVe7MdfkgxZQxW4qIdOeNYGUDIADzzj6cHdNV+WP13ISizeoyO -+u4cspyl/6lFu3TyMWkh8 -+=fu9u -+-----END PGP SIGNATURE----- -+ -+--=_n6jEwcfiXkrvf2B-ZGaJrw3-- -+ -+ -+ -+ -+From zvonler@gmail.com Mon May 18 15:05:45 2015 -+Received: (at 784565) by bugs.debian.org; 18 May 2015 15:05:46 +0000 -+X-Spam-Checker-Version: SpamAssassin 3.4.0-bugs.debian.org_2005_01_02 -+ (2014-02-07) on buxtehude.debian.org -+X-Spam-Level: -+X-Spam-Status: No, score=-5.3 required=4.0 tests=BAYES_00,DKIM_SIGNED, -+ DKIM_VALID,DKIM_VALID_AU,FOURLA,FREEMAIL_FROM,HAS_BUG_NUMBER,HTML_MESSAGE, -+ MULTALT,RCVD_IN_DNSWL_LOW,RCVD_IN_MSPIKE_H3,RCVD_IN_MSPIKE_WL,SPF_PASS -+ autolearn=ham autolearn_force=no version=3.4.0-bugs.debian.org_2005_01_02 -+X-Spam-Bayes: score:0.0000 Tokens: new, 14; hammy, 104; neutral, 41; spammy, -+ 1. spammytokens:0.940-+--H*c:alternative -+ hammytokens:0.000-+--D*das-netzwerkteam.de, 0.000-+--sk:mikega, -+ 0.000-+--sk:mike.ga, 0.000-+--U*mike.gabriel, -+ 0.000-+--mike.gabriel@das-netzwerkteam.de -+Return-path: <zvonler@gmail.com> -+Received: from mail-ob0-f181.google.com ([209.85.214.181]) -+ by buxtehude.debian.org with esmtps (TLS1.2:RSA_ARCFOUR_SHA1:128) -+ (Exim 4.80) -+ (envelope-from <zvonler@gmail.com>) -+ id 1YuMbx-0004SF-RZ -+ for 784565@bugs.debian.org; Mon, 18 May 2015 15:05:45 +0000 -+Received: by obblk2 with SMTP id lk2so127830096obb.0 -+ for <784565@bugs.debian.org>; Mon, 18 May 2015 08:05:39 -0700 (PDT) -+DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; -+ d=gmail.com; s=20120113; -+ h=mime-version:date:message-id:subject:from:to:content-type; -+ bh=nHgAzYNhWTJXAXb1d3jfmZVOFHEEaolqyRCNmCThusM=; -+ b=ilsboi8m+iXF7pVv2MVsvJqi8Es4/o3Awnfg5nSzWVB34kDB0g7zczoEfC4d9km/Bn -+ WDerLV30mJ+OfaRA5elHld2CsY9ByX2MuU73jj2kNenlEV15s7LdJxYsWiZeKM4AEeOw -+ gGF3oU3A/FfhVUrhoPjcGXiF7xjXh1kkPGjkmXFJgthTnyJQjrL6Kw6jfsqhQtbEpqnc -+ 5hsWFCNR7O780T1pkf+MisASrWFXI3oolY4EV8/P6OeEWmmKd7L9h8YHPegOdFq543qZ -+ na9coEvmwpnReWORK79ycOgZa1DwiX1h2SvS+wgigQx8j9ZlJld5SpJFTcV3vSJxmICQ -+ i7Wg== -+MIME-Version: 1.0 -+X-Received: by 10.202.89.131 with SMTP id n125mr19222614oib.91.1431961538959; -+ Mon, 18 May 2015 08:05:38 -0700 (PDT) -+Received: by 10.202.212.10 with HTTP; Mon, 18 May 2015 08:05:38 -0700 (PDT) -+Date: Mon, 18 May 2015 10:05:38 -0500 -+Message-ID: <CAAnzQj-6Tgiar-GOxXx9FXU21cU4Be05Yo3zUSgr094sYXZP+w@mail.gmail.com> -+Subject: Re: [pkg-x2go-devel] Bug#784565: Bug#784565: nx-libs-lite: parts are -+ derived from non-free code -+From: Zach Vonler <zvonler@gmail.com> -+To: 784565@bugs.debian.org -+Content-Type: multipart/alternative; boundary=001a113d381edcb3e205165c863b -+ -+--001a113d381edcb3e205165c863b -+Content-Type: text/plain; charset=UTF-8 -+ -+On Thu, 14 May 2015 05:55:42 +0000 Mike Gabriel < -+mike.gabriel@das-netzwerkteam.de> wrote: -+ -+> -+> TL;DR; So here comes my actual question: are you (Brian Pane, Zachary -+> Vonler, Gian Filippo Pinzari) ok with retroactively regarding -+> pre-3.8.1 code of DXPC (that you probably all worked on at that time) -+> as BSD-2-clause? Are you ok with others having taken or taking the -+> pre-3.8.1 DXPC code and distribute it in a modified form? -+> -+ -+ -+> A yes from all of you as DXPC copyright holders is essential for the -+> continuation of nx-libs development under a free license. This may -+> also possibly be an issue for NXv4 in case parts of it have been -+> derived from DXPC. -+ -+ -+Yes, I am fine with considering the license change to be retroactive to -+cover the time I was the maintainer. -+ -+I have no objections to others distributing modified versions of that code. -+ -+Zach -+ -+--001a113d381edcb3e205165c863b -+Content-Type: text/html; charset=UTF-8 -+Content-Transfer-Encoding: quoted-printable -+ -+<div dir=3D"ltr">On Thu, 14 May 2015 05:55:42 +0000 Mike Gabriel <<a hre= -+f=3D"mailto:mike.gabriel@das-netzwerkteam.de">mike.gabriel@das-netzwerkteam= -+.de</a>> wrote:<br><div><blockquote class=3D"gmail_quote" style=3D"margi= -+n:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204= -+);border-left-style:solid;padding-left:1ex"><br>TL;DR; So here comes my act= -+ual question: are you (Brian Pane, Zachary =C2=A0<br>Vonler, Gian Filippo P= -+inzari) ok with retroactively regarding =C2=A0<br>pre-3.8.1 code of DXPC (t= -+hat you probably all worked on at that time) =C2=A0<br>as BSD-2-clause? Are= -+ you ok with others having taken or taking the =C2=A0<br>pre-3.8.1 DXPC cod= -+e and distribute it in a modified form?<br></blockquote><div>=C2=A0</div><b= -+lockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-le= -+ft-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;pad= -+ding-left:1ex">A yes from all of you as DXPC copyright holders is essential= -+ for the =C2=A0<br>continuation of nx-libs development under a free license= -+. This may =C2=A0<br>also possibly be an issue for NXv4 in case parts of it= -+ have been =C2=A0<br>derived from DXPC.</blockquote><div>=C2=A0</div></div>= -+<div>Yes, I am fine with considering the license change to be retroactive t= -+o cover the time I was the maintainer.</div><div><br></div><div>I have no o= -+bjections to others distributing modified versions of that code.</div><div>= -+<br></div><div>Zach</div></div> -+ -+--001a113d381edcb3e205165c863b-- -+ -+ -+ -+From kevin@vigor.nu Mon May 18 21:26:12 2015 -+Received: (at 784565) by bugs.debian.org; 18 May 2015 21:26:12 +0000 -+X-Spam-Checker-Version: SpamAssassin 3.4.0-bugs.debian.org_2005_01_02 -+ (2014-02-07) on buxtehude.debian.org -+X-Spam-Level: -+X-Spam-Status: No, score=-8.0 required=4.0 tests=BAYES_00,FOURLA, -+ HAS_BUG_NUMBER,RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H2,SPF_PASS autolearn=ham -+ autolearn_force=no version=3.4.0-bugs.debian.org_2005_01_02 -+X-Spam-Bayes: score:0.0000 Tokens: new, 16; hammy, 150; neutral, 121; spammy, -+ 0. spammytokens: hammytokens:0.000-+--tarballs, 0.000-+--H*f:sk:2015050, -+ 0.000-+--3.9.0, 0.000-+--3.8.0, 0.000-+--H*UA:31.0 -+Return-path: <kevin@vigor.nu> -+Received: from gateway13.websitewelcome.com ([69.56.148.12]) -+ by buxtehude.debian.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:256) -+ (Exim 4.80) -+ (envelope-from <kevin@vigor.nu>) -+ id 1YuSY8-0004Mq-9I -+ for 784565@bugs.debian.org; Mon, 18 May 2015 21:26:12 +0000 -+Received: by gateway13.websitewelcome.com (Postfix, from userid 5007) -+ id 248D59C09927E; Mon, 18 May 2015 15:38:28 -0500 (CDT) -+Received: from gator4058.hostgator.com (gator4058.hostgator.com [192.185.4.69]) -+ by gateway13.websitewelcome.com (Postfix) with ESMTP id 1EB399C099246 -+ for <784565@bugs.debian.org>; Mon, 18 May 2015 15:38:28 -0500 (CDT) -+Received: from [63.158.132.10] (port=43192 helo=[10.50.3.84]) -+ by gator4058.hostgator.com with esmtpsa (UNKNOWN:DHE-RSA-AES128-SHA:128) -+ (Exim 4.82) -+ (envelope-from <kevin@vigor.nu>) -+ id 1YuRnv-0001VU-8i; Mon, 18 May 2015 15:38:27 -0500 -+Message-ID: <555A4DC1.2040900@vigor.nu> -+Date: Mon, 18 May 2015 14:38:25 -0600 -+From: Kevin Vigor <kevin@vigor.nu> -+User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Thunderbird/31.5.0 -+MIME-Version: 1.0 -+To: Mike Gabriel <mike.gabriel@das-netzwerkteam.de>, -+ 784565@bugs.debian.org, Francesco Poli <invernomuto@paranoici.org> -+CC: nito.martinez@qindel.com, x2go-dev@lists.x2go.org, -+ opensource@gznianguan.com -+Subject: Re: [pkg-x2go-devel] Bug#784565: Bug#784565: nx-libs-lite: parts -+ are derived from non-free code -+References: <20150506173532.7531.31389.reportbug@homebrew> <20150511092636.Horde.oj6sHKnvQDt85T3EW1WhVA1@mail.das-netzwerkteam.de> <20150511213659.34dce0505c493c1e23d2c3ee@paranoici.org> <20150512044637.Horde.8WHdvRpU7GS9Szy323gv_Q2@mail.das-netzwerkteam.de> <55521444.9090407@vigor.nu> <1431445315.4712.7.camel@Nokia-N900> <20150512234048.054319a449ffadcf87577425@paranoici.org> <20150514045809.Horde.-3NIZzBnA5V5B6a721F2kg2@mail.das-netzwerkteam.de> <20150516091912.Horde.W_1Szu5msccGYo-Ndwv3cg1@mail.das-netzwerkteam.de> -+In-Reply-To: <20150516091912.Horde.W_1Szu5msccGYo-Ndwv3cg1@mail.das-netzwerkteam.de> -+Content-Type: text/plain; charset=windows-1252; format=flowed -+Content-Transfer-Encoding: 7bit -+X-AntiAbuse: This header was added to track abuse, please include it with any abuse report -+X-AntiAbuse: Primary Hostname - gator4058.hostgator.com -+X-AntiAbuse: Original Domain - bugs.debian.org -+X-AntiAbuse: Originator/Caller UID/GID - [47 12] / [47 12] -+X-AntiAbuse: Sender Address Domain - vigor.nu -+X-BWhitelist: no -+X-Source-IP: 63.158.132.10 -+X-Exim-ID: 1YuRnv-0001VU-8i -+X-Source: -+X-Source-Args: -+X-Source-Dir: -+X-Source-Sender: ([10.50.3.84]) [63.158.132.10]:43192 -+X-Source-Auth: kevin@vigor.nu -+X-Email-Count: 2 -+X-Source-Cap: a3ZpZ29yO2t2aWdvcjtnYXRvcjQwNTguaG9zdGdhdG9yLmNvbQ== -+X-Greylist: delayed 1495 seconds by postgrey-1.34 at buxtehude; Mon, 18 May 2015 21:26:12 UTC -+ -+On 05/16/15 03:19, Mike Gabriel wrote: -+ As I have not heard back neither from Brian Pane, Zachary Vonler nor Gian Filippo Pinzari (we had Ascension Day and maybe a prolonged weekend that people used for going on VAC), I will try looking at the DXPC changes between 3.7.0 and 3.8.1. Obviously, NoMachine forked NXCOMP from DXPC some time between DXPC 3.7.0 and DXPC 3.8.0. -+> -+> Questions to Kevin: -+> -+> o Is there any SVN upstream repo still online -+> (I saw it in one of the tarballs, that SVN was -+> used for 3.9.0). -+ -+I'm afraid not. There was never an online repo available, and if I used one personally it is lost to the mists of time. -+ -+> o Do you have any tarballs documenting the -+> changes between 3.7.0 and 3.8.0? Do you also -+> have the 3.8.1 tarball? -+ -+I have the source tarballs to each of those (including the 3.8.1 version). The 3.8.0 release includes a README-3.8.0 file which documents the changes between 3.7.0 and 3.8.0 reasonably well. -+ -+As will be (unfortunately) obvious from examining the deltas between 3.7.0 (the last release by Brian and/or Zachary) and 3.8.0 (the first release by me), I inherited a significant majority of the code. -+ -+> o Did the 3.8.0 version of DXPC break proto -+> compatibility (i.e., you could not use client -+> 3.7.0 and server 3.8.0 and vice versa with -+> each other)? -+ -+Yes, minor version number bumps were used to indicate compatibility. 3.8.x was incompatible with 3.7.x (and also with 3.9.x). -+ -+ -+ -+ -+From kevin@vigor.nu Mon May 18 21:34:50 2015 -+Received: (at 784565) by bugs.debian.org; 18 May 2015 21:34:50 +0000 -+X-Spam-Checker-Version: SpamAssassin 3.4.0-bugs.debian.org_2005_01_02 -+ (2014-02-07) on buxtehude.debian.org -+X-Spam-Level: -+X-Spam-Status: No, score=-8.0 required=4.0 tests=BAYES_00,FOURLA, -+ HAS_BUG_NUMBER,RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H2,SPF_PASS autolearn=ham -+ autolearn_force=no version=3.4.0-bugs.debian.org_2005_01_02 -+X-Spam-Bayes: score:0.0000 Tokens: new, 39; hammy, 146; neutral, 132; spammy, -+ 4. spammytokens:0.999-1--tecnologies, 0.993-1--H*RU:67.18.68.12, -+ 0.987-1--D*ascend.com, 0.987-1--H*r:34828 hammytokens:0.000-+--H*f:sk:2015050, -+ 0.000-+--3.8.0, 0.000-+--H*UA:31.0, 0.000-+--H*u:31.0, -+ 0.000-+--H*f:sk:2015051 -+Return-path: <kevin@vigor.nu> -+Received: from gateway15.websitewelcome.com ([67.18.68.12]) -+ by buxtehude.debian.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:256) -+ (Exim 4.80) -+ (envelope-from <kevin@vigor.nu>) -+ id 1YuSgU-0005Jq-92 -+ for 784565@bugs.debian.org; Mon, 18 May 2015 21:34:50 +0000 -+Received: by gateway15.websitewelcome.com (Postfix, from userid 5007) -+ id 8BB94ED5E6912; Mon, 18 May 2015 16:11:44 -0500 (CDT) -+Received: from gator4058.hostgator.com (gator4058.hostgator.com [192.185.4.69]) -+ by gateway15.websitewelcome.com (Postfix) with ESMTP id 84825ED5E68F2 -+ for <784565@bugs.debian.org>; Mon, 18 May 2015 16:11:44 -0500 (CDT) -+Received: from [63.158.132.10] (port=34828 helo=[10.50.3.84]) -+ by gator4058.hostgator.com with esmtpsa (UNKNOWN:DHE-RSA-AES128-SHA:128) -+ (Exim 4.82) -+ (envelope-from <kevin@vigor.nu>) -+ id 1YuSK7-00005R-B6; Mon, 18 May 2015 16:11:43 -0500 -+Message-ID: <555A558E.1020703@vigor.nu> -+Date: Mon, 18 May 2015 15:11:42 -0600 -+From: Kevin Vigor <kevin@vigor.nu> -+User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Thunderbird/31.5.0 -+MIME-Version: 1.0 -+To: Mike Gabriel <mike.gabriel@das-netzwerkteam.de>, -+ 784565@bugs.debian.org, Francesco Poli <invernomuto@paranoici.org> -+CC: nito.martinez@qindel.com, x2go-dev@lists.x2go.org, -+ opensource@gznianguan.com -+Subject: Re: [pkg-x2go-devel] Bug#784565: Bug#784565: nx-libs-lite: parts -+ are derived from non-free code -+References: <20150506173532.7531.31389.reportbug@homebrew> <20150511092636.Horde.oj6sHKnvQDt85T3EW1WhVA1@mail.das-netzwerkteam.de> <20150511213659.34dce0505c493c1e23d2c3ee@paranoici.org> <20150512044637.Horde.8WHdvRpU7GS9Szy323gv_Q2@mail.das-netzwerkteam.de> <55521444.9090407@vigor.nu> <1431445315.4712.7.camel@Nokia-N900> <20150512234048.054319a449ffadcf87577425@paranoici.org> <20150514045809.Horde.-3NIZzBnA5V5B6a721F2kg2@mail.das-netzwerkteam.de> <20150516091912.Horde.W_1Szu5msccGYo-Ndwv3cg1@mail.das-netzwerkteam.de> -+In-Reply-To: <20150516091912.Horde.W_1Szu5msccGYo-Ndwv3cg1@mail.das-netzwerkteam.de> -+Content-Type: text/plain; charset=windows-1252; format=flowed -+Content-Transfer-Encoding: 7bit -+X-AntiAbuse: This header was added to track abuse, please include it with any abuse report -+X-AntiAbuse: Primary Hostname - gator4058.hostgator.com -+X-AntiAbuse: Original Domain - bugs.debian.org -+X-AntiAbuse: Originator/Caller UID/GID - [47 12] / [47 12] -+X-AntiAbuse: Sender Address Domain - vigor.nu -+X-BWhitelist: no -+X-Source-IP: 63.158.132.10 -+X-Exim-ID: 1YuSK7-00005R-B6 -+X-Source: -+X-Source-Args: -+X-Source-Dir: -+X-Source-Sender: ([10.50.3.84]) [63.158.132.10]:34828 -+X-Source-Auth: kevin@vigor.nu -+X-Email-Count: 2 -+X-Source-Cap: a3ZpZ29yO2t2aWdvcjtnYXRvcjQwNTguaG9zdGdhdG9yLmNvbQ== -+X-Greylist: delayed 1383 seconds by postgrey-1.34 at buxtehude; Mon, 18 May 2015 21:34:50 UTC -+ -+By the way, poking around the interwebs I find there is an archive of the old DXPC mailing list available at: -+ -+http://marc.info/?l=dxpc&r=1&w=2 -+ -+I think you will find this of particular interest: -+ -+ -+http://marc.info/?l=dxpc&m=93093790813555&w=2 -+ -+ -+List: dxpc -+Subject: Re: future tecnologies -+From: Brian Pane <brianp () cnet ! com> -+Date: 1999-07-02 16:42:18 -+[Download message RAW] -+ -+Kevin Vigor <kvigor@eng.ascend.com> wrote: -+> On 01-Jul-99 dxpc@mcfeeley.cc.utexas.edu wrote: -+> > Speaking of licensing, are you putting your 3.8.0 changes to the dxpc -+> > code itself under GPL, or are they going to use the original dxpc's -+> > licensing? -+> -+> No, as you can probably guess, I am no fan of the GPL. For stuff on -+> this level, where my hacking is pretty simple and probably devoid of -+> commercial value, I'll just release my changes to the public domain and -+> give up even a copyright interest in them. -+> -+> Your and Zach's copyrights still stand, of course. -+> -+> I *think* that fact that we use the LZO library and API, but do not -+> directly incorporate the code, allows us to escape the clutch of the GPL -+> virus. -+> -+> btw, is there an original dxpc license? I haven't seen anything but a -+> copyright notice, which to my non-lawyerly mind translates as "free to -+> all the world as is, negotiate with copyright owner if modifying or -+> including in some other product". -+ -+The copyright banner in the Readme is all the documentation there's ever -+been. My intent was to allow _any_ distribution, use, and modification -+of the source, without imposing restrictions on the licensing style of -+any system into which others might incorporate the code. We probably -+should start stating this clearly in the distributions. -+ -+-brian -+ -+[prev in list] [next in list] [prev in thread] [next in thread] -+ -+ -+ -+From mike.gabriel@das-netzwerkteam.de Mon May 18 21:49:10 2015 -+Received: (at 784565) by bugs.debian.org; 18 May 2015 21:49:10 +0000 -+X-Spam-Checker-Version: SpamAssassin 3.4.0-bugs.debian.org_2005_01_02 -+ (2014-02-07) on buxtehude.debian.org -+X-Spam-Level: -+X-Spam-Status: No, score=-6.9 required=4.0 tests=BAYES_00,FOURLA, -+ HAS_BUG_NUMBER,T_RP_MATCHES_RCVD autolearn=ham autolearn_force=no -+ version=3.4.0-bugs.debian.org_2005_01_02 -+X-Spam-Bayes: score:0.0000 Tokens: new, 35; hammy, 150; neutral, 281; spammy, -+ 0. spammytokens: hammytokens:0.000-+--H*RU:sk:grimnir, -+ 0.000-+--H*r:sk:grimnir, 0.000-+--H*RU:78.46.204.98, -+ 0.000-+--H*RU:88.198.48.199, 0.000-+--H*RU:sk:freya.d -+Return-path: <mike.gabriel@das-netzwerkteam.de> -+Received: from freya.das-netzwerkteam.de ([88.198.48.199]) -+ by buxtehude.debian.org with esmtps (TLS1.1:DHE_RSA_AES_256_CBC_SHA1:256) -+ (Exim 4.80) -+ (envelope-from <mike.gabriel@das-netzwerkteam.de>) -+ id 1YuSuK-0007oj-Hh -+ for 784565@bugs.debian.org; Mon, 18 May 2015 21:49:10 +0000 -+Received: from grimnir.das-netzwerkteam.de (grimnir.das-netzwerkteam.de [78.46.204.98]) -+ by freya.das-netzwerkteam.de (Postfix) with ESMTPS id 253493049 -+ for <784565@bugs.debian.org>; Mon, 18 May 2015 23:49:04 +0200 (CEST) -+Received: from localhost (localhost [127.0.0.1]) -+ by grimnir.das-netzwerkteam.de (Postfix) with ESMTP id ACC2E3BD6C -+ for <784565@bugs.debian.org>; Mon, 18 May 2015 23:49:03 +0200 (CEST) -+X-Virus-Scanned: Debian amavisd-new at grimnir.das-netzwerkteam.de -+Received: from grimnir.das-netzwerkteam.de ([127.0.0.1]) -+ by localhost (grimnir.das-netzwerkteam.de [127.0.0.1]) (amavisd-new, port 10024) -+ with ESMTP id Hh79XOiBkYIp for <784565@bugs.debian.org>; -+ Mon, 18 May 2015 23:49:03 +0200 (CEST) -+Received: from localhost (localhost [127.0.0.1]) -+ by grimnir.das-netzwerkteam.de (Postfix) with ESMTP id 6CC483BC0D -+ for <784565@bugs.debian.org>; Mon, 18 May 2015 23:49:03 +0200 (CEST) -+Received: from localhost (localhost [127.0.0.1]) -+ by grimnir.das-netzwerkteam.de (Postfix) with ESMTP id 2100C3BD6C -+ for <784565@bugs.debian.org>; Mon, 18 May 2015 23:49:03 +0200 (CEST) -+Received: from [10.139.193.227] (unknown [176.0.38.193]) -+ by grimnir.das-netzwerkteam.de (Postfix) with ESMTPSA id 453F63BB1E; -+ Mon, 18 May 2015 23:48:59 +0200 (CEST) -+From: Mike Gabriel <mike.gabriel@das-netzwerkteam.de> -+Reply-To: Mike Gabriel <mike.gabriel@das-netzwerkteam.de> -+To: Kevin Vigor <kevin@vigor.nu>, 784565@bugs.debian.org, Francesco Poli <invernomuto@paranoici.org> -+Cc: nito.martinez@qindel.com, x2go-dev@lists.x2go.org, opensource@gznianguan.com, zvonler@gmail.com -+Subject: Re: [pkg-x2go-devel] Bug#784565: Bug#784565: nx-libs-lite: parts -+ are derived from non-free code -+X-Mailer: Modest 3.2 -+References: <20150506173532.7531.31389.reportbug@homebrew> -+ <20150511092636.Horde.oj6sHKnvQDt85T3EW1WhVA1@mail.das-netzwerkteam.de> -+ <20150511213659.34dce0505c493c1e23d2c3ee@paranoici.org> -+ <20150512044637.Horde.8WHdvRpU7GS9Szy323gv_Q2@mail.das-netzwerkteam.de> -+ <55521444.9090407@vigor.nu> <1431445315.4712.7.camel@Nokia-N900> -+ <20150512234048.054319a449ffadcf87577425@paranoici.org> -+ <20150514045809.Horde.-3NIZzBnA5V5B6a721F2kg2@mail.das-netzwerkteam.de> -+ <20150516091912.Horde.W_1Szu5msccGYo-Ndwv3cg1@mail.das-netzwerkteam.de> -+ <555A558E.1020703@vigor.nu> -+In-Reply-To: <555A558E.1020703@vigor.nu> -+Content-Type: text/plain; charset=utf-8 -+Content-ID: <1431985731.1406.1.camel@Nokia-N900> -+Date: Mon, 18 May 2015 23:48:51 +0200 -+Message-Id: <1431985731.1406.2.camel@Nokia-N900> -+Mime-Version: 1.0 -+Content-Transfer-Encoding: 8bit -+ -+Hi Kevin, hi Zach, hi Francesco, hi all, -+ -+@Francesco, please review the recent posts and sum up what to do next. -+ -+----- Original message ----- -+> By the way, poking around the interwebs I find there is an archive of -+> the old DXPC mailing list available at: -+> -+> http://marc.info/?l=dxpc&r=1&w=2 -+> -+> I think you will find this of particular interest: -+> -+> -+> http://marc.info/?l=dxpc&m=93093790813555&w=2 -+ -+ -+> -+> -+> List:      dxpc -+> Subject:   Re: future tecnologies -+> From:      Brian Pane <brianp () cnet ! com> -+> Date:      1999-07-02 16:42:18 -+> [Download message RAW] -+> -+> Kevin Vigor <kvigor@eng.ascend.com> wrote: -+> > On 01-Jul-99 dxpc@mcfeeley.cc.utexas.edu wrote: -+> > > Speaking of licensing, are you putting your 3.8.0 changes to the dxpc -+> > > code itself under GPL, or are they going to use the original dxpc's -+> > > licensing? -+> > -+> > No, as you can probably guess, I am no fan of the GPL. For stuff on -+> > this level, where my hacking is pretty simple and probably devoid of -+> > commercial value, I'll just release my changes to the public domain and -+> > give up even a copyright interest in them. -+> > -+> > Your and Zach's copyrights still stand, of course. -+> > -+> > I *think* that fact that we use the LZO library and API, but do not -+> > directly incorporate the code, allows us to escape the clutch of the -+> > GPL virus. -+> > -+> > btw, is there an original dxpc license? I haven't seen anything but a -+> > copyright notice, which to my non-lawyerly mind translates as "free to -+> > all the world as is, negotiate with copyright owner if modifying or -+> > including in some other product". -+> -+> The copyright banner in the Readme is all the documentation there's ever -+> been. My intent was to allow _any_ distribution, use, and modification -+> of the source, without imposing restrictions on the licensing style of -+> any system into which others might incorporate the code. We probably -+> should start stating this clearly in the distributions. -+> -+> -brian -+> -+> [prev in list] [next in list] [prev in thread] [next in thread] -+ -+@Kevin: You are very awesome! -+ -+@Francesco: that old post from Brian should be the statement we need, right? As Brian has not answered back, so far, does that post suffice? -+ -+I also had a mail from Zach in my mailbox this morning. I managed to get hold of him via phone over the weekend. He posted his agreement to this Debian bug (as message #77) [1] earlier today. @Zach: thanks a lot for that!!! -+ -+@Francesco: by looking at [2], I cannot see any hint for Gian Filippo Pinzari being a copyright holder of DXPC. This is stated in the NoMachine files at at least one place, but not in the latest DXPC upstream release. I am on my mobile right now, need to check old versions of DXPC, but if Gian Filippo Pinzari is not listed in the DXPC 3.7.0 release (where nxcomp obviously got forked from), then I think that we don't require his feedback, right? -+ -+To my opinion, this issue can be settled. We have direct feedback from Kevin and Zach and Kevin dug out an old post from Brian stating the retroactive nature of the BSD-2-clause while Gian Filippo probably not being a real copyright holder of the original DXPC code. Right? -+ -+light+love, -+Mike -+ -+[1] https://bugs.debian.org/cgi-bin/bugreport.cgi?msg=77;att=0;bug=784565 -+[2] http://www.vigor.nu/dxpc/README -+ -+ -+-- -+ -+DAS-NETZWERKTEAM -+mike gabriel, herweg 7, 24357 fleckeby -+fon: +49 (1520) 1976148 -+ -+GnuPG Key ID 0x25771B13 -+mail: mike.gabriel@das-netzwerkteam.de, http://das-netzwerkteam.de -+ -+ -+ -+ -+From invernomuto@paranoici.org Mon May 18 22:15:14 2015 -+Received: (at 784565) by bugs.debian.org; 18 May 2015 22:15:14 +0000 -+X-Spam-Checker-Version: SpamAssassin 3.4.0-bugs.debian.org_2005_01_02 -+ (2014-02-07) on buxtehude.debian.org -+X-Spam-Level: -+X-Spam-Status: No, score=-12.0 required=4.0 tests=BAYES_00,DKIM_SIGNED, -+ DKIM_VALID,DKIM_VALID_AU,FOURLA,HAS_BUG_NUMBER,PGPSIGNATURE,SPF_HELO_PASS, -+ SPF_PASS autolearn=ham autolearn_force=no -+ version=3.4.0-bugs.debian.org_2005_01_02 -+X-Spam-Bayes: score:0.0000 Tokens: new, 12; hammy, 150; neutral, 220; spammy, -+ 0. spammytokens: hammytokens:0.000-+--H*UA:sk:x86_64-, -+ 0.000-+--H*x:sk:x86_64-, 0.000-+--H*c:PGP-SHA256, 0.000-+--H*c:SignHturH, -+ 0.000-+--H*c:pgp-signature -+Return-path: <invernomuto@paranoici.org> -+Received: from latitanza.investici.org ([82.94.249.234]) -+ by buxtehude.debian.org with esmtps (TLS1.2:DHE_RSA_AES_256_CBC_SHA256:256) -+ (Exim 4.80) -+ (envelope-from <invernomuto@paranoici.org>) -+ id 1YuTJa-0002xP-0G -+ for 784565@bugs.debian.org; Mon, 18 May 2015 22:15:14 +0000 -+Received: from [82.94.249.234] (latitanza [82.94.249.234]) (Authenticated sender: invernomuto@paranoici.org) by localhost (Postfix) with ESMTPSA id 921B3120546; -+ Mon, 18 May 2015 22:15:05 +0000 (UTC) -+DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=paranoici.org; -+ s=stigmate; t=1431987305; -+ bh=RQEA/1bkAQ71T0PpK/7XelDXEZBLyoVavVl9tpWLzWY=; -+ h=Date:From:To:Cc:Subject:In-Reply-To:References; -+ b=sO+MOEv4mZZNK2g5Om9IC7Og5k2qPAvFepN+ei+3/jCixgNBbvaLuRpMgJw6l1yjD -+ hpqRYIxtNgyVywgpuiFVACFBuDn1ksfdFrEPNAcgRl//Sert2aOjetbZcKi1VouhXi -+ eexR8IP81C0C1UjzjeC7zEmF5V+wSyhVs9jKvKfg= -+Received: from frx by homebrew with local (Exim 4.85) -+ (envelope-from <invernomuto@paranoici.org>) -+ id 1YuTIi-0002Se-TN; Tue, 19 May 2015 00:14:20 +0200 -+Date: Tue, 19 May 2015 00:14:08 +0200 -+From: Francesco Poli <invernomuto@paranoici.org> -+To: Mike Gabriel <mike.gabriel@das-netzwerkteam.de> -+Cc: Kevin Vigor <kevin@vigor.nu>, 784565@bugs.debian.org, -+ nito.martinez@qindel.com, x2go-dev@lists.x2go.org, -+ opensource@gznianguan.com, zvonler@gmail.com -+Subject: Re: [pkg-x2go-devel] Bug#784565: Bug#784565: nx-libs-lite: parts -+ are derived from non-free code -+Message-Id: <20150519001408.8e5452a098db48d6867af6cb@paranoici.org> -+In-Reply-To: <1431985731.1406.2.camel@Nokia-N900> -+References: <20150506173532.7531.31389.reportbug@homebrew> -+ <20150511092636.Horde.oj6sHKnvQDt85T3EW1WhVA1@mail.das-netzwerkteam.de> -+ <20150511213659.34dce0505c493c1e23d2c3ee@paranoici.org> -+ <20150512044637.Horde.8WHdvRpU7GS9Szy323gv_Q2@mail.das-netzwerkteam.de> -+ <55521444.9090407@vigor.nu> -+ <1431445315.4712.7.camel@Nokia-N900> -+ <20150512234048.054319a449ffadcf87577425@paranoici.org> -+ <20150514045809.Horde.-3NIZzBnA5V5B6a721F2kg2@mail.das-netzwerkteam.de> -+ <20150516091912.Horde.W_1Szu5msccGYo-Ndwv3cg1@mail.das-netzwerkteam.de> -+ <555A558E.1020703@vigor.nu> -+ <1431985731.1406.2.camel@Nokia-N900> -+X-Mailer: Sylpheed 3.5.0beta1 (GTK+ 2.24.25; x86_64-pc-linux-gnu) -+Mime-Version: 1.0 -+Content-Type: multipart/signed; protocol="application/pgp-signature"; -+ micalg="PGP-SHA256"; -+ boundary="Signature=_Tue__19_May_2015_00_14_08_+0200_Wl9eJ95DZcVokEvx" -+ -+--Signature=_Tue__19_May_2015_00_14_08_+0200_Wl9eJ95DZcVokEvx -+Content-Type: text/plain; charset=US-ASCII -+Content-Disposition: inline -+Content-Transfer-Encoding: quoted-printable -+ -+On Mon, 18 May 2015 23:48:51 +0200 Mike Gabriel wrote: -+ -+[...] -+> @Francesco: that old post from Brian should be the statement we need, -+> right? As Brian has not answered back, so far, does that post suffice? -+ -+Yes, I am under the impression that it may be considered as evidence -+that Brian had always meant to grant permission to modify, despite not -+being overly clear until DXPC version 3.8.1. -+In other words, it seems that the re-licensing was more intended to be -+a clarification, rather than a change of mind. -+ -+>=20 -+> I also had a mail from Zach in my mailbox this morning. I managed to -+> get hold of him via phone over the weekend. He posted his agreement -+> to this Debian bug (as message #77) [1] earlier today. @Zach: thanks -+> a lot for that!!! -+ -+This is really great! -+ -+>=20 -+> @Francesco: by looking at [2], I cannot see any hint for Gian Filippo -+> Pinzari being a copyright holder of DXPC. This is stated in the -+> NoMachine files at at least one place, but not in the latest DXPC -+> upstream release. I am on my mobile right now, need to check old -+> versions of DXPC, but if Gian Filippo Pinzari is not listed in -+> the DXPC 3.7.0 release (where nxcomp obviously got forked from), -+> then I think that we don't require his feedback, right? -+ -+If it is confirmed that Gian Filippo contributed to the forking of DXPC -+within the NoMachine project, but not directly to DXPC, then I think -+that he made his contributions available under the terms of the GPL v2 -+of the NoMachine project. -+If this is the case, no feedback should be required from his side. -+ -+>=20 -+> To my opinion, this issue can be settled. We have direct feedback -+> from Kevin and Zach and Kevin dug out an old post from Brian stating -+> the retroactive nature of the BSD-2-clause while Gian Filippo probably -+> not being a real copyright holder of the original DXPC code. Right? -+ -+Yes, I agree with this analysis. -+The only missing check is the one about Gian Filippo's involvement (as -+explained above). -+ -+Thanks a lot to everyone involved in this license fixing effort! -+Bye. -+ -+>=20 -+> [1] https://bugs.debian.org/cgi-bin/bugreport.cgi?msg=3D77;att=3D0;bug=3D= -+784565 -+> [2] http://www.vigor.nu/dxpc/README -+ -+ -+ -+--=20 -+ http://www.inventati.org/frx/ -+ There's not a second to spare! To the laboratory! -+..................................................... Francesco Poli . -+ GnuPG key fpr =3D=3D CA01 1147 9CD2 EFDF FB82 3925 3E1C 27E1 1F69 BFFE -+ -+--Signature=_Tue__19_May_2015_00_14_08_+0200_Wl9eJ95DZcVokEvx -+Content-Type: application/pgp-signature -+ -+-----BEGIN PGP SIGNATURE----- -+Version: GnuPG v2 -+ -+iQIcBAEBCAAGBQJVWmQ1AAoJED4cJ+Efab/+FowQALSZya0Xp8IXNA+d0gjQBLGQ -+7eDzaX+kPVKkbYdb7ZDlQF+ZVTwjOnqjf1dDLXWSHwcXYhFd3DeeFB11QfAKXptI -+GyzOt/vrh+w1K2zMb4rR9lxyUKIrKmVI6aOxyRTP7ojqkqqFvpF7ZVkDJZBFCSvx -+LXdAWTaz5NLIH5R4lzvTcTFYmC3JhBtf8m58l4jT3GC1pxoqlYQk0svWOrdlULQZ -+zh1dy6Sf0guwMuOH4pfreTKlNIizFj7BwanoN+tNvYG1sbQnyIwNRKUfG+v5/13P -+3tyjknNDTTE67T40qSv6pcZs46vqMTevL8E+s+wGfcvdKQ5Y2fPQ8Q9yxS6cVxH2 -+DXsLV97RFCcdD+ys+7P9j7xYG0e38juu61sU42cNmrb5iU0woB3SJtFvABhioGZg -+TLFi/OxOT6ZTHcZtfwqozVyB1fOesqx3nvwCEE3pNuf58ErxRy1sIXwoChNL4+eo -+ET1kojXBXHER6W6EHno0yz600sJXHE8rco+fv5b5qGBHdLEJ0k80YXQI4FhJQT69 -+I8FyASmNX4u6HvH6hRVm2BwE9WrZTUUQRb0m/pEfZVVroiRrqTl/ntvWchXvI2Tt -+IGfoDMtmVbSkh+2DQmsG9oDqiG1pCt3eNkLa1oftlQ7oIQem2MajCOS4QN20PMpU -+d/smtrrNvkmiWuQrjwDF -+=R0ou -+-----END PGP SIGNATURE----- -+ -+--Signature=_Tue__19_May_2015_00_14_08_+0200_Wl9eJ95DZcVokEvx-- -+ -+ -+ -+From kevin@vigor.nu Tue May 19 01:41:18 2015 -+Received: (at 784565) by bugs.debian.org; 19 May 2015 01:41:18 +0000 -+X-Spam-Checker-Version: SpamAssassin 3.4.0-bugs.debian.org_2005_01_02 -+ (2014-02-07) on buxtehude.debian.org -+X-Spam-Level: -+X-Spam-Status: No, score=-6.9 required=4.0 tests=BAYES_00,FOURLA, -+ HAS_BUG_NUMBER,SPF_PASS autolearn=ham autolearn_force=no -+ version=3.4.0-bugs.debian.org_2005_01_02 -+X-Spam-Bayes: score:0.0000 Tokens: new, 26; hammy, 131; neutral, 46; spammy, -+ 0. spammytokens: hammytokens:0.000-+--H*UA:31.6.0, 0.000-+--H*u:31.6.0, -+ 0.000-+--H*f:sk:2015050, 0.000-+--H*UA:31.0, 0.000-+--H*u:31.0 -+Return-path: <kevin@vigor.nu> -+Received: from gateway32.websitewelcome.com ([192.185.145.107]) -+ by buxtehude.debian.org with esmtps (TLS1.2:DHE_RSA_AES_256_CBC_SHA256:256) -+ (Exim 4.80) -+ (envelope-from <kevin@vigor.nu>) -+ id 1YuWX0-0002lG-Du -+ for 784565@bugs.debian.org; Tue, 19 May 2015 01:41:18 +0000 -+Received: by gateway32.websitewelcome.com (Postfix, from userid 500) -+ id 311BBD143B8C; Mon, 18 May 2015 20:16:29 -0500 (CDT) -+Received: from gator4058.hostgator.com (gator4058.hostgator.com [192.185.4.69]) -+ by gateway32.websitewelcome.com (Postfix) with ESMTP id 2F036D143B72 -+ for <784565@bugs.debian.org>; Mon, 18 May 2015 20:16:29 -0500 (CDT) -+Received: from [98.202.128.111] (port=49655 helo=[192.168.7.118]) -+ by gator4058.hostgator.com with esmtpsa (UNKNOWN:DHE-RSA-AES128-SHA:128) -+ (Exim 4.82) -+ (envelope-from <kevin@vigor.nu>) -+ id 1YuW8y-0004Tt-DX; Mon, 18 May 2015 20:16:28 -0500 -+Message-ID: <555A8EE9.9000503@vigor.nu> -+Date: Mon, 18 May 2015 19:16:25 -0600 -+From: Kevin Vigor <kevin@vigor.nu> -+User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:31.0) Gecko/20100101 Thunderbird/31.6.0 -+MIME-Version: 1.0 -+To: Francesco Poli <invernomuto@paranoici.org>, -+ Mike Gabriel <mike.gabriel@das-netzwerkteam.de> -+CC: 784565@bugs.debian.org, nito.martinez@qindel.com, -+ x2go-dev@lists.x2go.org, opensource@gznianguan.com, zvonler@gmail.com -+Subject: Re: [pkg-x2go-devel] Bug#784565: Bug#784565: nx-libs-lite: parts -+ are derived from non-free code -+References: <20150506173532.7531.31389.reportbug@homebrew> <20150511092636.Horde.oj6sHKnvQDt85T3EW1WhVA1@mail.das-netzwerkteam.de> <20150511213659.34dce0505c493c1e23d2c3ee@paranoici.org> <20150512044637.Horde.8WHdvRpU7GS9Szy323gv_Q2@mail.das-netzwerkteam.de> <55521444.9090407@vigor.nu> <1431445315.4712.7.camel@Nokia-N900> <20150512234048.054319a449ffadcf87577425@paranoici.org> <20150514045809.Horde.-3NIZzBnA5V5B6a721F2kg2@mail.das-netzwerkteam.de> <20150516091912.Horde.W_1Szu5msccGYo-Ndwv3cg1@mail.das-netzwerkteam.de> <555A558E.1020703@vigor.nu> <1431985731.1406.2.camel@Nokia-N900> <20150519001408.8e5452a098db48d6867af6cb@paranoici.org> -+In-Reply-To: <20150519001408.8e5452a098db48d6867af6cb@paranoici.org> -+Content-Type: text/plain; charset=windows-1252; format=flowed -+Content-Transfer-Encoding: 7bit -+X-AntiAbuse: This header was added to track abuse, please include it with any abuse report -+X-AntiAbuse: Primary Hostname - gator4058.hostgator.com -+X-AntiAbuse: Original Domain - bugs.debian.org -+X-AntiAbuse: Originator/Caller UID/GID - [47 12] / [47 12] -+X-AntiAbuse: Sender Address Domain - vigor.nu -+X-BWhitelist: no -+X-Source-IP: 98.202.128.111 -+X-Exim-ID: 1YuW8y-0004Tt-DX -+X-Source: -+X-Source-Args: -+X-Source-Dir: -+X-Source-Sender: ([192.168.7.118]) [98.202.128.111]:49655 -+X-Source-Auth: kevin@vigor.nu -+X-Email-Count: 3 -+X-Source-Cap: a3ZpZ29yO2t2aWdvcjtnYXRvcjQwNTguaG9zdGdhdG9yLmNvbQ== -+X-Greylist: delayed 1487 seconds by postgrey-1.34 at buxtehude; Tue, 19 May 2015 01:41:18 UTC -+ -+On 5/18/2015 4:14 PM, Francesco Poli wrote: -+> If it is confirmed that Gian Filippo contributed to the forking of -+> DXPC within the NoMachine project, but not directly to DXPC, then I -+> think that he made his contributions available under the terms of the -+> GPL v2 of the NoMachine project. If this is the case, no feedback -+> should be required from his side. -+I can confirm that Gian Fillippo never contributed directly to DXPC. -+You'll note his name does not appear in the DXPC README, and never has. -+ -+ -+ -+From mike.gabriel@das-netzwerkteam.de Tue May 19 08:15:28 2015 -+Received: (at 784565) by bugs.debian.org; 19 May 2015 08:15:28 +0000 -+X-Spam-Checker-Version: SpamAssassin 3.4.0-bugs.debian.org_2005_01_02 -+ (2014-02-07) on buxtehude.debian.org -+X-Spam-Level: -+X-Spam-Status: No, score=-11.9 required=4.0 tests=BAYES_00,FOURLA, -+ HAS_BUG_NUMBER,PGPSIGNATURE,T_RP_MATCHES_RCVD autolearn=ham -+ autolearn_force=no version=3.4.0-bugs.debian.org_2005_01_02 -+X-Spam-Bayes: score:0.0000 Tokens: new, 24; hammy, 150; neutral, 195; spammy, -+ 0. spammytokens: hammytokens:0.000-+--H*c:pgp-signature, -+ 0.000-+--H*c:protocol, 0.000-+--H*c:micalg, 0.000-+--H*c:signed, -+ 0.000-+--H*RU:sk:grimnir -+Return-path: <mike.gabriel@das-netzwerkteam.de> -+Received: from freya.das-netzwerkteam.de ([88.198.48.199]) -+ by buxtehude.debian.org with esmtps (TLS1.1:DHE_RSA_AES_256_CBC_SHA1:256) -+ (Exim 4.80) -+ (envelope-from <mike.gabriel@das-netzwerkteam.de>) -+ id 1YucgR-0008T9-K0 -+ for 784565@bugs.debian.org; Tue, 19 May 2015 08:15:28 +0000 -+Received: from grimnir.das-netzwerkteam.de (grimnir.das-netzwerkteam.de [78.46.204.98]) -+ by freya.das-netzwerkteam.de (Postfix) with ESMTPS id 7D1773C96; -+ Tue, 19 May 2015 10:15:23 +0200 (CEST) -+Received: from localhost (localhost [127.0.0.1]) -+ by grimnir.das-netzwerkteam.de (Postfix) with ESMTP id 08FEE3BFD5; -+ Tue, 19 May 2015 10:15:23 +0200 (CEST) -+X-Virus-Scanned: Debian amavisd-new at grimnir.das-netzwerkteam.de -+Received: from grimnir.das-netzwerkteam.de ([127.0.0.1]) -+ by localhost (grimnir.das-netzwerkteam.de [127.0.0.1]) (amavisd-new, port 10024) -+ with ESMTP id MW9pv+xO3WwY; Tue, 19 May 2015 10:15:22 +0200 (CEST) -+Received: from grimnir.das-netzwerkteam.de (localhost [127.0.0.1]) -+ by grimnir.das-netzwerkteam.de (Postfix) with ESMTPS id 97FCC3C2AA; -+ Tue, 19 May 2015 10:15:12 +0200 (CEST) -+Received: from bifrost.das-netzwerkteam.de (bifrost.das-netzwerkteam.de -+ [178.62.101.154]) by mail.das-netzwerkteam.de (Horde Framework) with HTTP; -+ Tue, 19 May 2015 08:15:12 +0000 -+Date: Tue, 19 May 2015 08:15:12 +0000 -+Message-ID: <20150519081512.Horde.36QI-nOdkbpWsXrDE4E8Yw1@mail.das-netzwerkteam.de> -+From: Mike Gabriel <mike.gabriel@das-netzwerkteam.de> -+To: Kevin Vigor <kevin@vigor.nu>, 784565@bugs.debian.org, Francesco Poli -+ <invernomuto@paranoici.org> -+Cc: opensource@gznianguan.com, zvonler@gmail.com, nito.martinez@qindel.com, -+ x2go-dev@lists.x2go.org -+Subject: Re: [pkg-x2go-devel] Bug#784565: Bug#784565: Bug#784565: -+ nx-libs-lite: parts are derived from non-free code -+References: <20150506173532.7531.31389.reportbug@homebrew> -+ <20150511092636.Horde.oj6sHKnvQDt85T3EW1WhVA1@mail.das-netzwerkteam.de> -+ <20150511213659.34dce0505c493c1e23d2c3ee@paranoici.org> -+ <20150512044637.Horde.8WHdvRpU7GS9Szy323gv_Q2@mail.das-netzwerkteam.de> -+ <55521444.9090407@vigor.nu> <1431445315.4712.7.camel@Nokia-N900> -+ <20150512234048.054319a449ffadcf87577425@paranoici.org> -+ <20150514045809.Horde.-3NIZzBnA5V5B6a721F2kg2@mail.das-netzwerkteam.de> -+ <20150516091912.Horde.W_1Szu5msccGYo-Ndwv3cg1@mail.das-netzwerkteam.de> -+ <555A558E.1020703@vigor.nu> <1431985731.1406.2.camel@Nokia-N900> -+ <20150519001408.8e5452a098db48d6867af6cb@paranoici.org> -+ <555A8EE9.9000503@vigor.nu> -+In-Reply-To: <555A8EE9.9000503@vigor.nu> -+User-Agent: Internet Messaging Program (IMP) H5 (6.2.2) -+Accept-Language: de,en -+Organization: DAS-NETZWERKTEAM -+X-Originating-IP: 178.62.101.154 -+X-Remote-Browser: Mozilla/5.0 (X11; Linux x86_64; rv:32.0) Gecko/20100101 -+ Firefox/32.0 Iceweasel/32.0 -+Content-Type: multipart/signed; boundary="=_AI4511z4pP7yPmTeeGgEoA6"; -+ protocol="application/pgp-signature"; micalg=pgp-sha1 -+MIME-Version: 1.0 -+ -+This message is in MIME format and has been PGP signed. -+ -+--=_AI4511z4pP7yPmTeeGgEoA6 -+Content-Type: text/plain; charset=us-ascii; format=flowed; DelSp=Yes -+Content-Disposition: inline -+Content-Transfer-Encoding: quoted-printable -+ -+Hi Kevin, hi Frederico, -+ -+On Di 19 Mai 2015 03:16:25 CEST, Kevin Vigor wrote: -+ -+> On 5/18/2015 4:14 PM, Francesco Poli wrote: -+>> If it is confirmed that Gian Filippo contributed to the forking of=20=20 -+>>=20DXPC within the NoMachine project, but not directly to DXPC, then I=20= -+=20 -+>>=20think that he made his contributions available under the terms of=20= -+=20 -+>>=20the GPL v2 of the NoMachine project. If this is the case, no=20=20 -+>>=20feedback should be required from his side. -+ -+> I can confirm that Gian Fillippo never contributed directly to DXPC.=20= -+=20 -+>=20You'll note his name does not appear in the DXPC README, and never=20= -+=20 -+>=20has. -+ -+@Kevin: This is again good news for sorting out this issue. Thanks a=20=20 -+lot=20for your help, Kevin. -+ -+@Frederico: I guess we are through then. Thanks for helping with=20=20 -+clarifying=20the situation (and bringing it up in the first place). -+ -+For fixing this issue (in terms of closing the bug), I propose this=20=20 -+for=20downstream (i.e., Debian): -+ -+ o copy bug_784565.mbox [1] into the debian/ folder of the=20=20 -+nx-libs-lite=20package -+ o upload some latest release of nx-libs-lite 3.5.0.x to unstable -+ o update debian/copyright accordingly -+ o close this bug via debian/changelog -+ -+For upstream, I propose this: -+ -+ o copy bug_784565.mbox into the docs/ folder -+ o update copyright information in nxcomp/ subfolder -+ o provide some README or such that shortly explains our last weeks' proc= -+ess -+ o this will be for the upcoming 3.6.x release series of nx-libs -+ -+ o this should also be backported to the 3.5.x release series -+ -+Once the mbox file and README are upstreamed, I will drop that content=20= -+=20 -+from=20the debian/ folder in the Debian package nx-libs-lite (as it will=20= -+=20 -+be=20in the upstream tarball of nx-libs-lite). -+ -+Feedback (esp. from Frederico), concerns, other suggestions? -+ -+Greets, -+Mike -+ -+ -+[1] https://bugs.debian.org/cgi-bin/bugreport.cgi?mbox=3Dyes;bug=3D784565 -+--=20 -+ -+DAS-NETZWERKTEAM -+mike=20gabriel, herweg 7, 24357 fleckeby -+fon: +49 (1520) 1976 148 -+ -+GnuPG Key ID 0x25771B31 -+mail: mike.gabriel@das-netzwerkteam.de, http://das-netzwerkteam.de -+ -+freeBusy: -+https://mail.das-netzwerkteam.de/freebusy/m.gabriel%40das-netzwerkteam.de.x= -+fb -+ -+--=_AI4511z4pP7yPmTeeGgEoA6 -+Content-Type: application/pgp-signature -+Content-Description: Digitale PGP-Signatur -+Content-Disposition: inline -+ -+-----BEGIN PGP SIGNATURE----- -+Version: GnuPG v1 -+ -+iQIcBAABAgAGBQJVWvEQAAoJEJr0azAldxsxiZgP/1MhcK1h2or3zG3P9h3oOqFk -+rsknSn/0paY8HlzggWh5N4juLU9ET/VyO+xMCbVFDXb9jv5ryRI0MinPGwp6ujTl -+DxHAz5q5YrC/NYH9IU0PqL2Zja952xbjlVPgf64+iLT0kqFmY7L48bkxVXd4cKnJ -+flflATeaPTcVgIVcfFte2q/NJV7AAGjwb/tEOOMbqrRYOu1hKLozWnRSLZ/rdl5V -+OmktCjfAfw6Cvy4/IN6pCjG4uqFvsWvzjMofR53MLuy8cwQhtpvK9KPLCZlo9Efm -+KyrFNl866Egmc/HTLQkSaOJOKartANw+Ev7qsVi30OJOEWh9T1fDjnFvLn6hesKf -+9pAS/+mkuCUVNjLI/ATZAwY93bzBS+vo7fya2D/DxDk8FoLIe7XdI9GABdTE2U0H -+eyNLb/Lq485BEQEu9ThtvACZYH3F3UqA7OcFfLKyVw2lsOJV7SN3KCl76te4iNcf -+UlVzVr211lKhGTV9hLF3daKntu1H3jQku9zLK9ShJR6bYTpCAsGi2h2xzZm5PLDE -+9tbf+qUmDn3lp4uMaBtBdtq+yt47Wk95iS41x/qyvy0PK/RdnPxTpfdbriu4+1l2 -+ij6Dq5bb7GckZDmpVjSsGSr4jjWtJ5QrnZbpv/u/v3+wliZL0c+CScrA+5I/qJeI -+eGXnQIwqcWE/2/AcAz2r -+=Q2/H -+-----END PGP SIGNATURE----- -+ -+--=_AI4511z4pP7yPmTeeGgEoA6-- -+ -+ -+ -+ -+From invernomuto@paranoici.org Wed May 20 18:04:34 2015 -+Received: (at 784565) by bugs.debian.org; 20 May 2015 18:04:34 +0000 -+X-Spam-Checker-Version: SpamAssassin 3.4.0-bugs.debian.org_2005_01_02 -+ (2014-02-07) on buxtehude.debian.org -+X-Spam-Level: -+X-Spam-Status: No, score=-12.0 required=4.0 tests=BAYES_00,DKIM_SIGNED, -+ DKIM_VALID,DKIM_VALID_AU,FOURLA,HAS_BUG_NUMBER,PGPSIGNATURE,SPF_HELO_PASS, -+ SPF_PASS autolearn=ham autolearn_force=no -+ version=3.4.0-bugs.debian.org_2005_01_02 -+X-Spam-Bayes: score:0.0000 Tokens: new, 11; hammy, 150; neutral, 212; spammy, -+ 0. spammytokens: hammytokens:0.000-+--H*UA:sk:x86_64-, -+ 0.000-+--H*x:sk:x86_64-, 0.000-+--H*c:PGP-SHA256, 0.000-+--H*c:SignHturH, -+ 0.000-+--H*c:pgp-signature -+Return-path: <invernomuto@paranoici.org> -+Received: from latitanza.investici.org ([82.94.249.234]) -+ by buxtehude.debian.org with esmtps (TLS1.2:DHE_RSA_AES_256_CBC_SHA256:256) -+ (Exim 4.80) -+ (envelope-from <invernomuto@paranoici.org>) -+ id 1Yv8M4-00011u-4i -+ for 784565@bugs.debian.org; Wed, 20 May 2015 18:04:34 +0000 -+Received: from [82.94.249.234] (latitanza [82.94.249.234]) (Authenticated sender: invernomuto@paranoici.org) by localhost (Postfix) with ESMTPSA id C5F33121147; -+ Wed, 20 May 2015 18:04:24 +0000 (UTC) -+DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=paranoici.org; -+ s=stigmate; t=1432145064; -+ bh=kDc9DoBw4hJZuuDTXyurpbInn9fdFF6IfH4jMVGqQB4=; -+ h=Date:From:To:Cc:Subject:In-Reply-To:References; -+ b=frjvhV6NrKV9TyZSGeK6evsHeI9sAgoPOPboFwSAIij0bPp1G5rCLaVWFjD1RtFsK -+ j+6I/XZ60KTIjiXaQGqqznF3jU2dQ/lzPkj1VYKa9Kmt1pw4UhJvU+mbyrO6cX2mSi -+ 52Wi1of3M+l/UT9DYKjXgzMRuWkYoAq4tmsOe9jY= -+Received: from frx by homebrew with local (Exim 4.85) -+ (envelope-from <invernomuto@paranoici.org>) -+ id 1Yv8LB-0001gi-7y; Wed, 20 May 2015 20:03:37 +0200 -+Date: Wed, 20 May 2015 20:03:25 +0200 -+From: Francesco Poli <invernomuto@paranoici.org> -+To: Mike Gabriel <mike.gabriel@das-netzwerkteam.de> -+Cc: Kevin Vigor <kevin@vigor.nu>, 784565@bugs.debian.org, -+ opensource@gznianguan.com, zvonler@gmail.com, nito.martinez@qindel.com, -+ x2go-dev@lists.x2go.org -+Subject: Re: [pkg-x2go-devel] Bug#784565: Bug#784565: Bug#784565: -+ nx-libs-lite: parts are derived from non-free code -+Message-Id: <20150520200325.6641876f5b4b2f483bdaea7d@paranoici.org> -+In-Reply-To: <20150519081512.Horde.36QI-nOdkbpWsXrDE4E8Yw1@mail.das-netzwerkteam.de> -+References: <20150506173532.7531.31389.reportbug@homebrew> -+ <20150511092636.Horde.oj6sHKnvQDt85T3EW1WhVA1@mail.das-netzwerkteam.de> -+ <20150511213659.34dce0505c493c1e23d2c3ee@paranoici.org> -+ <20150512044637.Horde.8WHdvRpU7GS9Szy323gv_Q2@mail.das-netzwerkteam.de> -+ <55521444.9090407@vigor.nu> -+ <1431445315.4712.7.camel@Nokia-N900> -+ <20150512234048.054319a449ffadcf87577425@paranoici.org> -+ <20150514045809.Horde.-3NIZzBnA5V5B6a721F2kg2@mail.das-netzwerkteam.de> -+ <20150516091912.Horde.W_1Szu5msccGYo-Ndwv3cg1@mail.das-netzwerkteam.de> -+ <555A558E.1020703@vigor.nu> -+ <1431985731.1406.2.camel@Nokia-N900> -+ <20150519001408.8e5452a098db48d6867af6cb@paranoici.org> -+ <555A8EE9.9000503@vigor.nu> -+ <20150519081512.Horde.36QI-nOdkbpWsXrDE4E8Yw1@mail.das-netzwerkteam.de> -+X-Mailer: Sylpheed 3.5.0beta1 (GTK+ 2.24.25; x86_64-pc-linux-gnu) -+Mime-Version: 1.0 -+Content-Type: multipart/signed; protocol="application/pgp-signature"; -+ micalg="PGP-SHA256"; -+ boundary="Signature=_Wed__20_May_2015_20_03_25_+0200__3Vr7Ml7uHmX7EzV" -+ -+--Signature=_Wed__20_May_2015_20_03_25_+0200__3Vr7Ml7uHmX7EzV -+Content-Type: text/plain; charset=US-ASCII -+Content-Disposition: inline -+Content-Transfer-Encoding: quoted-printable -+ -+On Tue, 19 May 2015 08:15:12 +0000 Mike Gabriel wrote: -+ -+[...] -+> @Frederico: I guess we are through then. -+ -+Yes, it seems so (I'm assuming you meant to direct this question to -+me...). -+ -+> Thanks for helping with =20 -+> clarifying the situation (and bringing it up in the first place). -+ -+You're welcome! -+Thanks to you and all the involved people for helping to solve this -+issue. -+ -+>=20 -+> For fixing this issue (in terms of closing the bug), I propose this =20 -+> for downstream (i.e., Debian): -+>=20 -+> o copy bug_784565.mbox [1] into the debian/ folder of the =20 -+> nx-libs-lite package -+ -+Maybe the entire bug log is an overkill... -+I would include the relevant replies only. For instance: -+https://bugs.debian.org/cgi-bin/bugreport.cgi?msg=3D40;mbox=3Dyes;bug=3D784= -+565 -+https://bugs.debian.org/cgi-bin/bugreport.cgi?msg=3D77;mbox=3Dyes;bug=3D784= -+565 -+https://bugs.debian.org/cgi-bin/bugreport.cgi?msg=3D87;mbox=3Dyes;bug=3D784= -+565 -+https://bugs.debian.org/cgi-bin/bugreport.cgi?msg=3D102;mbox=3Dyes;bug=3D78= -+4565 -+ -+> o upload some latest release of nx-libs-lite 3.5.0.x to unstable -+> o update debian/copyright accordingly -+ -+In the debian/copyright file the license for the original DXPC code -+should be replaced with the 2-clause BSD license (currently adopted for -+DXPC) with a comment saying something like: -+ -+ The original DXPC code used to be available under a license which -+ failed to explicitly grant the permission to modify, but was later -+ retroactively re-licensed under the 2-clause BSD license (see -+ debian/bug_784565_*.mbox for the copyright owners' statements; see -+ <https://bugs.debian.org/784565> for more details) -+ -+Moreover, the copyright notice of Gian Filippo Pinzari should be -+documented in some more appropriate part of the debian/copyright file, -+associated with the NoMachine license (GPL v2 or later). -+ -+> o close this bug via debian/changelog -+>=20 -+> For upstream, I propose this: -+>=20 -+> o copy bug_784565.mbox into the docs/ folder -+ -+Again, I would not include the entire bug log, but only the relevant -+messages (see above)... -+ -+> o update copyright information in nxcomp/ subfolder -+> o provide some README or such that shortly explains our last weeks' pr= -+ocess -+> o this will be for the upcoming 3.6.x release series of nx-libs -+>=20 -+> o this should also be backported to the 3.5.x release series -+ -+ -+Thanks to everyone involved! -+Bye. -+ -+--=20 -+ http://www.inventati.org/frx/ -+ There's not a second to spare! To the laboratory! -+..................................................... Francesco Poli . -+ GnuPG key fpr =3D=3D CA01 1147 9CD2 EFDF FB82 3925 3E1C 27E1 1F69 BFFE -+ -+--Signature=_Wed__20_May_2015_20_03_25_+0200__3Vr7Ml7uHmX7EzV -+Content-Type: application/pgp-signature -+ -+-----BEGIN PGP SIGNATURE----- -+Version: GnuPG v2 -+ -+iQIcBAEBCAAGBQJVXMxyAAoJED4cJ+Efab/+yUsP/RWzC9NoVGF7UnEIEpJODu0u -+hVkX1zjpJ+iMByHVlatR90ulKwkvVb4d354YJqyI0VM2wUtif6XBoroB0K3i6vZE -+DsxugBlzhnH8jgpPVKbOyBKshpKKZsUbvDdEXM20ZkfI4xwokymiSdHOKoHH4ZHS -+WN9q+i6OezfWvZSKQ+VCbe7QiQABAcB+zCdVvUWevhNqMDKdhsDC03Ju+5YZQbse -+QbgYSazZvJouLPamivquh8nBdjGpPxqAJGrlUu3SR5slJxRojRvl2cl/CDFEQEQR -+gbLMnnr2nj1hF4JI2WaWCSX90NrGTfGxCN4IdNd7tmjtkg5lB+KFx63YjHbLmUl/ -+k87XAyXxSWyGvc7M2xyIXBQQrHtRxtK0rdN+e7ht9PcXYyxUtQzr7vfPwvI+B2GV -+M23ZUoyV1rFp5JymbUL4Vk6pq/hLnv9FzwOySNVcj6Pt8eT+BcoSbwOI1AMq1P1S -+wCs/PhEGBA3TDWERXF0Fb7x24NEf7EdjmzKTGGdXTCfSkacxkGzsMaRpWb0D6IaV -+tSI6CmBQ9uOdkbiNDhGX4esosyJZJQ9GrnWX9d/lTs9wXUHHykvnYRbDzpkChZdI -+ICqc+IxnPmX6HU2kyq2ZAzfhx/drqLizcv0gQlyY6APjRu3EQ3tapR9kYB6BcuGU -+cMLlO0549ekk8/s3Zk0i -+=9Hew -+-----END PGP SIGNATURE----- -+ -+--Signature=_Wed__20_May_2015_20_03_25_+0200__3Vr7Ml7uHmX7EzV-- -+ -+ -+ -+From mike.gabriel@das-netzwerkteam.de Thu May 21 09:35:35 2015 -+Received: (at 784565) by bugs.debian.org; 21 May 2015 09:35:35 +0000 -+X-Spam-Checker-Version: SpamAssassin 3.4.0-bugs.debian.org_2005_01_02 -+ (2014-02-07) on buxtehude.debian.org -+X-Spam-Level: -+X-Spam-Status: No, score=-11.9 required=4.0 tests=BAYES_00,FOURLA, -+ HAS_BUG_NUMBER,PGPSIGNATURE,T_RP_MATCHES_RCVD autolearn=ham -+ autolearn_force=no version=3.4.0-bugs.debian.org_2005_01_02 -+X-Spam-Bayes: score:0.0000 Tokens: new, 15; hammy, 150; neutral, 222; spammy, -+ 0. spammytokens: hammytokens:0.000-+--H*c:pgp-signature, -+ 0.000-+--H*c:protocol, 0.000-+--H*c:micalg, 0.000-+--H*c:signed, -+ 0.000-+--H*RU:sk:grimnir -+Return-path: <mike.gabriel@das-netzwerkteam.de> -+Received: from freya.das-netzwerkteam.de ([88.198.48.199]) -+ by buxtehude.debian.org with esmtps (TLS1.1:DHE_RSA_AES_256_CBC_SHA1:256) -+ (Exim 4.80) -+ (envelope-from <mike.gabriel@das-netzwerkteam.de>) -+ id 1YvMt4-0006Ry-Ri -+ for 784565@bugs.debian.org; Thu, 21 May 2015 09:35:35 +0000 -+Received: from grimnir.das-netzwerkteam.de (grimnir.das-netzwerkteam.de [78.46.204.98]) -+ by freya.das-netzwerkteam.de (Postfix) with ESMTPS id 89FD21F2; -+ Thu, 21 May 2015 11:35:31 +0200 (CEST) -+Received: from localhost (localhost [127.0.0.1]) -+ by grimnir.das-netzwerkteam.de (Postfix) with ESMTP id C86AC3BAE9; -+ Thu, 21 May 2015 11:35:30 +0200 (CEST) -+X-Virus-Scanned: Debian amavisd-new at grimnir.das-netzwerkteam.de -+Received: from grimnir.das-netzwerkteam.de ([127.0.0.1]) -+ by localhost (grimnir.das-netzwerkteam.de [127.0.0.1]) (amavisd-new, port 10024) -+ with ESMTP id GqfEjOoeH2CA; Thu, 21 May 2015 11:35:30 +0200 (CEST) -+Received: from grimnir.das-netzwerkteam.de (localhost [127.0.0.1]) -+ by grimnir.das-netzwerkteam.de (Postfix) with ESMTPS id 615DC3BAB2; -+ Thu, 21 May 2015 11:35:30 +0200 (CEST) -+Received: from bifrost.das-netzwerkteam.de (bifrost.das-netzwerkteam.de -+ [178.62.101.154]) by mail.das-netzwerkteam.de (Horde Framework) with HTTP; -+ Thu, 21 May 2015 09:35:30 +0000 -+Date: Thu, 21 May 2015 09:35:30 +0000 -+Message-ID: <20150521093530.Horde.Oeys0xv-mTUN5U5IZtdeLA1@mail.das-netzwerkteam.de> -+From: Mike Gabriel <mike.gabriel@das-netzwerkteam.de> -+To: Francesco Poli <invernomuto@paranoici.org>, 784565@bugs.debian.org -+Cc: nito.martinez@qindel.com, opensource@gznianguan.com -+Subject: Re: [pkg-x2go-devel] Bug#784565: Bug#784565: Bug#784565: -+ Bug#784565: nx-libs-lite: parts are derived from non-free code -+References: <20150506173532.7531.31389.reportbug@homebrew> -+ <20150511092636.Horde.oj6sHKnvQDt85T3EW1WhVA1@mail.das-netzwerkteam.de> -+ <20150511213659.34dce0505c493c1e23d2c3ee@paranoici.org> -+ <20150512044637.Horde.8WHdvRpU7GS9Szy323gv_Q2@mail.das-netzwerkteam.de> -+ <55521444.9090407@vigor.nu> <1431445315.4712.7.camel@Nokia-N900> -+ <20150512234048.054319a449ffadcf87577425@paranoici.org> -+ <20150514045809.Horde.-3NIZzBnA5V5B6a721F2kg2@mail.das-netzwerkteam.de> -+ <20150516091912.Horde.W_1Szu5msccGYo-Ndwv3cg1@mail.das-netzwerkteam.de> -+ <555A558E.1020703@vigor.nu> <1431985731.1406.2.camel@Nokia-N900> -+ <20150519001408.8e5452a098db48d6867af6cb@paranoici.org> -+ <555A8EE9.9000503@vigor.nu> -+ <20150519081512.Horde.36QI-nOdkbpWsXrDE4E8Yw1@mail.das-netzwerkteam.de> -+ <20150520200325.6641876f5b4b2f483bdaea7d@paranoici.org> -+In-Reply-To: <20150520200325.6641876f5b4b2f483bdaea7d@paranoici.org> -+User-Agent: Internet Messaging Program (IMP) H5 (6.2.2) -+Accept-Language: de,en -+Organization: DAS-NETZWERKTEAM -+X-Originating-IP: 178.62.101.154 -+X-Remote-Browser: Mozilla/5.0 (X11; Linux x86_64; rv:32.0) Gecko/20100101 -+ Firefox/32.0 Iceweasel/32.0 -+Content-Type: multipart/signed; boundary="=_5hM8_j7kivGPCYTZql9Fug5"; -+ protocol="application/pgp-signature"; micalg=pgp-sha1 -+MIME-Version: 1.0 -+ -+This message is in MIME format and has been PGP signed. -+ -+--=_5hM8_j7kivGPCYTZql9Fug5 -+Content-Type: text/plain; charset=us-ascii; format=flowed; DelSp=Yes -+Content-Disposition: inline -+Content-Transfer-Encoding: quoted-printable -+ -+Control: forwarded -1 https://github.com/ArcticaProject/nx-libs/issues/30 -+ -+Hi Francesco, -+ -+On Mi 20 Mai 2015 20:03:25 CEST, Francesco Poli wrote: -+ -+> On Tue, 19 May 2015 08:15:12 +0000 Mike Gabriel wrote: -+> -+> [...] -+>> @Frederico: I guess we are through then. -+> -+> Yes, it seems so (I'm assuming you meant to direct this question to -+> me...). -+ -+Yes. :-) -+ -+>> For fixing this issue (in terms of closing the bug), I propose this -+>> for downstream (i.e., Debian): -+>> -+>> o copy bug_784565.mbox [1] into the debian/ folder of the -+>> nx-libs-lite package -+> -+> Maybe the entire bug log is an overkill... -+> I would include the relevant replies only. For instance: -+> https://bugs.debian.org/cgi-bin/bugreport.cgi?msg=3D40;mbox=3Dyes;bug=3D7= -+84565 -+> https://bugs.debian.org/cgi-bin/bugreport.cgi?msg=3D77;mbox=3Dyes;bug=3D7= -+84565 -+> https://bugs.debian.org/cgi-bin/bugreport.cgi?msg=3D87;mbox=3Dyes;bug=3D7= -+84565 -+> https://bugs.debian.org/cgi-bin/bugreport.cgi?msg=3D102;mbox=3Dyes;bug=3D= -+784565 -+ -+ACK. -+ -+>> o upload some latest release of nx-libs-lite 3.5.0.x to unstable -+>> o update debian/copyright accordingly -+> -+> In the debian/copyright file the license for the original DXPC code -+> should be replaced with the 2-clause BSD license (currently adopted for -+> DXPC) with a comment saying something like: -+> -+> The original DXPC code used to be available under a license which -+> failed to explicitly grant the permission to modify, but was later -+> retroactively re-licensed under the 2-clause BSD license (see -+> debian/bug_784565_*.mbox for the copyright owners' statements; see -+> <https://bugs.debian.org/784565> for more details) -+> -+> Moreover, the copyright notice of Gian Filippo Pinzari should be -+> documented in some more appropriate part of the debian/copyright file, -+> associated with the NoMachine license (GPL v2 or later). -+> -+>> o close this bug via debian/changelog -+>> -+>> For upstream, I propose this: -+>> -+>> o copy bug_784565.mbox into the docs/ folder -+> -+> Again, I would not include the entire bug log, but only the relevant -+> messages (see above)... -+> -+>> o update copyright information in nxcomp/ subfolder -+>> o provide some README or such that shortly explains our last=20=20 -+>>=20weeks' process -+>> o this will be for the upcoming 3.6.x release series of nx-libs -+>> -+>> o this should also be backported to the 3.5.x release series -+ -+Doing all the above now. -+ -+Thanks to all, -+Mike -+ -+--=20 -+ -+DAS-NETZWERKTEAM -+mike=20gabriel, herweg 7, 24357 fleckeby -+fon: +49 (1520) 1976 148 -+ -+GnuPG Key ID 0x25771B31 -+mail: mike.gabriel@das-netzwerkteam.de, http://das-netzwerkteam.de -+ -+freeBusy: -+https://mail.das-netzwerkteam.de/freebusy/m.gabriel%40das-netzwerkteam.de.x= -+fb -+ -+--=_5hM8_j7kivGPCYTZql9Fug5 -+Content-Type: application/pgp-signature -+Content-Description: Digitale PGP-Signatur -+Content-Disposition: inline -+ -+-----BEGIN PGP SIGNATURE----- -+Version: GnuPG v1 -+ -+iQIcBAABAgAGBQJVXabiAAoJEJr0azAldxsxd4cP/in26lIPvdANMyDaqq3zQOMh -+n/Q+oZK5SYnHQP7vaS4mOWjTw5tCbfcUMcKwu1KpbgpUGOl9e1c/oKGxR3j5GWh3 -+XiqQhPWEMf64OsM4vW5prJFrx0VNqfxykMWbGzQfs6Dz9ihJ6+HzVudOk3bfHwj2 -+GahCflRo7xA1hJjwz5cIX1/WJaAF25TVSQ43jVpPu0pnAYOWvhOAZMpTJTZqRbgT -+peuFaiKE+NOb4C/WO9mkuO3wlEBZ5Ef/RinKQDlbV5/CZElEs1f42A4t5q909EVi -+U2PpaEis8BJAIKetl8g/bPoHh9u6X3tbeOKJlZBo5l2SMyLUG0sYsoAyhJKJtIvk -+gwdGdO71A7HLEJ6DfvE8vYXUPy9JEOQ6hhL2qeZOtJG2DZ2Qcoll9eK5scg2YutW -+ZXHRTYcCQeS4PQpvQPlCR5LuFTJeNBwJ0cWgtfXYPIrPMyeEZj/VP+Ypm82hBT+I -+JFjo80QjOEJ7uEM1wmn8nD0rbbP/NVf6ot/UcwlejC/XaYIlWDW5FrXf18UbGsvu -+VzaHkLbhbGUYedwsb50Uu6Nn4IX8IEcF3zbwnqmB5IlbPYV0UokjgtnKEIQbdmF4 -+fQ5xe5u/p2aZTnQwt39vey2W/RxJVOHRjVVrYGv0eqgda8TYOWzI3UIjSYGfuLcU -+kDRest50Qfy4tmilPx3z -+=Cf5/ -+-----END PGP SIGNATURE----- -+ -+--=_5hM8_j7kivGPCYTZql9Fug5-- -+ -+ -+ -+ ---- a/nxcomp/LICENSE -+++ b/nxcomp/LICENSE -@@ -1,4 +1,5 @@ --Copyright (c) 2001, 2010 NoMachine - http://www.nomachine.com/. -+Copyright (c) 2001,2010 NoMachine - http://www.nomachine.com/. -+Copyright (c) 2000,2003 Gian Filippo Pinzari - - NXCOMP library and NX extensions to X are copyright of NoMachine. - Redistribution and use of this software is allowed according to the -@@ -18,6 +19,8 @@ along with this program; if not, you can - or write to the Free Software Foundation, Inc., 59 Temple Place, Suite - 330, Boston, MA 02111-1307 USA - -+============================================================================== -+ - Parts of this software are derived from DXPC project. These copyright - notices apply to original DXPC code: - -@@ -29,9 +32,59 @@ THIS SOFTWARE IS PROVIDED ``AS IS'' AND - WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF - MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. - --Copyright (c) 1995,1996 Brian Pane -+Copyright (c) 1995,1996,2000,2006 Brian Pane - Copyright (c) 1996,1997 Zachary Vonler and Brian Pane - Copyright (c) 1999 Kevin Vigor and Brian Pane --Copyright (c) 2000,2006 Gian Filippo Pinzari and Brian Pane -+<crossed-out>Copyright (c) 2000,2006 Gian Filippo Pinzari and Brian Pane</crossed-out> - - All rights reserved. -+ -+============================================================================== -+ -+Update 2015-05-21 on the nature of the original DXPC license: The -+original DXPC code used to be available under a license which failed to -+explicitly grant the permission to modify, but was later retroactively -+re-licensed under the 2-clause BSD license (see -+README.on-retroactive-DXPC-license for the copyright owners' statements; -+see <https://bugs.debian.org/784565> for more details). -+ -+In the course of discussion, it also became evident that Gian Filippo -+Pinzari never participated in any of the official DXPC releases, but -+rather worked on the forked code on the NoMachine side. Thus, we -+crossed-out his name in the above copyright notice and moved him to the -+top list of copyright holders associated with the GPL-2 re-licensing done -+by NoMachine. -+ -+Thus, the version of DXPC where NXCOMP got forked from (most likely some -+DXPC version between release 3.7.0 and release 3.8.0) can be considered -+as BSD-2-clause, as quoted below: -+ -+Copyright (c) 1995,1996 Brian Pane -+Copyright (c) 1996,1997 Zachary Vonler and Brian Pane -+Copyright (c) 1999-2002 Kevin Vigor and Brian Pane -+All rights reserved. -+ -+Redistribution and use in source and binary forms, with or without -+modification, are permitted provided that the following conditions are met: -+ -+* Redistributions of source code must retain the above copyright -+ notice, this list of conditions and the following disclaimer. -+ -+* Redistributions in binary form must reproduce the above copyright -+ notice, this list of conditions and the following disclaimer in the -+ documentation and/or other materials provided with the distribution. -+ -+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND -+CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, -+INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS -+BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, -+EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -+HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN -+CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -+OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH -+DAMAGE. ---- a/nxcomp/Misc.cpp -+++ b/nxcomp/Misc.cpp -@@ -384,9 +384,9 @@ static const char CopyrightInfo[] = - Copyright (c) 2001, 2010 NoMachine, http://www.nomachine.com/.\n\ - \n\ - NXCOMP, NX protocol compression and NX extensions to this software \n\ --are copyright of NoMachine. Redistribution and use of the present\n\ --software is allowed according to terms specified in the file LICENSE\n\ --which comes in the source distribution.\n\ -+are copyright of NoMachine. Redistribution (modified or unmodified) and\n\ -+use of the present software is allowed according to terms specified in\n\ -+the file LICENSE which comes in the source distribution.\n\ - \n\ - Check http://www.nomachine.com/licensing.html for applicability.\n\ - \n\ ---- /dev/null -+++ b/nxcomp/README.on-retroactive-DXPC-license -@@ -0,0 +1,269 @@ -+On DXPC retroactive relicensing as BSD-2-clause -+=============================================== -+ -+TL;DR; In May 2015, all versions of DXPC released before version 3.8.1 (sometime -+in 2002) have retroactively been re-licensed by all previous maintainers -+of DXPC as BSD-2-clause. -+ -+This README file gives an overview of the discussion thread that lead to -+the retroactive re-licensing of DXPC. -+ -+For the full discussion, see doc/DXPC_re-licensed::debbug_784565.mbox in -+this source project or #784565 on the Debian bug tracker [1]. -+ -+light+love, -+20150521, Mike Gabriel <mike.gabriel@das-netzwerkteam.de> -+ -+[1] https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=784565 -+ -+------------------------------------------------------------------------------ -+ -+STEP 1 -+====== -+ -+In May 2015, a serious license issue around the nxcomp code shipped in -+this source project was raised and solved on the Debian bug tracker (thanks to -+Francesco Poli and many others): http://bugs.debian.org/784565 -+ -+""" -+From: "Francesco Poli \(wintermute\)" <invernomuto@paranoici.org> -+To: Debian Bug Tracking System <submit@bugs.debian.org> -+Date: Wed, 06 May 2015 19:35:32 +0200 -+ -+I noticed that the debian/copyright states: -+ -+[...] -+| Parts of this software are derived from DXPC project. These copyright -+| notices apply to original DXPC code: -+| -+| Redistribution and use in source and binary forms are permitted provided -+| that the above copyright notice and this paragraph are duplicated in all -+| such forms. -+| -+| THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED -+| WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF -+| MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. -+| -+| Copyright (c) 1995,1996 Brian Pane -+| Copyright (c) 1996,1997 Zachary Vonler and Brian Pane -+| Copyright (c) 1999 Kevin Vigor and Brian Pane -+| Copyright (c) 2000,2001 Gian Filippo Pinzari and Brian Pane -+[...] -+ -+This license lacks the permission to modify the DXPC code. -+Hence, the original DXPC code does not appear to comply with the -+DFSG. And the nx-libs-lite is in part derived from DXPC code. -+ -+This basically means that nx-libs-lite includes parts which are -+non-free (as they are derived from non-modifiable code) and -+are also possibly legally undistributable (as they are non-modifiable, -+but actually modified). The combination with the rest of nx-libs-lite -+(which is GPL-licensed) may also be legally undistributable (since -+the license with no permission to modify is GPL-incompatible). -+ -+ -+If there's anything I misunderstood, please clarify. -+ -+Otherwise, please address this issue as soon as possible. -+The copyright owners for the original DXPC code should be -+contacted and persuaded to re-license under GPL-compatible -+terms. -+""" -+ -+The issue has been settled by asking all recent maintainers (i.e., -+copyright holders) of DXPC, to agree on considering the BSD-2-clause -+license (as introduced in DXPC 3.8.1) retro-actively as the license of -+all pre-3.8.1 DXPC releases. -+ -+STEP 2: -+======= -+ -+Kevin Vigor, the (at that time being) latest known maintainer of DXPC -+replied back immediately and provided the info given below. He also -+stated that he agrees to applying BSD-2-clause retroactively to all -+pre-3.8.1 releases of DXPC. -+ -+""" -+From: Kevin Vigor <kevin@vigor.nu> -+To: Mike Gabriel <mike.gabriel@das-netzwerkteam.de> -+CC: 784565@bugs.debian.org, [...] -+Subject: Re: Bug#784565: nx-libs-lite: parts are derived from non-free code -+ -+Hi Mike, et al, -+ -+ I am not the original author of dxpc, that being Brian Pane. However, -+ I took over maintenance circa 1999 and am still the primary maintainer -+ (though the project has effectively been dead for most of a decade -+ now). -+ -+ As you are aware, when I inherited the code, it was licensed under a -+ variant of the BSD license that did not include the 'with -+ modification' clause. To the best of my recollection, somebody from -+ the FSF contacted me circa 2001 regarding this and as a result, -+ subsequent releases were done under a standard 2-clause BSD license -+ with the modification clause. Again, to the best of my recollection, I -+ contacted Brian about this change and he offered no objection. -+ -+ Further, I recall distinctly that NoMachine contacted me and -+ explicitly asked permission before including DXPC code in NX, which I -+ happily granted with no new conditions beyond the BSD license already -+ in play. -+ -+ It is possible, though by no means certain, that I could dig up -+ ancient email to corroborate this account if necessary. However, I am -+ more than willing to publicly state that I believe NoMachine's use of -+ DXPC code to be both legal and ethical, and that my intent when -+ changing the license to 2-clause BSD was simply to clarity the -+ existing intent and that it ought therefore be considered retroactive. -+ -+ Yours, -+ Kevin Vigor -+ -+[...] -+""" -+ -+STEP 3: -+------- -+ -+We were not able to dig out any recent mail address of Zachary Volner, -+another of the DXPC copyright holders, but a phone number. -+ -+On Friday, May 15th, I (Mike Gabriel) called that phone number and left a -+message on - hopefully - Zach's voicebox, asking him to mail me, so I -+could explain everything. He mailed back and later on posted the below -+statement to the Debian BTS, also expressing his agreement to the -+retroactive re-licensing of DXPC. -+ -+""" -+Date: Mon, 18 May 2015 10:05:38 -0500 -+Subject: Re: Bug#784565: nx-libs-lite: parts are derived from non-free code -+From: Zach Vonler <zvonler@gmail.com> -+To: 784565@bugs.debian.org -+ -+On Thu, 14 May 2015 05:55:42 +0000 Mike Gabriel < -+mike.gabriel@das-netzwerkteam.de> wrote: -+ -+> -+> TL;DR; So here comes my actual question: are you (Brian Pane, Zachary -+> Vonler, Gian Filippo Pinzari) ok with retroactively regarding -+> pre-3.8.1 code of DXPC (that you probably all worked on at that time) -+> as BSD-2-clause? Are you ok with others having taken or taking the -+> pre-3.8.1 DXPC code and distribute it in a modified form? -+> -+ -+ -+> A yes from all of you as DXPC copyright holders is essential for the -+> continuation of nx-libs development under a free license. This may -+> also possibly be an issue for NXv4 in case parts of it have been -+> derived from DXPC. -+ -+ -+Yes, I am fine with considering the license change to be retroactive to -+cover the time I was the maintainer. -+ -+I have no objections to others distributing modified versions of that code. -+ -+Zach -+""" -+ -+STEP 4: -+------- -+ -+By 18th May 2015, Brian Pane had not mailed back to us. Hoping he is well -+and alive. Giving my personal gratitude to him for his work on DXPC back -+in the nighties. -+ -+However, Kevin found an old archive of the DXPC mailing lists, esp. a -+post by Brian expressing openness to modifications of all DXPC code -+versions. -+ -+We refer to this regarding his consent on the re-licensing. -+ -+""" -+Date: Mon, 18 May 2015 15:11:42 -0600 -+From: Kevin Vigor <kevin@vigor.nu> -+To: Mike Gabriel <mike.gabriel@das-netzwerkteam.de>, 784565@bugs.debian.org, Francesco Poli <invernomuto@paranoici.org> -+CC: [...] -+Subject: Re: Bug#784565: nx-libs-lite: parts are derived from non-free code -+ -+By the way, poking around the interwebs I find there is an archive of the old DXPC mailing list available at: -+ -+http://marc.info/?l=dxpc&r=1&w=2 -+ -+I think you will find this of particular interest: -+ -+ -+http://marc.info/?l=dxpc&m=93093790813555&w=2 -+ -+ -+List: dxpc -+Subject: Re: future tecnologies -+From: Brian Pane <brianp () cnet ! com> -+Date: 1999-07-02 16:42:18 -+[Download message RAW] -+ -+Kevin Vigor <kvigor@eng.ascend.com> wrote: -+> On 01-Jul-99 dxpc@mcfeeley.cc.utexas.edu wrote: -+> > Speaking of licensing, are you putting your 3.8.0 changes to the dxpc -+> > code itself under GPL, or are they going to use the original dxpc's -+> > licensing? -+> -+> No, as you can probably guess, I am no fan of the GPL. For stuff on -+> this level, where my hacking is pretty simple and probably devoid of -+> commercial value, I'll just release my changes to the public domain and -+> give up even a copyright interest in them. -+> -+> Your and Zach's copyrights still stand, of course. -+> -+> I *think* that fact that we use the LZO library and API, but do not -+> directly incorporate the code, allows us to escape the clutch of the GPL -+> virus. -+> -+> btw, is there an original dxpc license? I haven't seen anything but a -+> copyright notice, which to my non-lawyerly mind translates as "free to -+> all the world as is, negotiate with copyright owner if modifying or -+> including in some other product". -+ -+The copyright banner in the Readme is all the documentation there's ever -+been. My intent was to allow _any_ distribution, use, and modification -+of the source, without imposing restrictions on the licensing style of -+any system into which others might incorporate the code. We probably -+should start stating this clearly in the distributions. -+ -+-brian -+ -+[prev in list] [next in list] [prev in thread] [next in thread] -+""" -+ -+STEP 5: -+------- -+ -+Last but not least, Kevin informed us that Gian Filippo Pinzari never -+contributed any code to any of the official DPXC releases. So we assumed -+that his copyrights on the code stem from the time where he - under the -+NoMachine umbrella - worked on the code and should probably be associated -+with the GPL-2 re-licensing of the code later on done by NoMachine -+(which we did in the LICENSE file). -+ -+It also appears, that there has been an incongruity between the copyright -+statement in nxcomp/Misc.cpp and nxcomp/LICENSE for Gian Filippo Pinzari. -+We used the copyright years (2000,2003) from nxcomp/Misc.cpp instead of -+those originally given in nxcomp/LICENSE (2000,2006). -+ -+""" -+Date: Mon, 18 May 2015 19:16:25 -0600 -+From: Kevin Vigor <kevin@vigor.nu> -+To: Francesco Poli <invernomuto@paranoici.org>, -+ Mike Gabriel <mike.gabriel@das-netzwerkteam.de> -+CC: 784565@bugs.debian.org, [...] -+Subject: Re: [pkg-x2go-devel] Bug#784565: Bug#784565: nx-libs-lite: parts are derived from non-free code -+ -+On 5/18/2015 4:14 PM, Francesco Poli wrote: -+> If it is confirmed that Gian Filippo contributed to the forking of -+> DXPC within the NoMachine project, but not directly to DXPC, then I -+> think that he made his contributions available under the terms of the -+> GPL v2 of the NoMachine project. If this is the case, no feedback -+> should be required from his side. -+I can confirm that Gian Fillippo never contributed directly to DXPC. -+You'll note his name does not appear in the DXPC README, and never has. -+""" diff --git a/debian/patches/series b/debian/patches/series index 2b2800fbe..79df3658e 100644 --- a/debian/patches/series +++ b/debian/patches/series @@ -1,160 +1,2 @@ -0000_add-NX-redistribution-README.full+lite.patch -0002_nxcompshad_build-against-nx-x11-only.full.patch -0003_nxcompshad_gcc43.full.patch -0004_nx-X11_fix-nxcompshad-build.full.patch -0005_nxcomp_gcc43.full+lite.patch -0006_nxcomp_libpng15.full+lite.patch -0007_nxcompshad_clean-gch-files.full.patch -0008_nxcomp_sa-restorer.full+lite.patch -0009_nxproxy_add-man-page.full+lite.patch -0009_nxagent_add-man-page.full.patch -0010_nxauth_fix-binary-name-in-man-page.full.patch -0012_nxcomp_makefile-uninstall+autoconf.full+lite.patch -0013_nxcompext_makefile-uninstall+autoconf.full.patch -0014_nxcompshad_makefile-uninstall+autoconf.full.patch -0015_nxproxy_makefile-uninstall.full+lite.patch -0016_nx-X11_install-location.full.patch -0017_nx-X11_fix-SetPictureFilter.full.patch -0024_fix-make-clean.full.patch -0024_fix-make-clean.full+lite.patch -0025_nxcomp-fix-ftbfs-against-jpeg9a.full+lite.patch -0026_nxcompext_honour-optflags.full.patch -0026_nxcomp_honour-optflags.full+lite.patch -0026_nxcompshad_honour-optflags.full.patch -0027_nxcomp_abstract-X11-socket.full+lite.patch -0028_nx-X11_abstract-kernel-sockets.full.patch -0029_nxcomp_ppc64.full+lite.patch -0030_nx-X11_configure-args.full.patch -0031_nx-X11_parallel-make.full.patch -0040_nx-X11_Fix-alpha-premultiplication-in-XRenderPa.full.patch -0051_nxcomp_macos105-fdisset.full+lite.patch -0052_nxcomp_macos10-nxauth-location.full+lite.patch -0053_nx-X11_no-xcomp1-install-target.full.patch -0054_nx-X11_ppc64-ftbfs.full.patch -0055_nx-X11_imake-Werror-format-security.full.patch -0056_nx-X11_Werror-format-security.full.patch -0057_nx-X11_sanitize-eventmasks.full.patch -0101_nxagent_set-rgb-path.full.patch -0102_xserver-xext_set-securitypolicy-path.full.patch -0103_nxagent_set-X0-config-path.full.patch -0105_nxagent_export-remote-keyboard-config.full.patch -0106_nxagent_utf8-copy-clipboard.full.patch -0107_nxagent_clipboard-compound-text+small-bed-sheets.full.patch -0108_nxagent_wine-close-delay.full.patch -0110_nxagent_createpixmap-bounds-check.full.patch -0200_nxagent_check-binary-x2go-flavour.full.patch -0201_nxagent_set-x2go-icon-if-x2goagent-flavour.full.patch -0202_nx-X11_enable-xinerama.full.patch -0203_nxagent_disable-rootless-exit.full.patch -0204_nxagent_repaint-solidpict.full.patch -0205_nxagent_refresh-adsl.full.patch -0206_nxagent_clipboard-as-nxoption.full.patch -0207_nxagent_fix-xfixes-selection.full.patch -0209_x2goagent_add-man-page.full.patch -0210_nxagent_save_session_state.full.patch -0210_nxcomp_save_session_state.full+lite.patch -0211_nxcomp_set_default_options.full+lite.patch -0212_nxcomp_build-on-Android.full+lite.patch -0220_nxproxy_bind-loopback-only.full+lite.patch -0300_nxagent_set-wm-class.full.patch -0301_nx-X11_use-shared-libs.full.patch -0302_nx-X11_xkbbasedir-detection.full.patch -0320_nxagent_configurable-keystrokes.full.patch -0321_nxagent_x2go-specific-keystroke-config.full.patch -0400_nxcomp-version.full+lite.patch -#0401_nxcomp_bigrequests-and-genericevent-extensions.full+lite.patch -0410_nxcomp_use-MAKEDEPEND-in-path.full+lite.patch -0420_nxcomp_use-correct-library-naming-scheme-on-OS-X.full+lite.patch -0600_nx-X11+nxcompext+nxcompshad_unique-libnames.full.patch -0601_nx-X11_build-option-changes-to-not-use-bundled-libraries.full.patch -0602_nx-X11_initgroups.full.patch -0603_nx-X11_compilation_warnings.full.patch -0605_nxcomp_Types.h-dont-use-STL-internals-on-libc++.full+lite.patch -0606_nx-X11_build-on-aarch64.full.patch -0607_nxcomp_macosx-X11-launcher-in-private-tmp.full+lite.patch -0610_nxcompext_use-MAKEDEPEND-in-path.full.patch -0611_nxcompshad_use-MAKEDEPEND-in-path.full.patch -0612_nxproxy_use-MAKEDEPEND-in-path.full+lite.patch -0613_nxcomp_use-dynamiclib-flag-on-OS-X.full+lite.patch -0614_nxcompshad_use-dynamiclib-flag-on-OS-X.full.patch -0620_nxcompext_use-correct-library-naming-scheme-on-OS-X.full.patch -0621_nxcompshad_use-correct-library-naming-scheme-on-OS-X.full.patch -0630_nx-X11_fix-underlinking-dlopen-dlsym.full.patch -0640_nx-X11_fix-underlinking-libNX_Xcomposite_damage_fixes.full.patch -0650_nxcompshad_link-to-NX_Xext.full.patch -0660_nxcomp_fix-negotiation-in-stage-10-error.full+lite.patch -0990_fix-DEBUG-and-TEST-builds.full.patch -0991_fix-hr-typos.full+lite.patch -0991_fix-hr-typos.full.patch -0992_fix-DEBUG-TEST-DUMP-FLUSH-TOKEN-PING-et-al-builds.full+lite.patch -0999_nxagent_unbrand-nxagent-brand-x2goagent.full.patch -1001-LZW-decompress-fix-for-CVE-2011-2895-From-xorg-.full.patch -1002-Fix-CVE-2011-4028-File-disclosure-vulnerability.full.patch -1003-Avoid-use-after-free-in-dix-dixfonts.c-doImageT.full.patch -1004-CVE-2013-6462-unlimited-sscanf-overflows-stack-.full.patch -1005-CVE-2014-0209-integer-overflow-of-realloc-size-.full.patch -1006-CVE-2014-0209-integer-overflow-of-realloc-size-.full.patch -1007-CVE-2014-0210-unvalidated-length-in-_fs_recv_co.full.patch -1008-Don-t-crash-when-we-receive-an-FS_Error-from-th.full.patch -1009-CVE-2014-0210-unvalidated-lengths-when-reading-.full.patch -1010-CVE-2014-0211-Integer-overflow-in-fs_get_reply-.full.patch -1011-CVE-2014-0210-unvalidated-length-fields-in-fs_r.full.patch -1012-CVE-2014-0211-integer-overflow-in-fs_read_exten.full.patch -1013-CVE-2014-0211-integer-overflow-in-fs_alloc_glyp.full.patch -1014-CVE-2014-0210-unvalidated-length-fields-in-fs_r.full.patch -1015-CVE-2014-0210-unvalidated-length-fields-in-fs_r.full.patch -1016-CVE-2014-0210-unvalidated-length-fields-in-fs_r.full.patch -1017-CVE-2014-0210-unvalidated-length-fields-in-fs_r.full.patch -1018-unchecked-malloc-may-allow-unauthed-client-to-c.full.patch -1019-dix-integer-overflow-in-ProcPutImage-CVE-2014-8.full.patch -1020-dix-integer-overflow-in-GetHosts-CVE-2014-8092-.full.patch -1021-dix-integer-overflow-in-RegionSizeof-CVE-2014-8.full.patch -1022-dix-integer-overflow-in-REQUEST_FIXED_SIZE-CVE-.full.patch -1023-dbe-unvalidated-lengths-in-DbeSwapBuffers-calls.full.patch -1024-Xi-unvalidated-lengths-in-Xinput-extension-CVE-.full.patch -1025-xcmisc-unvalidated-length-in-SProcXCMiscGetXIDL.full.patch -1026-Xv-unvalidated-lengths-in-XVideo-extension-swap.full.patch -1027-render-check-request-size-before-reading-it-CVE.full.patch -1028-render-unvalidated-lengths-in-Render-extn.-swap.full.patch -1029-xfixes-unvalidated-length-in-SProcXFixesSelectS.full.patch -1030-randr-unvalidated-lengths-in-RandR-extension-sw.full.patch -1031-glx-Be-more-paranoid-about-variable-length-requ.full.patch -1032-glx-Be-more-strict-about-rejecting-invalid-imag.full.patch -1033-glx-Additional-paranoia-in-__glXGetAnswerBuffer.full.patch -1034-glx-Add-safe_-add-mul-pad-v3-CVE-2014-8093-4-6-.full.patch -1035-glx-Length-checking-for-GLXRender-requests-v2-C.full.patch -1036-glx-Integer-overflow-protection-for-non-generat.full.patch -1037-glx-Top-level-length-checking-for-swapped-Vendo.full.patch -1038-glx-Length-checking-for-non-generated-single-re.full.patch -1039-glx-Length-checking-for-RenderLarge-requests-v2.full.patch -1040-glx-Pass-remaining-request-length-into-varsize-.full.patch -1041-nx-X11-lib-font-fc-fserve.c-initialize-remainin.full.patch -1042-Do-proper-input-validation-to-fix-for-CVE-2011-.full.patch -1101-Coverity-844-845-846-Fix-memory-leaks.full.patch -1102-include-introduce-byte-counting-functions.full.patch -1103-xkb-Don-t-swap-XkbSetGeometry-data-in-the-input.full.patch -1104-xkb-Check-strings-length-against-request-size.full.patch -1200-CVE-2013-7439-MakeBigReq-don-t-move-the-last-wo.full.patch -1210-CVE-2015-3418-dix-Allow-zero-height-PutImage-re.full.patch -1250_nx-X11_Bug-51375-Xorg-doesn_t-set-status-for-RR.full.patch -1251_nx-X11_Drop-a-reference-to-user-mode-after-crea.full.patch -1252_nx-X11_Free-randr-crtc-and-output-pointer-array.full.patch -1253_nx-X11_randr-check-for-virtual-size-limits-befo.full.patch -1254_nx-X11_randr-fix-server-crash-in-RRGetScreenInf.full.patch -1255_nx-X11_RRModeCreate-plug-memory-leak-of-newMode.full.patch -1256_nx-X11_ProcRRGetScreenInfo-swap-configTimestamp.full.patch -1257_nx-X11_randr-Fix-REQUEST-vs-REQUEST_SIZE_MATCH-.full.patch -1258_nx-X11_randr-Clean-up-compiler-warnings-about-u.full.patch -1259_nx-X11_Make-RANDR-_set_-timestamps-follow-clien.full.patch -1260_nx-X11_xserver-Avoid-sending-uninitialized-padd.full.patch -1270_nx-X11_CVE-2017-2624-Use-timingsafe_memcmp-to-c.full.patch -1300_nxcomp_Set-TokenSize-to-1536-for-lin.full+lite.patch -1301_nxcomp_Reduce-TokenSize-slightly-for.full+lite.patch -1400_nx-X11_Render.c-Improve-situation-fo.full.patch -1500_all_propagate-optflags-to-subcompone.full.patch -1510_all_propagate-optflags-to-subcompone.full+lite.patch -1600_nxcomp-handle-launchd-socket-in-Auth.full+lite.patch -1610_nxcomp-harcode-some-UNIX-socket-path.full+lite.patch -9900-dxpc-license-history.full+lite.patch -0016_nx-X11_install-location.debian.patch -0102_xserver-xext_set-securitypolicy-path.debian.patch +2001_nx-X11_install-location.debian.patch +2002_xserver-xext_set-securitypolicy-path.debian.patch |