Subject: Bug#776 closed by Mike Gabriel <[email-masked]> (fix for #776 reverted)

From: [email-masked] (X2Go Bug Tracking System)
Date: Tue, 10 Feb 2015 04:25:02 +0000

This is an automatic notification regarding your Bug report
which was filed against the nx-libs package:

#776: nx-X11: Size of pointer 'server_support' used instead of size of its data

It has been closed by Mike Gabriel <[email-masked]>.

Their explanation is attached below along with your original report.
If this explanation is unsatisfactory and you have not received a
better one in a separate message then please contact Mike Gabriel <[email-masked]> by
replying to this email.

-- 
776: http://bugs.x2go.org/cgi-bin/bugreport.cgi?bug=776
X2Go Bug Tracking System
Contact [email-masked] with problems

Subject: fix for #776 reverted
From: Mike Gabriel <[email-masked]>
To: [email-masked]
Cc: [email-masked]
Date: Tue, 10 Feb 2015 04:20:52 +0000

Control: tag -1 not-a-bug
Control: close -1

Hi Heinrich,

yesterday, I reverted the fix for #776 because while applying all the  
NX patches in preparation of the 3.6.x branch of nx-libs [1], I  
realized that the file in question (glxextensions.c) never gets used  
at build time.

Greets,
Mike

[1] https://github.com/ArcticaProject/nx-libs
-- 

DAS-NETZWERKTEAM
mike gabriel, herweg 7, 24357 fleckeby
fon: +49 (1520) 1976 148

GnuPG Key ID 0x25771B31
mail: [email-masked], http://das-netzwerkteam.de

freeBusy:
https://mail.das-netzwerkteam.de/freebusy/m.gabriel%40das-netzwerkteam.de.xfb

Subject: nx-X11: Size of pointer 'server_support' used instead of size of its data
From: Heinrich Schuchardt <[email-masked]>
To: [email-masked]
Date: Fri, 30 Jan 2015 20:29:51 +0100

package: nx-libs
version: head

In nx-libs/nx-X11/extras/Mesa/src/glx/x11/glxextensions.c
the length of the zeroed memory is the length of the pointer (4 bytes in
case of a 32bit system) not the length of the data the pointer points to
(8 byte).

static void
__glXProcessServerString( const struct extension_info * ext,
			  const char * server_string,
			  unsigned char * server_support )
{
   unsigned  base;
   unsigned  len;

   (void) memset( server_support, 0, sizeof( server_support ) );

Furthermore the length of the memory area pointed to by server_support
is defined in varying ways in the coding:

#define __GL_EXT_BYTES   ((__NUM_GL_EXTS + 7) / 8)

unsigned char server_support[ __GL_EXT_BYTES ];
unsigned char server_support[8];

Currently __NUM_GL_EXTS = 123, so __GL_EXT_BYTES = 8.

What is expected to happen if __GL_EXT_BYTES > 8 after defining six more
values in the unamed (sic!) enum with the different bits?

This questionable code was identified with cppcheck.
http://cppcheck.sourceforge.net/

Best regards

Heinrich Schuchardt