[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#174282: xlibs: Xpm needs LONG64 on Alpha



Package: xlibs
Version: 4.2.1-3
Severity: normal

Nighthawk 1.0-14 dies with SIGSEGV on Alpha before it displays
anything.  With GDB and mcheck_pedantic(), I traced the problem
to heap corruption in the Xpm library.  xpmParseDataAndCreate (in
xc/extras/Xpm/lib/create.c) sets ximage->f.put_pixel=PutPixel32,
but the PutPixel32 function assumes that unsigned long is 32-bit,
although it's actually 64-bit on the Alpha.  XPutPixel will then
write past the end of the pixel and often also past the end of a
malloced block.

The Xpm library already tries to support 64-bit processors: if
the WORD64 or LONG64 macro is defined, it disables PutPixel32 and
always uses the more portable functions PitPixel32MSB or
PutPixel32LSB instead.  However, it seems the library was
compiled without these macros.

I guess that WORD64 means int is 64-bit and LONG64 means long is
64-bit; then LONG64 would be appropriate for Debian on the Alpha.

What would be a good place to define the macro?  <X11/Xmd.h>
already conditionally defines it; should the Xpm sources then
include this header?

-- System Information
Debian Release: testing/unstable
Architecture: alpha
Kernel: Linux Saastamoduuli 2.2.22 #1 Sat Oct 26 18:09:21 EST 2002 alpha
Locale: LANG=fi_FI@euro, LC_CTYPE=fi_FI@euro

Versions of packages xlibs depends on:
ii  libc6.1                       2.2.5-14.3 GNU C Library: Shared libraries an
ii  libfreetype6                  2.1.2-9    FreeType 2 font engine, shared lib
ii  xfree86-common                4.2.1-3    X Window System (XFree86) infrastr




Reply to: