Your message dated Sat, 20 Jan 2007 08:32:09 +0000
with message-id <[EMAIL PROTECTED]>
and subject line Bug#352261: fixed in netpbm-free 2:10.0-11
has caused the attached Bug report to be marked as done.

This means that you claim that the problem has been dealt with.
If this is not the case it is now your responsibility to reopen the
Bug report if necessary, and/or fix the problem forthwith.

(NB: If you are a system administrator and have no idea what I am
talking about this indicates a serious mail system misconfiguration
somewhere.  Please contact me immediately.)

Debian bug tracking system administrator
(administrator, Debian Bugs database)

--- Begin Message ---
Package: netpbm
Version: 2:10.0-10.1jim
Severity: normal
Tags: patch

xwdtopnm is broken on 64-bit systems because it assumes "long" is 32
bits.  The attached patch replaces

           long -> int32n
  unsigned long -> uint32n

This patch has been tested to work on both 32 and 64 bit systems.

-jim

-- System Information:
Debian Release: testing/unstable
  APT prefers testing
  APT policy: (990, 'testing'), (500, 'unstable')
Architecture: amd64 (x86_64)
Shell:  /bin/sh linked to /bin/bash
Kernel: Linux 2.6.14-2-amd64-k8
Locale: LANG=POSIX, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8)

Versions of packages netpbm depends on:
ii  libc6                     2.3.5-8.1      GNU C Library: Shared libraries an
ii  libjpeg62                 6b-10          The Independent JPEG Group's JPEG 
ii  libnetpbm10               2:10.0-10.1jim Shared libraries for netpbm
ii  libpng12-0                1.2.8rel-5     PNG library - runtime
ii  libtiff4                  3.7.4-1        Tag Image File Format (TIFF) libra
ii  zlib1g                    1:1.2.3-8      compression library - runtime

Versions of packages netpbm recommends:
ii  gs                       8.15-4          Transitional package
ii  gs-esp [gs]              8.15.1.dfsg.1-1 The Ghostscript PostScript interpr
ii  gs-gpl [gs]              8.15-4          The GPL Ghostscript PostScript int

-- no debconf information
diff -ur netpbm-free-10.0.orig/pnm/x11wd.h netpbm-free-10.0/pnm/x11wd.h
--- netpbm-free-10.0.orig/pnm/x11wd.h	2003-08-14 15:38:51.000000000 -0400
+++ netpbm-free-10.0/pnm/x11wd.h	2006-02-10 13:55:13.000000000 -0500
@@ -58,7 +58,7 @@
     } X11WDFileHeader;
 
 typedef struct {
-    unsigned long num;
+    uint32n num;
     unsigned short red, green, blue;
     char flags;         /* do_red, do_green, do_blue */
     char pad;
Only in netpbm-free-10.0/pnm: xwdtopnm
diff -ur netpbm-free-10.0.orig/pnm/xwdtopnm.c netpbm-free-10.0/pnm/xwdtopnm.c
--- netpbm-free-10.0.orig/pnm/xwdtopnm.c	2003-08-14 15:38:51.000000000 -0400
+++ netpbm-free-10.0/pnm/xwdtopnm.c	2006-02-10 14:05:35.000000000 -0500
@@ -52,7 +52,7 @@
            Which of the members applies depends on the bits per item of
            the input image.  
         */
-        long l;    /* 32 bits per item */
+        int32n l;    /* 32 bits per item */
         short s;   /* 16 bits per item */
         char c;    /*  8 bits per item */
     } item;
@@ -65,7 +65,7 @@
       /* This is the number of bits in the current item that have not yet
          been returned as part of a pixel or saved as carryover bits.
          */
-    unsigned long carryover_bits;
+    uint32n carryover_bits;
       /* This is the odd bits left over from one item that need to be
          combined with more bits from the next item to form a pixel
          value (the pixel is split between two items).  An item is a
@@ -79,20 +79,20 @@
 };
 
 static short bs_short ARGS(( short s ));
-static long bs_long ARGS(( long l ));
+static int32n bs_int32 ARGS(( int32n l ));
 
 static int byte_swap;
 
 
 static int
-zero_bits(const unsigned long mask) {
+zero_bits(const uint32n mask) {
 /*----------------------------------------------------------------------------
    Return the number of consective zero bits at the least significant end
    of the binary representation of 'mask'.  E.g. if mask == 0x00fff800,
    we would return 11.
 -----------------------------------------------------------------------------*/
     int i;
-    unsigned long shifted_mask;
+    uint32n shifted_mask;
 
     for (i=0, shifted_mask = mask; 
          i < sizeof(mask)*8 && (shifted_mask & 0x00000001) == 0;
@@ -103,12 +103,12 @@
 
 
 static int
-one_bits(const unsigned long input) {
+one_bits(const uint32n input) {
 /*----------------------------------------------------------------------------
    Return the number of one bits in the binary representation of 'input'.
 -----------------------------------------------------------------------------*/
     int one_bits;
-    unsigned long mask;
+    uint32n mask;
 
     one_bits = 0;   /* initial value */
     for (mask = 0x00000001; mask != 0x00000000; mask <<= 1)
@@ -124,8 +124,8 @@
          int * const padrightP, xelval * const maxvalP, 
          enum visualclass * const visualclassP, int * const formatP, 
          xel ** const colorsP, int * const bits_per_pixelP, 
-         int * const bits_per_itemP, unsigned long * const red_maskP, 
-         unsigned long * const green_maskP, unsigned long * const blue_maskP,
+         int * const bits_per_itemP, uint32n * const red_maskP, 
+         uint32n * const green_maskP, uint32n * const blue_maskP,
          enum byteorder * const byte_orderP,
          enum byteorder * const bit_orderP)
     {
@@ -148,7 +148,7 @@
 	pm_error( "couldn't read XWD file header" );
 
     if ( h10P->file_version == X10WD_FILE_VERSION ||
-	 bs_long( h10P->file_version ) == X10WD_FILE_VERSION )
+	 bs_int32( h10P->file_version ) == X10WD_FILE_VERSION )
 	{
 	int i;
 	X10Color* x10colors;
@@ -156,13 +156,13 @@
 	if ( h10P->file_version != X10WD_FILE_VERSION )
 	    {
 	    byte_swap = 1;
-	    h10P->header_size = bs_long( h10P->header_size );
-	    h10P->file_version = bs_long( h10P->file_version );
-	    h10P->display_type = bs_long( h10P->display_type );
-	    h10P->display_planes = bs_long( h10P->display_planes );
-	    h10P->pixmap_format = bs_long( h10P->pixmap_format );
-	    h10P->pixmap_width = bs_long( h10P->pixmap_width );
-	    h10P->pixmap_height = bs_long( h10P->pixmap_height );
+	    h10P->header_size = bs_int32( h10P->header_size );
+	    h10P->file_version = bs_int32( h10P->file_version );
+	    h10P->display_type = bs_int32( h10P->display_type );
+	    h10P->display_planes = bs_int32( h10P->display_planes );
+	    h10P->pixmap_format = bs_int32( h10P->pixmap_format );
+	    h10P->pixmap_width = bs_int32( h10P->pixmap_width );
+	    h10P->pixmap_height = bs_int32( h10P->pixmap_height );
 	    h10P->window_width = bs_short( h10P->window_width );
 	    h10P->window_height = bs_short( h10P->window_height );
 	    h10P->window_x = bs_short( h10P->window_x );
@@ -268,7 +268,7 @@
 	*bit_orderP = LSBFirst;
 	}
     else if ( h11P->file_version == X11WD_FILE_VERSION ||
-	     bs_long( h11P->file_version ) == X11WD_FILE_VERSION )
+	     bs_int32( h11P->file_version ) == X11WD_FILE_VERSION )
 	{
 	int i;
 	X11XColor* x11colors;
@@ -278,31 +278,31 @@
 	if ( h11P->file_version != X11WD_FILE_VERSION )
 	    {
 	    byte_swap = 1;
-	    h11P->header_size = bs_long( h11P->header_size );
-	    h11P->file_version = bs_long( h11P->file_version );
-	    h11P->pixmap_format = bs_long( h11P->pixmap_format );
-	    h11P->pixmap_depth = bs_long( h11P->pixmap_depth );
-	    h11P->pixmap_width = bs_long( h11P->pixmap_width );
-	    h11P->pixmap_height = bs_long( h11P->pixmap_height );
-	    h11P->xoffset = bs_long( h11P->xoffset );
-	    h11P->byte_order = bs_long( h11P->byte_order );
-	    h11P->bitmap_unit = bs_long( h11P->bitmap_unit );
-	    h11P->bitmap_bit_order = bs_long( h11P->bitmap_bit_order );
-	    h11P->bitmap_pad = bs_long( h11P->bitmap_pad );
-	    h11P->bits_per_pixel = bs_long( h11P->bits_per_pixel );
-	    h11P->bytes_per_line = bs_long( h11P->bytes_per_line );
-	    h11P->visual_class = bs_long( h11P->visual_class );
-	    h11P->red_mask = bs_long( h11P->red_mask );
-	    h11P->green_mask = bs_long( h11P->green_mask );
-	    h11P->blue_mask = bs_long( h11P->blue_mask );
-	    h11P->bits_per_rgb = bs_long( h11P->bits_per_rgb );
-	    h11P->colormap_entries = bs_long( h11P->colormap_entries );
-	    h11P->ncolors = bs_long( h11P->ncolors );
-	    h11P->window_width = bs_long( h11P->window_width );
-	    h11P->window_height = bs_long( h11P->window_height );
-	    h11P->window_x = bs_long( h11P->window_x );
-	    h11P->window_y = bs_long( h11P->window_y );
-	    h11P->window_bdrwidth = bs_long( h11P->window_bdrwidth );
+	    h11P->header_size = bs_int32( h11P->header_size );
+	    h11P->file_version = bs_int32( h11P->file_version );
+	    h11P->pixmap_format = bs_int32( h11P->pixmap_format );
+	    h11P->pixmap_depth = bs_int32( h11P->pixmap_depth );
+	    h11P->pixmap_width = bs_int32( h11P->pixmap_width );
+	    h11P->pixmap_height = bs_int32( h11P->pixmap_height );
+	    h11P->xoffset = bs_int32( h11P->xoffset );
+	    h11P->byte_order = bs_int32( h11P->byte_order );
+	    h11P->bitmap_unit = bs_int32( h11P->bitmap_unit );
+	    h11P->bitmap_bit_order = bs_int32( h11P->bitmap_bit_order );
+	    h11P->bitmap_pad = bs_int32( h11P->bitmap_pad );
+	    h11P->bits_per_pixel = bs_int32( h11P->bits_per_pixel );
+	    h11P->bytes_per_line = bs_int32( h11P->bytes_per_line );
+	    h11P->visual_class = bs_int32( h11P->visual_class );
+	    h11P->red_mask = bs_int32( h11P->red_mask );
+	    h11P->green_mask = bs_int32( h11P->green_mask );
+	    h11P->blue_mask = bs_int32( h11P->blue_mask );
+	    h11P->bits_per_rgb = bs_int32( h11P->bits_per_rgb );
+	    h11P->colormap_entries = bs_int32( h11P->colormap_entries );
+	    h11P->ncolors = bs_int32( h11P->ncolors );
+	    h11P->window_width = bs_int32( h11P->window_width );
+	    h11P->window_height = bs_int32( h11P->window_height );
+	    h11P->window_x = bs_int32( h11P->window_x );
+	    h11P->window_y = bs_int32( h11P->window_y );
+	    h11P->window_bdrwidth = bs_int32( h11P->window_bdrwidth );
 	    }
 	for ( i = 0; i < h11P->header_size - sizeof(*h11P); ++i )
 	    if ( getc( file ) == EOF )
@@ -441,7 +441,7 @@
 
 
 
-static unsigned long
+static uint32n
 getpix(FILE *file, struct row_control * const row_controlP,
        const int bits_per_pixel, const int bits_per_item, 
        const enum byteorder byte_order, const enum byteorder bit_order) {
@@ -479,7 +479,7 @@
    *row_controlP.
 
 -----------------------------------------------------------------------------*/
-    unsigned long pixel;
+    uint32n pixel;
       /* This is the pixel value we ultimately return.  It is a 32 bit
          bitstring, with the pixel value right-justified in it.
          */
@@ -488,6 +488,9 @@
       /* This is the number of bits we need to take from the current
          item to combine with carryover bits to form a pixel.
          */
+
+    long tmplong; /* For pm_read*long */
+
     /*
       if (pixel_count < 4)
       pm_message("getting pixel %d", pixel_count);
@@ -517,18 +520,18 @@
             break;
 
 	    case 32:
-            switch (byte_order) {
-            case MSBFirst:
-                if (pm_readbiglong(file, &row_controlP->item.l) == -1)
-                    pm_error( "error reading image" );
-                break;
-            case LSBFirst:
-                if (pm_readlittlelong(file, &row_controlP->item.l) == -1) 
-                    pm_error( "error reading image");
-                break;
-            }
-            break;
-
+	    switch (byte_order) {
+	    case MSBFirst:
+		if (pm_readbiglong(file, &tmplong) == -1)
+		    pm_error( "error reading image" );
+		break;
+	    case LSBFirst:
+		if (pm_readlittlelong(file, &tmplong) == -1) 
+		    pm_error( "error reading image");
+		break;
+	    }
+	    row_controlP->item.l = tmplong;
+	    break;
 	    default:
             pm_error( "can't happen" );
 	    }
@@ -545,8 +548,8 @@
     bits_to_take = bits_per_pixel - row_controlP->bits_carried_over;
 
     { 
-        unsigned long bits_to_take_mask;
-        static unsigned long bits_taken;
+        uint32n bits_to_take_mask;
+        static uint32n bits_taken;
           /* The bits we took from the current item:  'bits_to_take' bits
              right-justified in a 32 bit bitstring.
           */
@@ -604,7 +607,7 @@
         /* Part, but not all, of the next pixel is in this item. Get it
            into carryover_bits and then mark this item all used up.
            */
-        unsigned long bits_left_mask;
+        uint32n bits_left_mask;
         int bit_shift;
            /* How far to shift item to get the bits that are left
               right-justified 
@@ -711,8 +714,8 @@
             const enum byteorder byte_order, const enum byteorder bit_order,
             const int padright, const int cols, const xelval maxval,
             const int format, 
-            unsigned long red_mask, unsigned long green_mask, 
-            unsigned long blue_mask, const xel* const colors, 
+            uint32n red_mask, uint32n green_mask, 
+            uint32n blue_mask, const xel* const colors, 
             const enum visualclass visualclass
     ) {
 
@@ -741,7 +744,7 @@
         unsigned int col;
 
         for (col = 0; col < cols; ++col) {
-            unsigned long pixel;
+            uint32n pixel;
               /* This is a triplet of indices into the color map, packed
                  into this bit string according to red_mask, etc.
                  */
@@ -779,7 +782,7 @@
         blue_maxval =  blue_mask >> blue_shift;
 
         for ( col = 0, xP = xelrow; col < cols; ++col, ++xP ) {
-            unsigned long pixel;
+            uint32n pixel;
 
             pixel = getpix( ifp, &row_control, 
                             bits_per_pixel, bits_per_item, 
@@ -819,7 +822,7 @@
     int rows, cols, format, padright, row;
     int bits_per_pixel;
     int bits_per_item;
-    unsigned long red_mask, green_mask, blue_mask;
+    uint32n red_mask, green_mask, blue_mask;
     xelval maxval;
     enum visualclass visualclass;
     enum byteorder byte_order, bit_order;
@@ -897,8 +900,8 @@
     return u.s;
     }
 
-static long
-bs_long( long l )
+static int32n
+bs_int32( int32n l )
     {
     union cheat u;
     unsigned char t;

--- End Message ---
--- Begin Message ---
Source: netpbm-free
Source-Version: 2:10.0-11

We believe that the bug you reported is fixed in the latest version of
netpbm-free, which is due to be installed in the Debian FTP archive:

libnetpbm10-dev_10.0-11_amd64.deb
  to pool/main/n/netpbm-free/libnetpbm10-dev_10.0-11_amd64.deb
libnetpbm10_10.0-11_amd64.deb
  to pool/main/n/netpbm-free/libnetpbm10_10.0-11_amd64.deb
libnetpbm9-dev_10.0-11_amd64.deb
  to pool/main/n/netpbm-free/libnetpbm9-dev_10.0-11_amd64.deb
libnetpbm9_10.0-11_amd64.deb
  to pool/main/n/netpbm-free/libnetpbm9_10.0-11_amd64.deb
netpbm-free_10.0-11.diff.gz
  to pool/main/n/netpbm-free/netpbm-free_10.0-11.diff.gz
netpbm-free_10.0-11.dsc
  to pool/main/n/netpbm-free/netpbm-free_10.0-11.dsc
netpbm_10.0-11_amd64.deb
  to pool/main/n/netpbm-free/netpbm_10.0-11_amd64.deb



A summary of the changes between this version and the previous one is
attached.

Thank you for reporting the bug, which will now be closed.  If you
have further comments please address them to [EMAIL PROTECTED],
and the maintainer will reopen the bug report if appropriate.

Debian distribution maintenance software
pp.
Andreas Barth <[EMAIL PROTECTED]> (supplier of updated netpbm-free package)

(This message was generated automatically at their request; if you
believe that there is a problem with it please contact the archive
administrators by mailing [EMAIL PROTECTED])


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Format: 1.7
Date: Sat, 20 Jan 2007 08:15:53 +0000
Source: netpbm-free
Binary: libnetpbm10-dev netpbm libnetpbm9 libnetpbm9-dev libnetpbm10
Architecture: source amd64
Version: 2:10.0-11
Distribution: unstable
Urgency: high
Maintainer: Andreas Barth <[EMAIL PROTECTED]>
Changed-By: Andreas Barth <[EMAIL PROTECTED]>
Description: 
 libnetpbm10 - Shared libraries for netpbm
 libnetpbm10-dev - Development libraries and header files
 libnetpbm9 - Shared libraries for netpbm
 libnetpbm9-dev - Development libraries and header files
 netpbm     - Graphics conversion tools
Closes: 352261 362983 407605
Changes: 
 netpbm-free (2:10.0-11) unstable; urgency=high
 .
   * Fix heap corruption in pnmtopng (no CVE yet),
     thanks to Christoph Biedl for detection and the patch.
     Closes: #407605
   * Fix xwdtopnm on 64-bit systems. Thanks to Jim Paris for
     detection and the patch. Closes: #352261
   * Use current location of rgb.txt. Thanks to Roland Stigge.
     Closes: #362983
Files: 
 d2b17584551d47f127eee81ff278820c 739 graphics optional netpbm-free_10.0-11.dsc
 d11adf49e734b06c066464d082c1ba74 49941 graphics optional 
netpbm-free_10.0-11.diff.gz
 7263014de730d451554209488769c8d4 1246262 graphics optional 
netpbm_10.0-11_amd64.deb
 59b3212c3a55fe88cbc7d29d6f14b555 67308 libs optional 
libnetpbm10_10.0-11_amd64.deb
 76bc8e6454de25c57d0d516145d78cb4 117164 libdevel optional 
libnetpbm10-dev_10.0-11_amd64.deb
 20b6093eac0dae1063b778ae9f0d739b 75620 libs optional 
libnetpbm9_10.0-11_amd64.deb
 97d5f53c467028d470bf83e2a93b3450 117612 libdevel optional 
libnetpbm9-dev_10.0-11_amd64.deb

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.1 (GNU/Linux)

iD8DBQFFsdKHmdOZoew2oYURAjiGAJwMpLiKOFCQfFjA7WsVLbcIww8hCQCfd+f1
AiUkCQBEXZv/JwrY6SY32wM=
=IGS6
-----END PGP SIGNATURE-----


--- End Message ---

Reply via email to