sync code with last improvements from OpenBSD
This commit is contained in:
parent
e1ec829e63
commit
68fa196282
30 changed files with 268 additions and 1060 deletions
2
.gitignore
vendored
2
.gitignore
vendored
|
@ -1,3 +1 @@
|
||||||
**/obj
|
**/obj
|
||||||
**/tags
|
|
||||||
**/CVS
|
|
||||||
|
|
12
3RDPARTY
12
3RDPARTY
|
@ -1,5 +1,5 @@
|
||||||
|
|
||||||
# $OpenBSD: 3RDPARTY,v 1.416 2023/07/03 19:04:51 matthieu Exp $
|
# $OpenBSD: 3RDPARTY,v 1.417 2023/10/12 19:30:50 matthieu Exp $
|
||||||
#
|
#
|
||||||
Package: Freetype
|
Package: Freetype
|
||||||
Version: 2.13.0
|
Version: 2.13.0
|
||||||
|
@ -9,25 +9,25 @@ Archive Site: http://download.savannah.gnu.org/releases/freetype/
|
||||||
|
|
||||||
Package: xterm
|
Package: xterm
|
||||||
Version: 378
|
Version: 378
|
||||||
Current Vers: 383
|
Current Vers: 385
|
||||||
Maintainer: Thomas E. Dickey
|
Maintainer: Thomas E. Dickey
|
||||||
Archive Site: http://invisible-island.net/xterm/xterm.html
|
Archive Site: https://invisible-island.net/xterm/xterm.html
|
||||||
|
|
||||||
Package: Mesa
|
Package: Mesa
|
||||||
Version 22.3.7
|
Version 22.3.7
|
||||||
Current Vers: 23.1.2
|
Current Vers: 23.1.7
|
||||||
Maintainer: Brian Paul
|
Maintainer: Brian Paul
|
||||||
Archive Site: https://archive.mesa3d.org/
|
Archive Site: https://archive.mesa3d.org/
|
||||||
|
|
||||||
Package: libdrm
|
Package: libdrm
|
||||||
Version: 2.4.115
|
Version: 2.4.115
|
||||||
Current Vers: 2.4.115
|
Current Vers: 2.4.116
|
||||||
Maintainer: Freedesktop.org
|
Maintainer: Freedesktop.org
|
||||||
Archive Site: https://dri.freedesktop.org/libdrm/
|
Archive Site: https://dri.freedesktop.org/libdrm/
|
||||||
|
|
||||||
Package: libGLU
|
Package: libGLU
|
||||||
Version: 9.0.1
|
Version: 9.0.1
|
||||||
Current Vers: 9.0.2
|
Current Vers: 9.0.3
|
||||||
Maintainer: Matt Turner
|
Maintainer: Matt Turner
|
||||||
Archive Site: https://archive.mesa3d.org/glu/
|
Archive Site: https://archive.mesa3d.org/glu/
|
||||||
|
|
||||||
|
|
22
MODULES
22
MODULES
|
@ -1,4 +1,4 @@
|
||||||
# $OpenBSD: MODULES,v 1.510 2023/07/03 19:04:51 matthieu Exp $
|
# $OpenBSD: MODULES,v 1.511 2023/10/12 19:30:50 matthieu Exp $
|
||||||
#
|
#
|
||||||
# X.Org maintained modules
|
# X.Org maintained modules
|
||||||
#
|
#
|
||||||
|
@ -8,7 +8,7 @@ app/bdftopcf 1.1.1
|
||||||
app/beforelight 1.0.6
|
app/beforelight 1.0.6
|
||||||
app/bitmap 1.1.0
|
app/bitmap 1.1.0
|
||||||
app/editres 1.0.8
|
app/editres 1.0.8
|
||||||
app/fonttosfnt 1.2.2
|
app/fonttosfnt 1.2.3 needs-update
|
||||||
app/iceauth 1.0.9
|
app/iceauth 1.0.9
|
||||||
app/ico 1.0.6
|
app/ico 1.0.6
|
||||||
app/listres 1.0.5
|
app/listres 1.0.5
|
||||||
|
@ -36,7 +36,7 @@ app/xdpyinfo 1.3.4
|
||||||
app/xdriinfo 1.0.7
|
app/xdriinfo 1.0.7
|
||||||
app/xedit 1.2.3
|
app/xedit 1.2.3
|
||||||
app/xev 1.2.5
|
app/xev 1.2.5
|
||||||
app/xeyes 1.2.0
|
app/xeyes 1.3.0 needs-update
|
||||||
app/xf86dga 1.0.3
|
app/xf86dga 1.0.3
|
||||||
app/xfd 1.1.4
|
app/xfd 1.1.4
|
||||||
app/xfontsel 1.1.0
|
app/xfontsel 1.1.0
|
||||||
|
@ -103,7 +103,7 @@ driver/xf86-video-nv 2.1.22
|
||||||
driver/xf86-video-openchrome 0.6.179 needs-update
|
driver/xf86-video-openchrome 0.6.179 needs-update
|
||||||
driver/xf86-video-r128 6.12.1
|
driver/xf86-video-r128 6.12.1
|
||||||
driver/xf86-video-savage 2.4.0 needs-update
|
driver/xf86-video-savage 2.4.0 needs-update
|
||||||
driver/xf86-video-siliconmotion 1.7.9
|
driver/xf86-video-siliconmotion 1.7.10 needs-update
|
||||||
driver/xf86-video-sunffb 1.2.3
|
driver/xf86-video-sunffb 1.2.3
|
||||||
driver/xf86-video-vesa 2.6.0 needs-update
|
driver/xf86-video-vesa 2.6.0 needs-update
|
||||||
driver/xf86-video-vmware 13.4.0 needs-update
|
driver/xf86-video-vmware 13.4.0 needs-update
|
||||||
|
@ -143,13 +143,13 @@ font/schumacher-misc 1.1.3
|
||||||
font/screen-cyrillic 1.0.5
|
font/screen-cyrillic 1.0.5
|
||||||
font/sony-misc 1.0.4
|
font/sony-misc 1.0.4
|
||||||
font/sun-misc 1.0.4
|
font/sun-misc 1.0.4
|
||||||
font/util 1.4.0
|
font/util 1.4.1 needs-update
|
||||||
font/winitzki-cyrillic 1.0.4
|
font/winitzki-cyrillic 1.0.4
|
||||||
font/xfree86-type1 1.0.5
|
font/xfree86-type1 1.0.5
|
||||||
|
|
||||||
lib/libICE 1.1.1
|
lib/libICE 1.1.1
|
||||||
lib/libSM 1.2.4
|
lib/libSM 1.2.4
|
||||||
lib/libX11 1.8.6 needs-update
|
lib/libX11 1.8.7 needs-update
|
||||||
lib/libXScrnSaver 1.2.4
|
lib/libXScrnSaver 1.2.4
|
||||||
lib/libXau 1.0.11
|
lib/libXau 1.0.11
|
||||||
lib/libXaw 1.0.15
|
lib/libXaw 1.0.15
|
||||||
|
@ -164,9 +164,9 @@ lib/libXft 2.3.8
|
||||||
lib/libXi 1.8.1
|
lib/libXi 1.8.1
|
||||||
lib/libXinerama 1.1.5
|
lib/libXinerama 1.1.5
|
||||||
lib/libXmu 1.1.4
|
lib/libXmu 1.1.4
|
||||||
lib/libXpm 3.5.16
|
lib/libXpm 3.5.17 needs-update
|
||||||
lib/libXpresent 1.0.1
|
lib/libXpresent 1.0.1
|
||||||
lib/libXrandr 1.5.3
|
lib/libXrandr 1.5.4 needs-update
|
||||||
lib/libXrender 0.9.11
|
lib/libXrender 0.9.11
|
||||||
lib/libXres 1.2.2
|
lib/libXres 1.2.2
|
||||||
lib/libXt 1.3.0
|
lib/libXt 1.3.0
|
||||||
|
@ -177,7 +177,7 @@ lib/libXxf86dga 1.1.6
|
||||||
lib/libXxf86vm 1.1.5
|
lib/libXxf86vm 1.1.5
|
||||||
lib/libfontenc 1.1.7
|
lib/libfontenc 1.1.7
|
||||||
lib/libpciaccess 0.17
|
lib/libpciaccess 0.17
|
||||||
lib/libxcb 1.15
|
lib/libxcb 1.16 needs-update
|
||||||
lib/libxcvt 0.1.2
|
lib/libxcvt 0.1.2
|
||||||
lib/libxkbfile 1.1.2
|
lib/libxkbfile 1.1.2
|
||||||
lib/libxshmfence 1.3.2
|
lib/libxshmfence 1.3.2
|
||||||
|
@ -190,8 +190,8 @@ lib/xcb-util-keysyms 0.4.1
|
||||||
lib/xcb-util-renderutil 0.3.10
|
lib/xcb-util-renderutil 0.3.10
|
||||||
lib/xcb-util-wm 0.4.2
|
lib/xcb-util-wm 0.4.2
|
||||||
|
|
||||||
proto/xcb-proto 1.15.2
|
proto/xcb-proto 1.16.0 needs-update
|
||||||
proto/xorgproto 2023.1 needs-update
|
proto/xorgproto 2023.2 needs-update
|
||||||
|
|
||||||
util/cf 1.0.4
|
util/cf 1.0.4
|
||||||
util/gccmakedep 1.0.3
|
util/gccmakedep 1.0.3
|
||||||
|
|
|
@ -225,10 +225,10 @@
|
||||||
./usr/X11R6/lib/libXau.la
|
./usr/X11R6/lib/libXau.la
|
||||||
./usr/X11R6/lib/libXau.so.10.0
|
./usr/X11R6/lib/libXau.so.10.0
|
||||||
./usr/X11R6/lib/libXaw.a
|
./usr/X11R6/lib/libXaw.a
|
||||||
./usr/X11R6/lib/libXaw.so.15.0
|
./usr/X11R6/lib/libXaw.so.16.0
|
||||||
./usr/X11R6/lib/libXaw7.a
|
./usr/X11R6/lib/libXaw7.a
|
||||||
./usr/X11R6/lib/libXaw7.la
|
./usr/X11R6/lib/libXaw7.la
|
||||||
./usr/X11R6/lib/libXaw7.so.15.0
|
./usr/X11R6/lib/libXaw7.so.16.0
|
||||||
./usr/X11R6/lib/libXcomposite.a
|
./usr/X11R6/lib/libXcomposite.a
|
||||||
./usr/X11R6/lib/libXcomposite.la
|
./usr/X11R6/lib/libXcomposite.la
|
||||||
./usr/X11R6/lib/libXcomposite.so.4.0
|
./usr/X11R6/lib/libXcomposite.so.4.0
|
||||||
|
@ -267,7 +267,7 @@
|
||||||
./usr/X11R6/lib/libXmuu.so.6.0
|
./usr/X11R6/lib/libXmuu.so.6.0
|
||||||
./usr/X11R6/lib/libXpm.a
|
./usr/X11R6/lib/libXpm.a
|
||||||
./usr/X11R6/lib/libXpm.la
|
./usr/X11R6/lib/libXpm.la
|
||||||
./usr/X11R6/lib/libXpm.so.9.0
|
./usr/X11R6/lib/libXpm.so.10.0
|
||||||
./usr/X11R6/lib/libXpresent.a
|
./usr/X11R6/lib/libXpresent.a
|
||||||
./usr/X11R6/lib/libXpresent.la
|
./usr/X11R6/lib/libXpresent.la
|
||||||
./usr/X11R6/lib/libXpresent.so.1.0
|
./usr/X11R6/lib/libXpresent.so.1.0
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
# $OpenBSD: Makefile.bsd-wrapper,v 1.13 2016/10/02 19:11:16 matthieu Exp $
|
# $OpenBSD: Makefile.bsd-wrapper,v 1.14 2023/10/17 13:08:08 matthieu Exp $
|
||||||
|
|
||||||
SHARED_LIBS= Xaw7 15.0
|
SHARED_LIBS= Xaw7 16.0
|
||||||
|
|
||||||
CONFIGURE_ARGS= --disable-xaw6 --without-fop --without-xmlto
|
CONFIGURE_ARGS= --disable-xaw6 --without-fop --without-xmlto
|
||||||
|
|
||||||
|
@ -9,10 +9,10 @@ afterinstall:
|
||||||
(cd $(DESTDIR)$(LIBDIR) && ln -s libXaw7.a libXaw.a && \
|
(cd $(DESTDIR)$(LIBDIR) && ln -s libXaw7.a libXaw.a && \
|
||||||
chown -h $(BINOWN):$(BINGRP) libXaw.a )
|
chown -h $(BINOWN):$(BINGRP) libXaw.a )
|
||||||
# redo link
|
# redo link
|
||||||
-rm -f $(DESTDIR)$(LIBDIR)/libXaw.so.15.0
|
-rm -f $(DESTDIR)$(LIBDIR)/libXaw.so.16.0
|
||||||
-rm -f $(DESTDIR)$(LIBDIR)/libXaw.so.7
|
-rm -f $(DESTDIR)$(LIBDIR)/libXaw.so.7
|
||||||
(cd $(DESTDIR)$(LIBDIR) && ln -s libXaw7.so.15.0 libXaw.so.15.0 && \
|
(cd $(DESTDIR)$(LIBDIR) && ln -s libXaw7.so.16.0 libXaw.so.16.0 && \
|
||||||
chown -h $(BINOWN):$(BINGRP) libXaw.so.15.0)
|
chown -h $(BINOWN):$(BINGRP) libXaw.so.16.0)
|
||||||
|
|
||||||
.include <bsd.xorg.mk>
|
.include <bsd.xorg.mk>
|
||||||
.include <bsd.own.mk>
|
.include <bsd.own.mk>
|
||||||
|
|
|
@ -1,957 +0,0 @@
|
||||||
/*
|
|
||||||
* Copyright (C) 1989-95 GROUPE BULL
|
|
||||||
*
|
|
||||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
||||||
* of this software and associated documentation files (the "Software"), to
|
|
||||||
* deal in the Software without restriction, including without limitation the
|
|
||||||
* rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
|
||||||
* sell copies of the Software, and to permit persons to whom the Software is
|
|
||||||
* furnished to do so, subject to the following conditions:
|
|
||||||
*
|
|
||||||
* The above copyright notice and this permission notice shall be included in
|
|
||||||
* all copies or substantial portions of the Software.
|
|
||||||
*
|
|
||||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
||||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
|
||||||
* GROUPE BULL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
|
|
||||||
* AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
|
||||||
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
||||||
*
|
|
||||||
* Except as contained in this notice, the name of GROUPE BULL shall not be
|
|
||||||
* used in advertising or otherwise to promote the sale, use or other dealings
|
|
||||||
* in this Software without prior written authorization from GROUPE BULL.
|
|
||||||
*/
|
|
||||||
|
|
||||||
/**************************************************************************\
|
|
||||||
* *
|
|
||||||
* HISTORY of user-visible changes *
|
|
||||||
* *
|
|
||||||
\**************************************************************************/
|
|
||||||
|
|
||||||
3.4k (98/03/18)
|
|
||||||
|
|
||||||
ENHANCEMENTS:
|
|
||||||
- A new program called cxpm is provided to check on XPM files and help
|
|
||||||
figuring out where the file might be invalid.
|
|
||||||
- The FAQ and README are now in HTML.
|
|
||||||
|
|
||||||
BUGS CORRECTED:
|
|
||||||
- A bug in writing pixmaps out on an 32 bit depth visual and MSBFirst
|
|
||||||
machine.
|
|
||||||
- patch from Uwe Langenkamp <Uwe.Langenkamp@t-online.de>
|
|
||||||
- A severe bug in parsing the pixels section when an unknown character
|
|
||||||
is encountered.
|
|
||||||
|
|
||||||
3.4j (96/12/31)
|
|
||||||
|
|
||||||
ENHANCEMENTS:
|
|
||||||
- The XPM library can now be built under Amiga DOS. This entirely comes
|
|
||||||
from: Lorens Younes <d93-hyo@nada.kth.se>
|
|
||||||
See the README.AMIGA file for details.
|
|
||||||
- Changes for MSW: big performance improvement in ParseAndPutPixels(),
|
|
||||||
fixed creation of the mask in SetColor()
|
|
||||||
- patch from Jan Wielemaker <jan@swi.psy.uva.nl>
|
|
||||||
- makefiles are provided for VMS
|
|
||||||
- given by Martin P.J. Zinser m.zinser@gsi.de
|
|
||||||
- Imakefiles reworked to get smoother builds and fixes from:
|
|
||||||
- Paul DuBois dubois@primate.wisc.edu
|
|
||||||
- Larry Schwimmer schwim@cyclone.stanford.edu
|
|
||||||
- thanks to some code rearrangement the library is smaller (the size
|
|
||||||
reduction goes from 4 to 7% depending on the system)
|
|
||||||
|
|
||||||
BUGS CORRECTED:
|
|
||||||
- A severe bug (introduced in 3.4i as part of the sprintf
|
|
||||||
optimization) in code writing XPM extensions to a buffer
|
|
||||||
XpmCreateBufferFromImage/Pixmap.
|
|
||||||
- The XpmAttributes definition in xpm.h was declaring nalloc_colors to
|
|
||||||
be Bool, it's an int.
|
|
||||||
|
|
||||||
3.4i (96/09/13)
|
|
||||||
|
|
||||||
NEW FEATURES:
|
|
||||||
- The XPM library now allows the application to pass its own color
|
|
||||||
allocation/free functions. For this matter the following was done:
|
|
||||||
The XpmAttributes structure has three new fields alloc_color,
|
|
||||||
free_color, and color_closure. The following new valuemasks were
|
|
||||||
added XpmAllocColorFunc, XpmFreeColorsFunc, XpmColorClosure. And
|
|
||||||
two new types were defined XpmAllocColorFunc and XpmFreeColorsFunc.
|
|
||||||
See documentation for details.
|
|
||||||
|
|
||||||
ENHANCEMENTS:
|
|
||||||
- Windows NT support. It should compile and run fine based on the X
|
|
||||||
Consortium X11R6 distribution.
|
|
||||||
- The README file contains information to compile on Solaris with gcc.
|
|
||||||
- Part of the code has been optimized by using the value returned by
|
|
||||||
sprintf instead of calling strlen. Add the flag -DVOID_SPRINTF
|
|
||||||
if on your system sprintf returns void.
|
|
||||||
- patch from Thomas Ott thommy@rz.fh-augsburg.de
|
|
||||||
|
|
||||||
BUGS CORRECTED:
|
|
||||||
- XpmFree is now a real function (simply calling free by default).
|
|
||||||
|
|
||||||
CHANGES TO THE DOC:
|
|
||||||
- The documentation describes the new XpmAttributes fields and their
|
|
||||||
use.
|
|
||||||
|
|
||||||
3.4h (96/02/01)
|
|
||||||
|
|
||||||
NEW FEATURES:
|
|
||||||
- The XpmAttributes has a new member called 'alloc_close_colors' which
|
|
||||||
lets the caller specify whether close colors should be allocated
|
|
||||||
using XAllocColor or not. This is especially useful when one uses a
|
|
||||||
private colormap full of read/write cells.
|
|
||||||
The xpm.h header file define a new bitmap flag called
|
|
||||||
XpmAllocCloseColors to use along with this new slot.
|
|
||||||
- Dale Pease peased@bigbird.cso.gtegsc.com
|
|
||||||
- The XpmAttributes has a new member called 'bitmap_format' which lets
|
|
||||||
the caller specify the format of 1 bit depth images (XYBitmap or
|
|
||||||
ZPixmap). The xpm.h header file define a new bitmap flag called
|
|
||||||
XpmBitmapFormat to use along with this new field.
|
|
||||||
|
|
||||||
ENHANCEMENTS:
|
|
||||||
- XpmReadFileTo[Image/Pixmap], XpmCreate[Image/Pixmap]FromData,
|
|
||||||
XpmCreateImageFromDataFromBuffer functions do no longer use a
|
|
||||||
temporary XpmImage object, which reduces a lot the amount of memory
|
|
||||||
used. On the other hand it can take a little more time, but given the
|
|
||||||
following figures (based on sxpm) it is a real good trade-off.
|
|
||||||
|
|
||||||
Reading a 22x22 pixmap with 5 colors no time change is detected
|
|
||||||
using time:
|
|
||||||
real 0.3
|
|
||||||
user 0.1
|
|
||||||
sys 0.1
|
|
||||||
|
|
||||||
Reading a 1279x1023 pixmap with 14 colors (quite extreme case for
|
|
||||||
XPM!) the time goes from:
|
|
||||||
real 1.9
|
|
||||||
user 0.8
|
|
||||||
sys 0.8
|
|
||||||
|
|
||||||
to:
|
|
||||||
real 2.2
|
|
||||||
user 1.8
|
|
||||||
sys 0.3
|
|
||||||
|
|
||||||
Reading the 22x22 pixmap with 5 colors the memory usage (under
|
|
||||||
purify) goes from:
|
|
||||||
255256 code
|
|
||||||
55496 data/bss
|
|
||||||
163848 heap (peak use)
|
|
||||||
4248 stack
|
|
||||||
to:
|
|
||||||
271240 code
|
|
||||||
55472 data/bss
|
|
||||||
159752 heap (peak use)
|
|
||||||
4224 stack
|
|
||||||
|
|
||||||
And reading the 1279x1023 pixmap with 14 colors it goes from:
|
|
||||||
255256 code
|
|
||||||
55496 data/bss
|
|
||||||
6705160 heap (peak use)
|
|
||||||
4280 stack
|
|
||||||
to:
|
|
||||||
271240 code
|
|
||||||
55472 data/bss
|
|
||||||
1732616 heap (peak use)
|
|
||||||
4264 stack
|
|
||||||
|
|
||||||
This clearly shows that while for small pixmaps there is no real
|
|
||||||
difference on both sides, for large pixmaps this makes a huge
|
|
||||||
difference about the amount of memory used and it is not much
|
|
||||||
slower.
|
|
||||||
|
|
||||||
Note that you can still get the old behavior using both
|
|
||||||
XpmReadFileToXpmImage and XpmCreate[Image/Pixmap]FromXpmImage instead
|
|
||||||
of XpmReadFileTo[Image/Pixmap]. Once more XPM gives you the choice!
|
|
||||||
|
|
||||||
BUGS CORRECTED:
|
|
||||||
- when defined locally the global symbols strcasecmp and strdup are
|
|
||||||
now called xpmstrcasecmp and xpmstrdup to avoid any possible
|
|
||||||
conflict.
|
|
||||||
- VMS has a bogus file system which requires a work around in
|
|
||||||
XpmReadFileToBuffer.
|
|
||||||
- patch from Bob.Deen@jpl.nasa.gov
|
|
||||||
- the type of the exactColors attribute has been changed from unsigned
|
|
||||||
int to Bool.
|
|
||||||
|
|
||||||
CHANGES TO THE DOC:
|
|
||||||
- the documentation describes the new XpmAttributes fields
|
|
||||||
alloc_close_colors and bitmap_format.
|
|
||||||
|
|
||||||
3.4g (95/10/08)
|
|
||||||
|
|
||||||
ENHANCEMENTS:
|
|
||||||
- The XpmAttributes structure has now two new slots: alloc_pixels and
|
|
||||||
nalloc_pixels in order to provide an easy way to free allocated
|
|
||||||
colors. The new bitmask XpmReturnAllocPixels should be used to
|
|
||||||
request this data through the valuemask. Unless you really know why,
|
|
||||||
you should use this instead of XpmReturnPixels, pixels, and npixels.
|
|
||||||
- the XPM1 format parsing has been improved.
|
|
||||||
- patch from Chuck Thompson <cthomp@cs.uiuc.edu>
|
|
||||||
- compilers defining _STDC_ to something different from 1 are now
|
|
||||||
considered as ANSI compilers.
|
|
||||||
- the README file provides now more info on how to build XPM depending
|
|
||||||
on the system.
|
|
||||||
|
|
||||||
BUGS CORRECTED:
|
|
||||||
- a bug introduced in 3.4f in the XPM1 format parsing function.
|
|
||||||
- fix from Chuck Thompson <cthomp@cs.uiuc.edu>
|
|
||||||
- the hashtable was not free when the color parsing failed.
|
|
||||||
- patch from ackley@cs.unm.edu (David Ackley)
|
|
||||||
- the close color mechanism wasn't used if one of the closeness
|
|
||||||
parameter was null. Now only one needs to be different from 0.
|
|
||||||
Lorens Younes d93-hyo@nada.kth.se
|
|
||||||
- parsing of long comments failed with a segmentation fault.
|
|
||||||
|
|
||||||
CHANGES TO THE DOC:
|
|
||||||
- the documentation describes the new XpmAttributes fields
|
|
||||||
alloc_pixels and nalloc_pixels and how they are used.
|
|
||||||
|
|
||||||
3.4f (95/05/29)
|
|
||||||
|
|
||||||
ENHANCEMENTS:
|
|
||||||
- Defines IMAKE_DEFINES in the top Imakefile so one can easily avoid
|
|
||||||
building the shared library.
|
|
||||||
- Add some information about the installation process in the README.
|
|
||||||
- filenames are surrounded with quotes when calling gzip or compress in
|
|
||||||
order to allow spaces within filenames.
|
|
||||||
- William Parn <parn@fgm.com>
|
|
||||||
- the compilation and the shared library building should be smoother
|
|
||||||
on Alpha OSF/1.
|
|
||||||
- patch from Dale Moore <Dale.Moore@CS.cmu.edu>
|
|
||||||
|
|
||||||
BUGS CORRECTED:
|
|
||||||
- a segmentation fault occurring in some weird case.
|
|
||||||
|
|
||||||
3.4e (95/03/01)
|
|
||||||
|
|
||||||
ENHANCEMENTS:
|
|
||||||
- The top Imakefile passes CDEBUGFLAGS and DEFINES to subdirs. Thus
|
|
||||||
only this Imakefile should need to be edited by users.
|
|
||||||
- FAQ includes the answer to the question "How can I get a non
|
|
||||||
rectangular icon using XPM ?"
|
|
||||||
- VMS support updated
|
|
||||||
- patch from Martin P.J. Zinser m.zinser@gsi.de
|
|
||||||
|
|
||||||
BUGS CORRECTED:
|
|
||||||
- XpmCreateImageFromXpmImage() called from XpmReadFileToPixmap() could
|
|
||||||
lead to a segmentation fault since free was called on a memory block
|
|
||||||
size variable instead of the block itself. Note: this bug has been
|
|
||||||
introduced in 3.4d.
|
|
||||||
|
|
||||||
3.4d (95/01/31)
|
|
||||||
|
|
||||||
ENHANCEMENTS:
|
|
||||||
- sxpm now supports a -version option command.
|
|
||||||
|
|
||||||
BUGS CORRECTED:
|
|
||||||
- the list of pixels returned in XpmAttributes was wrong when two
|
|
||||||
colors were defined as None in the read XPM
|
|
||||||
- Lionel.Mallet@sophia.inria.fr
|
|
||||||
- the parser was skipping whitespace reading extensions strings. This
|
|
||||||
has been fixed so extensions lines are now returned exactly as they
|
|
||||||
are.
|
|
||||||
- some compilation control added for the dec alpha with X11R5 (LONG64)
|
|
||||||
- patch from Fredrik Lundh <Fredrik_Lundh@ivab.se>
|
|
||||||
- when writing an XPM file, '-' characters are replaced with '_'
|
|
||||||
characters in the array name, in order to get a valid C syntax name.
|
|
||||||
- XYPixmap format images were not correctly handled.
|
|
||||||
- XPM1 file with names using multiple '_' characters are now handled
|
|
||||||
correctly.
|
|
||||||
- todd@erda.rl.af.mil (Todd Gleason)
|
|
||||||
|
|
||||||
3.4c (94/06/06)
|
|
||||||
|
|
||||||
Yes, this is kind of quick. But this is because no code has been modified,
|
|
||||||
this is just a new packaging to make the whole stuff more suitable to the
|
|
||||||
X development team's requests for inclusion in the R6 contrib.
|
|
||||||
|
|
||||||
ENHANCEMENTS:
|
|
||||||
- Several filenames were too long to fit without any conflict on DOS
|
|
||||||
and CD-ROM filesystems. They have been renamed.
|
|
||||||
- Imakefiles use XCOMM for comments instead of the # character.
|
|
||||||
- the Postscript documentation file doc/xpm.ps is now distributed as
|
|
||||||
doc/xpm.PS.gz and allows browsing with tools such as ghostview.
|
|
||||||
- Besides, parts of lib/misc.c have been moved to several new files,
|
|
||||||
and some functions of data.c have been moved to other files in
|
|
||||||
order to get a better link profile.
|
|
||||||
- I've also added a FAQ hoping this will prevent people from
|
|
||||||
continuously filling my mailbox with the same questions.
|
|
||||||
- sxpm.c includes <X11/xpm.h> instead of "xpm.h" and BUILDINCTOP is
|
|
||||||
used in Makefiles as expected.
|
|
||||||
- Everything can be done simply using "xmkmf -a" and "make".
|
|
||||||
|
|
||||||
3.4b (94/05/24)
|
|
||||||
|
|
||||||
ENHANCEMENTS:
|
|
||||||
- XPM can now be built under MS Windows. Yes, this is possible and this
|
|
||||||
entirely comes from:
|
|
||||||
- Hermann Dunkel <hedu@cul-ipn.uni-kiel.de>
|
|
||||||
See the README.MSW file for details.
|
|
||||||
|
|
||||||
- building the shared library now depends on the SharedLibXpm variable
|
|
||||||
and no longer on the SharedLibX variable which is private to the X
|
|
||||||
Window System project.
|
|
||||||
- patch from Stephen Gildea <gildea@x.org>
|
|
||||||
Other variables can now be set for the various locations needed.
|
|
||||||
|
|
||||||
- lib/parse.c does no longer use a 256x256 array in the stack but
|
|
||||||
malloc it instead.
|
|
||||||
|
|
||||||
- The Copyright notice which has been re-written from the X11R6's one
|
|
||||||
should be clearer and is now present in every file.
|
|
||||||
|
|
||||||
BUGS CORRECTED:
|
|
||||||
- lib/xpmP.h does no longer define a Boolean type which conflicts with
|
|
||||||
the Intrinsic definition. Instead the type Bool defined in Xlib is
|
|
||||||
used.
|
|
||||||
- neumann@watson.ibm.com (Gustaf Neumann)
|
|
||||||
|
|
||||||
3.4a (94/03/29)
|
|
||||||
|
|
||||||
BUGS CORRECTED:
|
|
||||||
- passing NULL as shapemask_return to XpmReadFileToPixmap and similar
|
|
||||||
functions was leading to a bus error.
|
|
||||||
- Dean Luick <dean@falcon.natinst.com>
|
|
||||||
|
|
||||||
3.4 (94/03/14)
|
|
||||||
|
|
||||||
IMPORTANT NOTE:
|
|
||||||
This version is not compatible with 3.3. Fortunately most people should
|
|
||||||
only need to recompile.
|
|
||||||
I apology for this but CDE/Motif have put heavy pressure to go that
|
|
||||||
way. The point is that I designed and released Xpm 3.3 in order to let
|
|
||||||
OSF include a clean version of Xpm in Motif 2.0. This new version was
|
|
||||||
not fully compatible with 3.2 but I thought it didn't matter since this
|
|
||||||
was going to be the first version used within Motif. Unfortunately CDE
|
|
||||||
was already using xpm-3.2 internally and requires both source and
|
|
||||||
binary backward compatibility. By the way I must say they didn't drop
|
|
||||||
us a single line to let us know they were using it and thus were
|
|
||||||
expecting stability. All this could have been avoided...
|
|
||||||
|
|
||||||
However, since I had to go for a not compatible version I took this as
|
|
||||||
an opportunity to modify the lower level API, which was new in 3.3 and
|
|
||||||
which was somewhat clumsy, in order to provide yet a better API.
|
|
||||||
|
|
||||||
The library has been modified to have both source and binary backward
|
|
||||||
compatibility with xpm-3.2. This implies it is not either source or
|
|
||||||
binary compatible with 3.3. The fields related to the 3.2 XpmInfos
|
|
||||||
mechanism have been put back into the XpmAttributes structure. The new
|
|
||||||
3.3 XpmInfos struct has been renamed as XpmInfo to avoid conflict with
|
|
||||||
the old 3.2 flag which is back too. All the semantic related to the
|
|
||||||
XpmAttributes infos fields is back as well.
|
|
||||||
|
|
||||||
So this new version provides a high level API which is fully
|
|
||||||
compatible with 3.2 and still provides the 3.3 lower level API
|
|
||||||
(XpmImage) with the XpmInfos struct renamed as XpmInfo. This leads to
|
|
||||||
some redundancy but this was the best I could do to satisfy both
|
|
||||||
CDE/Motif people who needed the backward compatibility and myself (who
|
|
||||||
always tries to provide you with the best ;-).
|
|
||||||
|
|
||||||
Tests have been successfully performed with pixmap-2.1, pixmap-2.4, and
|
|
||||||
sxpm.
|
|
||||||
|
|
||||||
ENHANCEMENTS:
|
|
||||||
- The colorTable member of the XpmAttributes structure is now an
|
|
||||||
(XpmColor*) in order to be compatible with an XpmImage colorTable.
|
|
||||||
However in order to be backward compatible this field is cast to
|
|
||||||
(XpmColor **), which is equivalent to (char ***), when it is used
|
|
||||||
with the old flags XpmInfos and XpmReturnInfos. To handle the new
|
|
||||||
type the new flags XpmColorTable and XpmReturnColorTable have been
|
|
||||||
defined.
|
|
||||||
- The XpmInfo struct has been extended to avoid having to deal with an
|
|
||||||
XpmAttributes at the lower level. The idea is that all the data
|
|
||||||
stored in an Xpm file can be retrieve through both an XpmImage and
|
|
||||||
an XpmInfo struct. See the documentation for details.
|
|
||||||
- XpmUndefPixel is defined and exported by xpm.h in order to let
|
|
||||||
clients providing their own colorTable when writing out an Xpm file.
|
|
||||||
See the documentation for details.
|
|
||||||
- in sxpm/sxpm.c, set attribute XtNinput to True on toplevel widget.
|
|
||||||
Windows that don't "take" input, never get focus, as mandated by
|
|
||||||
the ICCM.
|
|
||||||
patch from Henrique Martins <martins@hplhasm.hpl.hp.com>
|
|
||||||
- lib/Imakefile modified to build the shared library under IRIX 5.
|
|
||||||
patch from simon@lia.di.epfl.ch (Simon Leinen)
|
|
||||||
|
|
||||||
NEW FEATURES:
|
|
||||||
- a new function and a new define should help client figuring out with
|
|
||||||
which Xpm library version they are working. These are
|
|
||||||
XpmIncludeVersion and XpmLibraryVersion().
|
|
||||||
|
|
||||||
3.3 (93/12/20)
|
|
||||||
|
|
||||||
NEW FEATURES:
|
|
||||||
- XPM1 files are now supported.
|
|
||||||
- a new function is provided to get an error string related to the
|
|
||||||
returned error code.
|
|
||||||
- suggested by Detlef Schmier <detlef@mfr.dec.com>
|
|
||||||
|
|
||||||
ENHANCEMENTS:
|
|
||||||
- gzip and gunzip are called with the -q option (quiet)
|
|
||||||
- patch from Chris P. Ross <cross@eng.umd.edu>
|
|
||||||
- the parser is again more flexible about the way the strings are
|
|
||||||
distributed on lines. Actually a single line XPM file can be read.
|
|
||||||
- the documentation should be clearer about shapemask generation and
|
|
||||||
XpmAttributes valuemask.
|
|
||||||
|
|
||||||
BUGS CORRECTED:
|
|
||||||
- reading some binary file was leading to a bus error.
|
|
||||||
- patch from Detlef Schmier <detlef@mfr.dec.com>
|
|
||||||
- the ? character is no longer used when writing an XPM file in order
|
|
||||||
to avoid possible ANSI trigraphs.
|
|
||||||
|
|
||||||
3.3alpha (93/08/13)
|
|
||||||
|
|
||||||
NEW FEATURES:
|
|
||||||
- a new level interface is provided to allow applications to do either
|
|
||||||
icon editing or data caching.
|
|
||||||
The XpmAttributes has been changed but most applications will just
|
|
||||||
need to be recompiled.
|
|
||||||
- new structures are provided to deal with the new lower level:
|
|
||||||
XpmImage, XpmColor, XpmInfos.
|
|
||||||
|
|
||||||
- a separate distribution called xpm-contrib is available. This
|
|
||||||
includes the converters which used to be part of this distribution
|
|
||||||
plus:
|
|
||||||
two new applications:
|
|
||||||
* nexpm to draw a pixmap in *any* existing window from
|
|
||||||
Ralph Betza <gnohmon@ssiny.com>
|
|
||||||
* xpmview to display a list of Xpm files from
|
|
||||||
Jean Michel Leon <leon@sophia.inria.fr>
|
|
||||||
|
|
||||||
a hacky string to pixmap converter, provided by
|
|
||||||
Robert H. Forsman Jr. <thoth@manatee.cis.ufl.edu>
|
|
||||||
|
|
||||||
The Xpm editor called pixmap will also be part of this contrib.
|
|
||||||
This does not mean it is the best pixmap editor one can find
|
|
||||||
but it is the only one that I know of which tries to handle
|
|
||||||
all the features of this format.
|
|
||||||
|
|
||||||
ENHANCEMENTS:
|
|
||||||
- the code to build XImage data has been optimized by
|
|
||||||
jules@x.co.uk (Julian Gosnell)
|
|
||||||
the old code is still available when compiling with the
|
|
||||||
-DWITHOUT_SPEEDUPS flag.
|
|
||||||
|
|
||||||
- closecolor code was not re-entrant
|
|
||||||
- dbl@visual.com (David B. Lewis)
|
|
||||||
- fix gzip filename (*.gz and no longer *.z).
|
|
||||||
- Jason Patterson <jasonp@fitmail.fit.qut.edu.au>
|
|
||||||
- sxpm has 2 new options:
|
|
||||||
-nom to do not display the mask if there is one
|
|
||||||
-cp <color> <pixel> to override a color value with a given
|
|
||||||
pixel, i.e. sxpm plaid.xpm -cp red 4
|
|
||||||
|
|
||||||
also the '-s' adn '-p' options have been renamed to '-sc' and '-sp'.
|
|
||||||
|
|
||||||
- xpm.h defines XpmFormat, XpmVersion, and XpmRevision numbers.
|
|
||||||
|
|
||||||
BUGS CORRECTED:
|
|
||||||
- closecolor minor fix
|
|
||||||
- Jason Patterson <jasonp@fitmail.fit.qut.edu.au>
|
|
||||||
|
|
||||||
3.2g (93/04/26)
|
|
||||||
|
|
||||||
ENHANCEMENTS:
|
|
||||||
- much faster close colors
|
|
||||||
- piping from/to compressed files now handles GNU's gzip (.z) format
|
|
||||||
- added XpmColorKey attribute - ability to specify which visual's
|
|
||||||
colors to use (ie: now it's possible to read in a pixmap in a
|
|
||||||
color visual, but use the colors specified for monochrome).
|
|
||||||
- added -mono, -grey4, -grey and -color options to sxpm to demonstrate
|
|
||||||
the XpmColorKey attribute.
|
|
||||||
- Jason Patterson <jasonp@fitmail.qut.edu.au>
|
|
||||||
|
|
||||||
BUGS CORRECTED:
|
|
||||||
- fixed bug where redefining "None" as a pixel stopped mask generation
|
|
||||||
- minor SVR4 defines for <string.h>
|
|
||||||
- fixed annoying closecolor bug related to read/write color cells
|
|
||||||
- fixed minor bug in color value -> pixel overloading
|
|
||||||
- manual updated to include new red/green/blue closeness attributes
|
|
||||||
- Jason Patterson <jasonp@fitmail.qut.edu.au>
|
|
||||||
|
|
||||||
- the top Imakefile was missing the depend target
|
|
||||||
- sxpm/Imakefile fixed so that -L../lib is set before the standard
|
|
||||||
library location.
|
|
||||||
- Vivek Khera <khera@cs.duke.edu>
|
|
||||||
|
|
||||||
- lib/xpmP.h now defines bcopy as memcpy for VMS (required by recent
|
|
||||||
versions of VMS)
|
|
||||||
- J. Daniel Smith <dsmith@ann-arbor.applicon.slb.com>
|
|
||||||
|
|
||||||
- the lib/Imakefile didn't work with X11R4.
|
|
||||||
|
|
||||||
|
|
||||||
3.2f (93/03/17)
|
|
||||||
|
|
||||||
NEW FEATURES:
|
|
||||||
- the library provides four new functions to deal with Xpm files
|
|
||||||
loaded in memory as single character strings buffers:
|
|
||||||
|
|
||||||
XpmCreateImageFromBuffer
|
|
||||||
XpmCreatePixmapFromBuffer
|
|
||||||
XpmCreateBufferFromImage
|
|
||||||
XpmCreateBufferFromPixmap
|
|
||||||
|
|
||||||
- in addition, as a convenience, two functions are provided to copy a
|
|
||||||
file in a buffer and to write a file from a buffer:
|
|
||||||
|
|
||||||
XpmReadFileToBuffer
|
|
||||||
XpmWriteFileFromBuffer
|
|
||||||
|
|
||||||
ENHANCEMENTS:
|
|
||||||
- Files are now dispatched in the following sub-directories:
|
|
||||||
lib, sxpm, and doc.
|
|
||||||
- Imakefiles will let you build a shared library as well as the static
|
|
||||||
one (with either X11R4 or X11R5).
|
|
||||||
- The documentation has been ported from LaTeX to FrameMaker and is
|
|
||||||
now included in the distribution in its PostScript form (doc/xpm.ps).
|
|
||||||
Source files are available on request.
|
|
||||||
Also the documentation has been reorganized and includes a table of
|
|
||||||
contents and an index of the functions (the number of functions
|
|
||||||
increasing this became a requisite).
|
|
||||||
|
|
||||||
BUGS CORRECTED:
|
|
||||||
- Many warnings have been fixed - patch from Daniel Dardailler
|
|
||||||
daniel@osf.org
|
|
||||||
|
|
||||||
3.2e (93/02/05)
|
|
||||||
|
|
||||||
ENHANCEMENTS:
|
|
||||||
- use XpmMalloc, XpmRealloc, XpmCalloc, and XpmFree which are defines
|
|
||||||
in xpmP.h. This should help people wanting to use their own functions.
|
|
||||||
|
|
||||||
BUGS CORRECTED:
|
|
||||||
- Intrinsic.h is no longer included.
|
|
||||||
- bzero is defined as memset on SYSV and SVR4.
|
|
||||||
- some memory initialization bug concerning XpmAttributes.
|
|
||||||
|
|
||||||
3.2d (93/01/27)
|
|
||||||
|
|
||||||
ENHANCEMENTS:
|
|
||||||
- compile on Solaris 2.0
|
|
||||||
- patch from Clint Jeffery <cjeffery@cs.arizona.edu>
|
|
||||||
|
|
||||||
BUGS CORRECTED:
|
|
||||||
- shape masks are now set correctly for LSBFirst (Decs).
|
|
||||||
- pixmaps are now set correctly for 2 bit displays (Nexts).
|
|
||||||
- patch from Josef Leherbauer <joe@takeFive.co.at>
|
|
||||||
- isspace was called on getc which fails when EOF is returned.
|
|
||||||
- Marelli Paolo <marelli@colos3.usr.dsi.unimi.it>
|
|
||||||
|
|
||||||
3.2c (92/12/29)
|
|
||||||
|
|
||||||
ENHANCEMENTS:
|
|
||||||
- parsing optimized for single and double characters color
|
|
||||||
- patch originally from Martin Brunecky
|
|
||||||
marbru@build1.auto-trol.com
|
|
||||||
|
|
||||||
BUGS CORRECTED:
|
|
||||||
- XpmFreeExtensions was calling free on some argument without checking
|
|
||||||
it was not NULL.
|
|
||||||
- strdup was not correctly defined for systems which do not provide
|
|
||||||
it. - Hans-Peter Lichtin <lich@zellweger.ch>
|
|
||||||
- some bug in XpmCrDataFI.c
|
|
||||||
- Sven Delmas garfield@avalanche.cs.tu-berlin.de
|
|
||||||
|
|
||||||
NOTE:
|
|
||||||
- there is still a bug with the creation of the clipmask on display of
|
|
||||||
depth 2 but I can't find a fix because unfortunately I don't have such
|
|
||||||
a rendering system and nobody gets the time to investigate for me.
|
|
||||||
|
|
||||||
3.2b (92/10/19)
|
|
||||||
|
|
||||||
ENHANCEMENTS:
|
|
||||||
- Create XpmReadFileToData and XpmWriteFileFromData
|
|
||||||
- Dan Greening <dgreen@sti.com>
|
|
||||||
- added "close colors" support and ability to redefine color values
|
|
||||||
as pixels at load time, as well as color names
|
|
||||||
- Jason Patterson <jasonp@fitmail.qut.edu.au>
|
|
||||||
- errors while parsing or allocating colors now revert to other
|
|
||||||
visual defaults, creating pixmap/image as expected, and returning
|
|
||||||
XpmSuccess. The old behavior of XpmColorError being returned and no
|
|
||||||
pixmap/image being created can be retained by setting the
|
|
||||||
exactColors attribute.
|
|
||||||
- Jason Patterson <jasonp@fitmail.qut.edu.au>
|
|
||||||
|
|
||||||
BUGS CORRECTED:
|
|
||||||
- SVR4 defines for including <string.h> instead of <strings.h>
|
|
||||||
- Jason Patterson <jasonp@fitmail.qut.edu.au>
|
|
||||||
- attributes->extensions and attributes->nextensions fields were not
|
|
||||||
set correctly when no extensions present in file.
|
|
||||||
- Simon_Scott Cornish <cornish@ecr.mu.oz.au>
|
|
||||||
|
|
||||||
3.2a (92/08/17)
|
|
||||||
|
|
||||||
ENHANCEMENTS:
|
|
||||||
- use the mock lisp hashing function instead of the gnu emacs one,
|
|
||||||
it is faster in some cases and never slower (I've not found any case).
|
|
||||||
|
|
||||||
BUGS CORRECTED:
|
|
||||||
- function prototypes for ansi compilers.
|
|
||||||
- some memory initialization bugs (purify is just great for this).
|
|
||||||
- empty strings in extensions are now correctly handled.
|
|
||||||
|
|
||||||
3.2 (92/07/06)
|
|
||||||
|
|
||||||
NEW FEATURES:
|
|
||||||
- both format and functions handle extensions data. This allow people
|
|
||||||
to store additional data related to a pixmap. See documentation for
|
|
||||||
detail.
|
|
||||||
- sxpm supports the new option '-c' to use a private colormap. This is
|
|
||||||
useful when displaying pixmaps using a lot of colors.
|
|
||||||
- sxpm supports the new option '-v' (verbose) to get possible
|
|
||||||
extensions print out on standard error.
|
|
||||||
|
|
||||||
ENHANCEMENTS:
|
|
||||||
- most of the code has been reworked to be improved and thus almost
|
|
||||||
every function is faster. It takes less than 6 seconds of real time on
|
|
||||||
a sun4 to display, with sxpm, a 487x635 pixmap using 213 colors, while
|
|
||||||
it takes 32 seconds with the old library! It takes 18 seconds to
|
|
||||||
display a 1279x1023 screen dump using 14 colors while xwud takes 10
|
|
||||||
seconds.
|
|
||||||
Of course performance improvements are not always that great, they
|
|
||||||
depend on the size and number of colors but I'm sure everybody will
|
|
||||||
appreciate ;-)
|
|
||||||
I know how to improve it more but this will require changes in the
|
|
||||||
architecture so this is not for now. Some optimizations have been
|
|
||||||
contributed by gregor@kafka.saic.com (gregg hanna) and
|
|
||||||
jnc@csl.biosci.arizona.edu (John N. Calley).
|
|
||||||
- the Imakefile is modified to let you install sxpm - Rainer Klute
|
|
||||||
<klute@irb.informatik.uni-dortmund.de>
|
|
||||||
- xpmP.h declares popen for Sequent platforms - Clinton Jeffery
|
|
||||||
<cjeffery@cs.arizona.edu>
|
|
||||||
- XpmWriteFileFromImage/Pixmap rather than truncating the pixmap name
|
|
||||||
to the first dot changes dots to underscores to get a valid C syntax
|
|
||||||
name.
|
|
||||||
|
|
||||||
|
|
||||||
BUGS CORRECTED:
|
|
||||||
- there was a bug in the image creation function for some 24 bits
|
|
||||||
displays. It is fixed.
|
|
||||||
- allocated color pixels are now freed when an error occurs -
|
|
||||||
nusser@dec1.wu-wien.ac.at (Stefan Nusser)
|
|
||||||
|
|
||||||
CHANGES TO THE DOC:
|
|
||||||
- the documentation describes the new XpmExtension structure and how
|
|
||||||
to use it with read and write functions.
|
|
||||||
|
|
||||||
3.1 (92/02/03)
|
|
||||||
|
|
||||||
ENHANCEMENTS:
|
|
||||||
- sxpm now have more standard options (mainly suggested by
|
|
||||||
Rainer Sinkwitz <sinkwitz@ifi.unizh.ch>):
|
|
||||||
|
|
||||||
Usage: sxpm [options...]
|
|
||||||
Where options are:
|
|
||||||
|
|
||||||
[-d host:display] Display to connect to.
|
|
||||||
[-g geom] Geometry of window.
|
|
||||||
[-hints] Set ResizeInc for window.
|
|
||||||
[-icon filename] Set pixmap for iconWindow.
|
|
||||||
[-s symbol_name color_name] Overwrite color defaults.
|
|
||||||
[-p symbol_name pixel_value] Overwrite color defaults.
|
|
||||||
[-plaid] Read the included plaid pixmap.
|
|
||||||
[filename] Read from file 'filename', and from
|
|
||||||
standard input if 'filename' is '-'.
|
|
||||||
[-o filename] Write to file 'filename', and to standard
|
|
||||||
output if 'filename' is '-'.
|
|
||||||
[-nod] Don't display in window.
|
|
||||||
[-rgb filename] Search color names in the rgb text file
|
|
||||||
'filename'.
|
|
||||||
|
|
||||||
if no input is specified sxpm reads from standard input.
|
|
||||||
|
|
||||||
|
|
||||||
- Xpm functions and Ppm converters now deal with multiword colornames.
|
|
||||||
patches from Rainer Sinkwitz <sinkwitz@ifi.unizh.ch>.
|
|
||||||
|
|
||||||
|
|
||||||
3.0 (91/10/03)
|
|
||||||
|
|
||||||
Functions name and defines have been modified again (sorry for that)
|
|
||||||
as follows:
|
|
||||||
|
|
||||||
XpmReadPixmapFile XpmReadFileToPixmap
|
|
||||||
XpmWritePixmapFile XpmWriteFileFromPixmap
|
|
||||||
|
|
||||||
XpmPixmapColorError XpmColorError
|
|
||||||
XpmPixmapSuccess XpmSuccess
|
|
||||||
XpmPixmapOpenFailed XpmOpenFailed
|
|
||||||
XpmPixmapFileInvalid XpmFileInvalid
|
|
||||||
XpmPixmapNoMemory XpmNoMemory
|
|
||||||
XpmPixmapColorFailed XpmColorFailed
|
|
||||||
|
|
||||||
To update code using Xpm you can use the included shell script called
|
|
||||||
rename with the sed commands files name-3.0b-3.0c and name-3.0c-3.0.
|
|
||||||
Old names still valid though.
|
|
||||||
|
|
||||||
NEW FEATURES:
|
|
||||||
- four new functions to work with images instead of pixmaps:
|
|
||||||
|
|
||||||
XpmReadFileToImage
|
|
||||||
XpmWriteFileFromImage
|
|
||||||
XpmCreateImageFromData
|
|
||||||
XpmCreateDataFromImage
|
|
||||||
|
|
||||||
ENHANCEMENTS:
|
|
||||||
Algorithms to create and scan images and pixmaps are based on the
|
|
||||||
MIT's R5 code, thus they are much cleaner than old ones and should
|
|
||||||
avoid any problem with any visual (yes, I trust MIT folks :-)
|
|
||||||
|
|
||||||
BUGS CORRECTED:
|
|
||||||
Imakefile use INCDIR instead of ROOTDIR.
|
|
||||||
|
|
||||||
CHANGES TO THE DOC:
|
|
||||||
- the documentation presents the four new functions.
|
|
||||||
|
|
||||||
3.0c (91/09/18)
|
|
||||||
|
|
||||||
In answer to request of people functions, types and defines names have
|
|
||||||
been changed as follows:
|
|
||||||
|
|
||||||
XCreatePixmapFromData XpmCreatePixmapFromData
|
|
||||||
XCreateDataFromPixmap XpmCreateDataFromPixmap
|
|
||||||
XReadPixmapFile XpmReadPixmapFile
|
|
||||||
XWritePixmapFile XpmWritePixmapFile
|
|
||||||
XFreeXpmAttributes XpmFreeAttributes
|
|
||||||
|
|
||||||
PixmapColorError XpmPixmapColorError
|
|
||||||
PixmapSuccess XpmPixmapSuccess
|
|
||||||
PixmapOpenFailed XpmPixmapOpenFailed
|
|
||||||
PixmapFileInvalid XpmPixmapFileInvalid
|
|
||||||
PixmapNoMemory XpmPixmapNoMemory
|
|
||||||
PixmapColorFailed XpmPixmapColorFailed
|
|
||||||
|
|
||||||
ColorSymbol XpmColorSymbol
|
|
||||||
|
|
||||||
Generally speaking every public name begins with 'Xpm' and every
|
|
||||||
private one with 'xpm'. This should avoid any possible conflict.
|
|
||||||
|
|
||||||
Some files have also be renamed accordingly.
|
|
||||||
|
|
||||||
NEW FEATURES:
|
|
||||||
- support for VMS and two new options for sxpm: icon and hints (see
|
|
||||||
manual for details) Richard Hess <rhess%pleione%cimshop@uunet.UU.NET>
|
|
||||||
- DEFINES in Imakefile and Makefile.noXtree allows you to set the
|
|
||||||
following:
|
|
||||||
|
|
||||||
ZPIPE for un/compressing piped feature (default is on)
|
|
||||||
NEED_STRCASECMP for system which doesn't provide one (default
|
|
||||||
is off)
|
|
||||||
|
|
||||||
- xpmtoppm.c has is own strstr function which is used if NEED_STRSTR
|
|
||||||
is defined when compiling - Hugues.Leroy@irisa.fr (Hugues Leroy).
|
|
||||||
|
|
||||||
BUGS CORRECTED:
|
|
||||||
- many bugs have been fixed, especially for ansi compilers -
|
|
||||||
Doyle C. Davidson (doyle@doyled.b23b.ingr.com) and
|
|
||||||
Clifford D. Morrison (cdm%bigdaddy%edsr@uunet.UU.NET)
|
|
||||||
- parser is again a little more improved
|
|
||||||
|
|
||||||
3.0b (91/09/12)
|
|
||||||
|
|
||||||
This is a complete new version with a new API and where files and
|
|
||||||
structures have been renamed. So this should be taken as a new
|
|
||||||
starting release.
|
|
||||||
This release should be quickly followed by the 3.0 because I'm planning
|
|
||||||
to send it for X11R5 contrib which ends October 5th.
|
|
||||||
|
|
||||||
NEW FEATURES:
|
|
||||||
- support for transparent color.
|
|
||||||
- support for hotspot.
|
|
||||||
- a new function: XCreateDataFromPixmap to create an XPM data from a
|
|
||||||
pixmap in order to be able to create a new pixmap from this data using
|
|
||||||
the XCreatePixmapFromData function later on.
|
|
||||||
- a new structure: XpmAttributes which replace the XpmInfo structure
|
|
||||||
and which leads to a much simpler API with less arguments.
|
|
||||||
- arguments such as visual, colormap and depth are optional, default
|
|
||||||
values are taken if omitted.
|
|
||||||
- parsing and allocating color failures don't simply break anymore. If
|
|
||||||
another default color can be found it is used and a PixmapColorError
|
|
||||||
is returned. In case no color can be found then it breaks and returns
|
|
||||||
PixmapColorFailed.
|
|
||||||
- for this reason the ErrorStatus codes are redefined as follows:
|
|
||||||
|
|
||||||
null if full success
|
|
||||||
positive if partial success
|
|
||||||
negative if failure
|
|
||||||
|
|
||||||
with:
|
|
||||||
#define PixmapColorError 1
|
|
||||||
#define PixmapSuccess 0
|
|
||||||
#define PixmapOpenFailed -1
|
|
||||||
#define PixmapFileInvalid -2
|
|
||||||
#define PixmapNoMemory -3
|
|
||||||
#define PixmapColorFailed -4
|
|
||||||
|
|
||||||
- sxpm prints out a warning when a requested color could not be parsed
|
|
||||||
or alloc'ed, and an error when none has been found.
|
|
||||||
- sxpm handles pixmap with transparent color. For this purpose the
|
|
||||||
plaid_mask.xpm is added to the distribution.
|
|
||||||
|
|
||||||
BUGS CORRECTED:
|
|
||||||
- I've again improved the memory management.
|
|
||||||
- the parser is also improved.
|
|
||||||
- when writing a pixmap to a file the variable name could be
|
|
||||||
"plaid.xpm" which is not valid in C. Now the extension name is cut off
|
|
||||||
to give "plaid" as variable name.
|
|
||||||
- reading multiple words colornames such as "peach puff" where leading
|
|
||||||
to non readable Xpm files. They are now skipped to have only single
|
|
||||||
word colorname. Lionel Mallet (mallet@ipvpel.unipv.it).
|
|
||||||
- parser was triggered by the "/" character inside string.
|
|
||||||
Doyle C. Davidson (doyle@doyled.b23b.ingr.com). This is corrected.
|
|
||||||
- sxpm maps the window only if the option "-nod" is not selected.
|
|
||||||
|
|
||||||
CHANGES TO THE DOC:
|
|
||||||
- the documentation presents the new API and features.
|
|
||||||
|
|
||||||
3.0a (91/04/10)
|
|
||||||
|
|
||||||
This is an alpha version because it supports the new version of XPM,
|
|
||||||
but the library interface is still the same. Indeed it will change in
|
|
||||||
future release to get rid of obsolete stuff such as the type argument
|
|
||||||
of the XWritePixmapFile function.
|
|
||||||
|
|
||||||
******************************* WARNING *********************************
|
|
||||||
The format is not anymore XPM2, it is XPM version 3 which is XPM2
|
|
||||||
limited to the C syntax with the key word "XPM" in place of "XPM2 C".
|
|
||||||
The interface library has not changed yet but the type argument of
|
|
||||||
XWritePixmapFile and the type member of XpmInfo are not used anymore.
|
|
||||||
Meanwhile the library which is now called libXpm.a is backward
|
|
||||||
compatible as XPM2 files can be read. But the XWritePixmapFile
|
|
||||||
function only writes out XPM version 3 files.
|
|
||||||
*************************************************************************
|
|
||||||
|
|
||||||
NEW FEATURES:
|
|
||||||
- the library doesn't use global variables anymore, thus it should be
|
|
||||||
able to share it.
|
|
||||||
- sxpm has been rewritten on top of Xt, it can be used to convert
|
|
||||||
files from XPM2 to XPM version 3.
|
|
||||||
- xpm1to2c.perl has been upgraded to the new XPM version and renamed
|
|
||||||
as xpm1to3.perl
|
|
||||||
- ppmtoxpm2.c and ppmtoxpm2.1 have been upgraded too and renamed
|
|
||||||
ppmtoxpm.c and ppmtoxpm.1. In addition the xpmtoppm.c and xpmtoppm.1
|
|
||||||
of the pbmplus package have been upgraded too. xpmtoppm can thus
|
|
||||||
convert XPM version 1 and 3 to a portable pixmap. These files should
|
|
||||||
replace the original ones which are part of the pbmplus package. See
|
|
||||||
the ppm.README file for more details.
|
|
||||||
- the library contains RCS variables which allows you to get revision
|
|
||||||
numbers with ident (which is part of the RCS package). The Id number
|
|
||||||
is an internal rcs number for my eyes only. The official one is found
|
|
||||||
in Version.
|
|
||||||
|
|
||||||
BUGS CORRECTED:
|
|
||||||
- the memory management has been much improved in order to avoid
|
|
||||||
memory leaks.
|
|
||||||
- the XImage building algorithm has been changed to support correctly
|
|
||||||
different visual depths. There is special code to handle depths 1, 4,
|
|
||||||
6, 8, 24, and 32 to build the image and send it in one whack, and
|
|
||||||
other depths are supported by building the image with XPutPixel which
|
|
||||||
is slow but sure.
|
|
||||||
- similar algorithms are used to read pixmaps and write them out.
|
|
||||||
|
|
||||||
CHANGES TO THE DOC:
|
|
||||||
- the documentation presents the new XPM format.
|
|
||||||
|
|
||||||
|
|
||||||
2.8 (90/12/19)
|
|
||||||
|
|
||||||
******************************* WARNING *********************************
|
|
||||||
Since the last release two structures have been modified and have now
|
|
||||||
bigger sizes, so ANY CODE USING THE libXPM2 NEEDS TO BE RECOMPILED.
|
|
||||||
*************************************************************************
|
|
||||||
|
|
||||||
NEW FEATURES:
|
|
||||||
- the ColorSymbol struct contains the new member 'pixel' which allow
|
|
||||||
to override default colors by giving a pixel value (in such a case
|
|
||||||
symbol value must be set to NULL),
|
|
||||||
- the XpmInfo struct contains the new member 'rgb_fname' in which one
|
|
||||||
can specify an rgb text file name while writing a pixmap with the
|
|
||||||
XWritePixmapFile function (otherwise this member should be set to
|
|
||||||
NULL). This way colorname will be searched and written out if found
|
|
||||||
instead of the RGB value,
|
|
||||||
- Imakefile originally provided by stolcke@ICSI.Berkeley.EDU,
|
|
||||||
- the old Makefile is now distributed as Makefile.noXtree and presents
|
|
||||||
install targets,
|
|
||||||
- the demo application is renamed sxpm (Show XPM), creates a window of
|
|
||||||
the size of the pixmap if no geometry is specified, prints out
|
|
||||||
messages instead of status when an error occurs, handles the new
|
|
||||||
option -p for overriding colors by giving a pixel value (not really
|
|
||||||
useful but is just here to show this new feature), handles the new
|
|
||||||
option -rgb for specifying an rgb text file, and ends on
|
|
||||||
keypress as buttonpress,
|
|
||||||
- defines for SYSV have been provided by Paul Breslaw
|
|
||||||
<paul@mecazh.uucp>,
|
|
||||||
- the distribution includes a new directory called converters which
|
|
||||||
contains xpm1to2 and xpm1to2c perl converters and a ppmtoxpm2
|
|
||||||
converter provided by Paul Breslaw who upgraded the original ppmtoxpm
|
|
||||||
written by Mark W. Snitily <mark@zok.uucp>.
|
|
||||||
|
|
||||||
CHANGES TO THE DOC:
|
|
||||||
- this file is created and will give old users a quick reference to
|
|
||||||
changes made from one release to the next one,
|
|
||||||
- documentation is changed to present the new ColorSymbol structure
|
|
||||||
and the way to override colors by giving a pixel value, and to present
|
|
||||||
the new XpmInfo structure and how to use it,
|
|
||||||
- a man page for sxpm is added to the distrib,
|
|
||||||
- the README file talks about sxpm and no more demo, and have
|
|
||||||
reference to the different converters.
|
|
||||||
|
|
||||||
2.7 (90/11/12)
|
|
||||||
|
|
||||||
NEW FEATURES:
|
|
||||||
- XReadPixmapFile reads from stdin if filename is NULL,
|
|
||||||
- XWritePixmapFile writes to stdin if filename is NULL,
|
|
||||||
- the demo application handles the new option -nod for no displaying
|
|
||||||
the pixmap in a window (useful when used as converter).
|
|
||||||
|
|
||||||
CHANGES TO THE DOC:
|
|
||||||
- documentation about the new feature.
|
|
||||||
|
|
||||||
2.6 (90/10/29)
|
|
||||||
|
|
||||||
NEW FEATURES:
|
|
||||||
- from nazgul@alphalpha.com (Kee Hinckley): changes to make the
|
|
||||||
library usable as C++ code, and on Apollo without any warning.
|
|
||||||
|
|
||||||
BUGS CORRECTED:
|
|
||||||
- from nazgul@alphalpha.com (Kee Hinckley): the xpm include files was
|
|
||||||
declaring XWritePixmapFile as taking in arg a Pixmap pointer instead
|
|
||||||
of a Pixmap.
|
|
||||||
|
|
||||||
2.5 (90/10/17)
|
|
||||||
|
|
||||||
BUGS CORRECTED:
|
|
||||||
- XWritePixmapFile was not closing the file while ending normally.
|
|
||||||
|
|
||||||
2.4 (90/09/06)
|
|
||||||
|
|
||||||
NEW FEATURES:
|
|
||||||
- XReadPixmapFile reads from a piped uncompress if the given filename
|
|
||||||
ends by .Z or if filename.Z exists,
|
|
||||||
- XWritePixmapFile writes to a piped compress if the given filename
|
|
||||||
ends by .Z.
|
|
||||||
|
|
||||||
BUGS CORRECTED:
|
|
||||||
- demo now deals with window manager.
|
|
||||||
|
|
||||||
CHANGES TO THE DOC:
|
|
||||||
- documentation about compressed files management.
|
|
||||||
|
|
||||||
2.3 (90/08/30)
|
|
||||||
|
|
||||||
BUGS CORRECTED:
|
|
||||||
- handle monochrome display correctly,
|
|
||||||
- comments can be empty.
|
|
||||||
|
|
||||||
2.2 (90/08/27)
|
|
||||||
|
|
||||||
BUGS CORRECTED:
|
|
||||||
- when reading some invalid free was dumping core on some machine.
|
|
||||||
|
|
||||||
2.1 (90/08/24)
|
|
||||||
|
|
||||||
First distribution of XPM2.
|
|
||||||
|
|
|
@ -1,3 +1,128 @@
|
||||||
|
commit a154f12b6e56f131bd5880fc96f11615ff940b29
|
||||||
|
Author: Alan Coopersmith <alan.coopersmith@oracle.com>
|
||||||
|
Date: Tue Oct 3 08:43:57 2023 -0700
|
||||||
|
|
||||||
|
libXpm 3.5.17
|
||||||
|
|
||||||
|
Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
|
||||||
|
|
||||||
|
commit 91f887b41bf75648df725a4ed3be036da02e911e
|
||||||
|
Author: Yair Mizrahi <yairm@jfrog.com>
|
||||||
|
Date: Thu Sep 7 16:59:07 2023 -0700
|
||||||
|
|
||||||
|
Avoid CVE-2023-43787 (integer overflow in XCreateImage)
|
||||||
|
|
||||||
|
This doesn't fix the CVE - that has to happen in libX11, this
|
||||||
|
just tries to avoid triggering it from libXpm, and saves time
|
||||||
|
in not pretending we can successfully create an X Image for
|
||||||
|
which the width * depth would overflow the signed int used to
|
||||||
|
store the bytes_per_line value.
|
||||||
|
|
||||||
|
Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
|
||||||
|
|
||||||
|
commit 00348988396c88150f6ddfea3d3195cbf01d60c2
|
||||||
|
Author: Alan Coopersmith <alan.coopersmith@oracle.com>
|
||||||
|
Date: Thu Sep 7 16:55:25 2023 -0700
|
||||||
|
|
||||||
|
test: Add test case for CVE-2023-43787 (integer overflow in XCreateImage)
|
||||||
|
|
||||||
|
Provided by Yair Mizrahi of the JFrog Vulnerability Research team
|
||||||
|
|
||||||
|
Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
|
||||||
|
|
||||||
|
commit 84fb14574c039f19ad7face87eb9acc31a50701c
|
||||||
|
Author: Alan Coopersmith <alan.coopersmith@oracle.com>
|
||||||
|
Date: Wed Sep 6 17:34:33 2023 -0700
|
||||||
|
|
||||||
|
Avoid CVE-2023-43786: stack exhaustion in XPutImage()
|
||||||
|
|
||||||
|
This doesn't fix the CVE - that has to happen in libX11, this
|
||||||
|
just tries to avoid triggering it from libXpm, and saves time
|
||||||
|
in not pretending we can successfully create an X11 pixmap with
|
||||||
|
dimensions larger than the unsigned 16-bit integers used in the
|
||||||
|
X11 protocol for the dimensions.
|
||||||
|
|
||||||
|
Reported by Yair Mizrahi of the JFrog Vulnerability Research team
|
||||||
|
|
||||||
|
Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
|
||||||
|
|
||||||
|
commit edb97396620f019f8d2e707ad3fbaf6bbbd5ed36
|
||||||
|
Author: Alan Coopersmith <alan.coopersmith@oracle.com>
|
||||||
|
Date: Tue Sep 5 17:01:58 2023 -0700
|
||||||
|
|
||||||
|
test: Add test case for CVE-2023-43786 (stack exhaustion in PutImage)
|
||||||
|
|
||||||
|
Provided by Yair Mizrahi of the JFrog Vulnerability Research team
|
||||||
|
|
||||||
|
Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
|
||||||
|
|
||||||
|
commit 7e21cb63b9a1ca760a06cc4cd9b19bbc3fcd8f51
|
||||||
|
Author: Alan Coopersmith <alan.coopersmith@oracle.com>
|
||||||
|
Date: Sat Apr 29 18:30:34 2023 -0700
|
||||||
|
|
||||||
|
Fix CVE-2023-43789: Out of bounds read on XPM with corrupted colormap
|
||||||
|
|
||||||
|
Found with clang's libfuzzer
|
||||||
|
|
||||||
|
Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
|
||||||
|
|
||||||
|
commit a21e7bcf0ca3d8c1605b2721a545440260870438
|
||||||
|
Author: Alan Coopersmith <alan.coopersmith@oracle.com>
|
||||||
|
Date: Sat Apr 29 18:29:29 2023 -0700
|
||||||
|
|
||||||
|
test: Add test case for CVE-2023-43789 (corrupt colormap info)
|
||||||
|
|
||||||
|
Generated by clang's -fsanitize/libfuzzer
|
||||||
|
|
||||||
|
Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
|
||||||
|
|
||||||
|
commit 2fa554b01ef6079a9b35df9332bdc4f139ed67e0
|
||||||
|
Author: Alan Coopersmith <alan.coopersmith@oracle.com>
|
||||||
|
Date: Sat Apr 29 17:50:39 2023 -0700
|
||||||
|
|
||||||
|
Fix CVE-2023-43788: Out of bounds read in XpmCreateXpmImageFromBuffer
|
||||||
|
|
||||||
|
When the test case for CVE-2022-46285 was run with the Address Sanitizer
|
||||||
|
enabled, it found an out-of-bounds read in ParseComment() when reading
|
||||||
|
from a memory buffer instead of a file, as it continued to look for the
|
||||||
|
closing comment marker past the end of the buffer.
|
||||||
|
|
||||||
|
Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
|
||||||
|
|
||||||
|
commit 7f60f3428aa21d5d643eb75bfd9417cfabf48970
|
||||||
|
Author: Alan Coopersmith <alan.coopersmith@oracle.com>
|
||||||
|
Date: Tue Sep 5 17:35:55 2023 -0700
|
||||||
|
|
||||||
|
Explicitly mark non-static symbols as export or hidden
|
||||||
|
|
||||||
|
Hides private API from external linkage
|
||||||
|
|
||||||
|
Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
|
||||||
|
|
||||||
|
commit 2695ccda5df58af60ebb15bb17f1570437554adb
|
||||||
|
Author: Alan Coopersmith <alan.coopersmith@oracle.com>
|
||||||
|
Date: Sat May 20 13:47:52 2023 -0700
|
||||||
|
|
||||||
|
test: use g_pattern_spec_match_string if available
|
||||||
|
|
||||||
|
g_pattern_spec_match_string was introduced in glib 2.70 to replace
|
||||||
|
g_pattern_match_string which is deprecated in glib 2.70 and later.
|
||||||
|
|
||||||
|
Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
|
||||||
|
|
||||||
|
commit 4524c578581b427145ae136844fc655a89e94777
|
||||||
|
Author: Alan Coopersmith <alan.coopersmith@oracle.com>
|
||||||
|
Date: Mon Mar 27 18:35:46 2023 -0700
|
||||||
|
|
||||||
|
Set close-on-exec when opening files
|
||||||
|
|
||||||
|
Relies on platforms with O_CLOEXEC support following POSIX requirement
|
||||||
|
to not copy the close-on-exec flag to the new fd in dup2(), but to leave
|
||||||
|
it unset instead, since that's how fd's are passed to child processes
|
||||||
|
to handled compressed files.
|
||||||
|
|
||||||
|
Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
|
||||||
|
|
||||||
commit f131de92d6c4e2f62934e85b012287276ecf009c
|
commit f131de92d6c4e2f62934e85b012287276ecf009c
|
||||||
Author: Matt Turner <mattst88@gmail.com>
|
Author: Matt Turner <mattst88@gmail.com>
|
||||||
Date: Mon Apr 17 15:22:35 2023 -0400
|
Date: Mon Apr 17 15:22:35 2023 -0400
|
||||||
|
@ -1666,6 +1791,9 @@ Date: Tue Sep 21 17:57:35 2004 +0000
|
||||||
Removed inclusion of unnecessary kernel header on Linux. This may fail in
|
Removed inclusion of unnecessary kernel header on Linux. This may fail in
|
||||||
an -ansi environment.
|
an -ansi environment.
|
||||||
|
|
||||||
|
Notes:
|
||||||
|
Fixes CVE-2004-0687 (integer overflows) and CVE-2004-0688 (stack overflows)
|
||||||
|
|
||||||
commit 2773a7214e282f6f673483f5233b880505947c3f
|
commit 2773a7214e282f6f673483f5233b880505947c3f
|
||||||
Author: Egbert Eich <eich@suse.de>
|
Author: Egbert Eich <eich@suse.de>
|
||||||
Date: Fri Apr 23 18:42:32 2004 +0000
|
Date: Fri Apr 23 18:42:32 2004 +0000
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
# $OpenBSD: Makefile.bsd-wrapper,v 1.4 2023/05/07 16:07:42 matthieu Exp $
|
# $OpenBSD: Makefile.bsd-wrapper,v 1.5 2023/10/17 13:07:33 matthieu Exp $
|
||||||
|
|
||||||
SHARED_LIBS= Xpm 9.0
|
SHARED_LIBS= Xpm 10.0
|
||||||
|
|
||||||
CONFIGURE_ARGS += --disable-unit-tests
|
CONFIGURE_ARGS += --disable-unit-tests
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
|
|
||||||
# Initialize Autoconf
|
# Initialize Autoconf
|
||||||
AC_PREREQ([2.60])
|
AC_PREREQ([2.60])
|
||||||
AC_INIT([libXpm], [3.5.16],
|
AC_INIT([libXpm], [3.5.17],
|
||||||
[https://gitlab.freedesktop.org/xorg/lib/libxpm/-/issues/], [libXpm])
|
[https://gitlab.freedesktop.org/xorg/lib/libxpm/-/issues/], [libXpm])
|
||||||
AC_CONFIG_SRCDIR([Makefile.am])
|
AC_CONFIG_SRCDIR([Makefile.am])
|
||||||
AC_CONFIG_HEADERS([config.h])
|
AC_CONFIG_HEADERS([config.h])
|
||||||
|
@ -103,6 +103,9 @@ fi
|
||||||
AC_REQUIRE_AUX_FILE([tap-driver.sh])
|
AC_REQUIRE_AUX_FILE([tap-driver.sh])
|
||||||
XORG_ENABLE_UNIT_TESTS
|
XORG_ENABLE_UNIT_TESTS
|
||||||
XORG_WITH_GLIB([2.46])
|
XORG_WITH_GLIB([2.46])
|
||||||
|
if test "x$have_glib" = x"yes"; then
|
||||||
|
AC_CHECK_FUNCS([g_pattern_spec_match_string])
|
||||||
|
fi
|
||||||
XORG_MEMORY_CHECK_FLAGS
|
XORG_MEMORY_CHECK_FLAGS
|
||||||
|
|
||||||
AC_CONFIG_FILES([Makefile
|
AC_CONFIG_FILES([Makefile
|
||||||
|
|
|
@ -73,6 +73,7 @@
|
||||||
# ifdef AMIGA
|
# ifdef AMIGA
|
||||||
# include "amigax.h"
|
# include "amigax.h"
|
||||||
# else /* not AMIGA */
|
# else /* not AMIGA */
|
||||||
|
# include <X11/Xfuncproto.h>
|
||||||
# include <X11/Xlib.h>
|
# include <X11/Xlib.h>
|
||||||
# include <X11/Xutil.h>
|
# include <X11/Xutil.h>
|
||||||
# endif /* not AMIGA */
|
# endif /* not AMIGA */
|
||||||
|
@ -275,7 +276,12 @@ typedef struct {
|
||||||
|
|
||||||
|
|
||||||
/* macros for forward declarations of functions with prototypes */
|
/* macros for forward declarations of functions with prototypes */
|
||||||
#define FUNC(f, t, p) extern t f p
|
#ifndef _X_EXPORT
|
||||||
|
# define _X_EXPORT
|
||||||
|
# define _X_HIDDEN
|
||||||
|
#endif
|
||||||
|
#define FUNC(f, t, p) extern _X_EXPORT t f p
|
||||||
|
#define HFUNC(f, t, p) extern _X_HIDDEN t f p
|
||||||
#define LFUNC(f, t, p) static t f p
|
#define LFUNC(f, t, p) static t f p
|
||||||
|
|
||||||
|
|
||||||
|
|
5
lib/libXpm/m4/libtool.m4
vendored
5
lib/libXpm/m4/libtool.m4
vendored
|
@ -1627,11 +1627,6 @@ AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl
|
||||||
lt_cv_sys_max_cmd_len=8192;
|
lt_cv_sys_max_cmd_len=8192;
|
||||||
;;
|
;;
|
||||||
|
|
||||||
mint*)
|
|
||||||
# On MiNT this can take a long time and run out of memory.
|
|
||||||
lt_cv_sys_max_cmd_len=8192;
|
|
||||||
;;
|
|
||||||
|
|
||||||
amigaos*)
|
amigaos*)
|
||||||
# On AmigaOS with pdksh, this test takes hours, literally.
|
# On AmigaOS with pdksh, this test takes hours, literally.
|
||||||
# So we just punt and use a minimum line length of 8192.
|
# So we just punt and use a minimum line length of 8192.
|
||||||
|
|
|
@ -72,7 +72,7 @@ XpmReadFileToBuffer(
|
||||||
*buffer_return = NULL;
|
*buffer_return = NULL;
|
||||||
|
|
||||||
#ifndef VAX11C
|
#ifndef VAX11C
|
||||||
fd = open(filename, O_RDONLY);
|
fd = open(filename, O_RDONLY | O_CLOEXEC);
|
||||||
#else
|
#else
|
||||||
fd = open(filename, O_RDONLY, NULL);
|
fd = open(filename, O_RDONLY, NULL);
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -53,7 +53,7 @@
|
||||||
LFUNC(OpenReadFile, int, (const char *filename, xpmData *mdata));
|
LFUNC(OpenReadFile, int, (const char *filename, xpmData *mdata));
|
||||||
LFUNC(xpmDataClose, void, (xpmData *mdata));
|
LFUNC(xpmDataClose, void, (xpmData *mdata));
|
||||||
|
|
||||||
FUNC(xpmPipeThrough, FILE*, (int fd,
|
HFUNC(xpmPipeThrough, FILE*, (int fd,
|
||||||
const char *cmd,
|
const char *cmd,
|
||||||
const char *arg1,
|
const char *arg1,
|
||||||
const char *mode));
|
const char *mode));
|
||||||
|
@ -212,7 +212,7 @@ OpenReadFile(
|
||||||
mdata->stream.file = (stdin);
|
mdata->stream.file = (stdin);
|
||||||
mdata->type = XPMFILE;
|
mdata->type = XPMFILE;
|
||||||
} else {
|
} else {
|
||||||
int fd = open(filename, O_RDONLY);
|
int fd = open(filename, O_RDONLY | O_CLOEXEC);
|
||||||
#if defined(NO_ZPIPE)
|
#if defined(NO_ZPIPE)
|
||||||
if ( fd < 0 )
|
if ( fd < 0 )
|
||||||
return XpmOpenFailed;
|
return XpmOpenFailed;
|
||||||
|
@ -229,11 +229,11 @@ OpenReadFile(
|
||||||
return (XpmNoMemory);
|
return (XpmNoMemory);
|
||||||
strcpy(compressfile, filename);
|
strcpy(compressfile, filename);
|
||||||
strcpy(compressfile + len, ext = ".Z");
|
strcpy(compressfile + len, ext = ".Z");
|
||||||
fd = open(compressfile, O_RDONLY);
|
fd = open(compressfile, O_RDONLY | O_CLOEXEC);
|
||||||
if ( fd < 0 )
|
if ( fd < 0 )
|
||||||
{
|
{
|
||||||
strcpy(compressfile + len, ext = ".gz");
|
strcpy(compressfile + len, ext = ".gz");
|
||||||
fd = open(compressfile, O_RDONLY);
|
fd = open(compressfile, O_RDONLY | O_CLOEXEC);
|
||||||
if ( fd < 0 )
|
if ( fd < 0 )
|
||||||
{
|
{
|
||||||
XpmFree(compressfile);
|
XpmFree(compressfile);
|
||||||
|
|
|
@ -45,7 +45,7 @@ XpmWriteFileFromBuffer(
|
||||||
char *buffer)
|
char *buffer)
|
||||||
{
|
{
|
||||||
size_t fcheck, len;
|
size_t fcheck, len;
|
||||||
FILE *fp = fopen(filename, "w");
|
FILE *fp = fopen(filename, "w" FOPEN_CLOEXEC);
|
||||||
|
|
||||||
if (!fp)
|
if (!fp)
|
||||||
return XpmOpenFailed;
|
return XpmOpenFailed;
|
||||||
|
|
|
@ -315,7 +315,7 @@ WriteExtensions(
|
||||||
|
|
||||||
|
|
||||||
#ifndef NO_ZPIPE
|
#ifndef NO_ZPIPE
|
||||||
FUNC(xpmPipeThrough, FILE*, (int fd,
|
HFUNC(xpmPipeThrough, FILE*, (int fd,
|
||||||
const char* cmd,
|
const char* cmd,
|
||||||
const char* arg1,
|
const char* arg1,
|
||||||
const char* mode));
|
const char* mode));
|
||||||
|
@ -336,7 +336,7 @@ OpenWriteFile(
|
||||||
#ifndef NO_ZPIPE
|
#ifndef NO_ZPIPE
|
||||||
size_t len;
|
size_t len;
|
||||||
#endif
|
#endif
|
||||||
int fd = open(filename, O_WRONLY|O_CREAT|O_TRUNC, 0644);
|
int fd = open(filename, O_WRONLY|O_CREAT|O_TRUNC|O_CLOEXEC, 0644);
|
||||||
if ( fd < 0 )
|
if ( fd < 0 )
|
||||||
return(XpmOpenFailed);
|
return(XpmOpenFailed);
|
||||||
#ifndef NO_ZPIPE
|
#ifndef NO_ZPIPE
|
||||||
|
|
|
@ -103,6 +103,13 @@ extern FILE *popen();
|
||||||
# endif
|
# endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef O_CLOEXEC
|
||||||
|
# define FOPEN_CLOEXEC "e"
|
||||||
|
#else
|
||||||
|
# define FOPEN_CLOEXEC ""
|
||||||
|
# define O_CLOEXEC 0
|
||||||
|
#endif
|
||||||
|
|
||||||
#define XPMMAXCMTLEN BUFSIZ
|
#define XPMMAXCMTLEN BUFSIZ
|
||||||
typedef struct {
|
typedef struct {
|
||||||
unsigned int type;
|
unsigned int type;
|
||||||
|
@ -144,7 +151,7 @@ typedef struct {
|
||||||
const char *Eoa; /* string ending assignment */
|
const char *Eoa; /* string ending assignment */
|
||||||
} xpmDataType;
|
} xpmDataType;
|
||||||
|
|
||||||
extern xpmDataType xpmDataTypes[];
|
extern _X_HIDDEN xpmDataType xpmDataTypes[];
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* rgb values and ascii names (from rgb text file) rgb values,
|
* rgb values and ascii names (from rgb text file) rgb values,
|
||||||
|
@ -158,7 +165,7 @@ typedef struct {
|
||||||
/* Maximum number of rgb mnemonics allowed in rgb text file. */
|
/* Maximum number of rgb mnemonics allowed in rgb text file. */
|
||||||
#define MAX_RGBNAMES 1024
|
#define MAX_RGBNAMES 1024
|
||||||
|
|
||||||
extern const char *xpmColorKeys[];
|
extern _X_HIDDEN const char *xpmColorKeys[];
|
||||||
|
|
||||||
#define TRANSPARENT_COLOR "None" /* this must be a string! */
|
#define TRANSPARENT_COLOR "None" /* this must be a string! */
|
||||||
|
|
||||||
|
@ -167,31 +174,31 @@ extern const char *xpmColorKeys[];
|
||||||
|
|
||||||
/* XPM internal routines */
|
/* XPM internal routines */
|
||||||
|
|
||||||
FUNC(xpmParseData, int, (xpmData *data, XpmImage *image, XpmInfo *info));
|
HFUNC(xpmParseData, int, (xpmData *data, XpmImage *image, XpmInfo *info));
|
||||||
FUNC(xpmParseDataAndCreate, int, (Display *display, xpmData *data,
|
HFUNC(xpmParseDataAndCreate, int, (Display *display, xpmData *data,
|
||||||
XImage **image_return,
|
XImage **image_return,
|
||||||
XImage **shapeimage_return,
|
XImage **shapeimage_return,
|
||||||
XpmImage *image, XpmInfo *info,
|
XpmImage *image, XpmInfo *info,
|
||||||
XpmAttributes *attributes));
|
XpmAttributes *attributes));
|
||||||
|
|
||||||
FUNC(xpmFreeColorTable, void, (XpmColor *colorTable, int ncolors));
|
HFUNC(xpmFreeColorTable, void, (XpmColor *colorTable, int ncolors));
|
||||||
|
|
||||||
FUNC(xpmInitAttributes, void, (XpmAttributes *attributes));
|
HFUNC(xpmInitAttributes, void, (XpmAttributes *attributes));
|
||||||
|
|
||||||
FUNC(xpmInitXpmImage, void, (XpmImage *image));
|
HFUNC(xpmInitXpmImage, void, (XpmImage *image));
|
||||||
|
|
||||||
FUNC(xpmInitXpmInfo, void, (XpmInfo *info));
|
HFUNC(xpmInitXpmInfo, void, (XpmInfo *info));
|
||||||
|
|
||||||
FUNC(xpmSetInfoMask, void, (XpmInfo *info, XpmAttributes *attributes));
|
HFUNC(xpmSetInfoMask, void, (XpmInfo *info, XpmAttributes *attributes));
|
||||||
FUNC(xpmSetInfo, void, (XpmInfo *info, XpmAttributes *attributes));
|
HFUNC(xpmSetInfo, void, (XpmInfo *info, XpmAttributes *attributes));
|
||||||
FUNC(xpmSetAttributes, void, (XpmAttributes *attributes, XpmImage *image,
|
HFUNC(xpmSetAttributes, void, (XpmAttributes *attributes, XpmImage *image,
|
||||||
XpmInfo *info));
|
XpmInfo *info));
|
||||||
|
|
||||||
#if !defined(FOR_MSW) && !defined(AMIGA)
|
#if !defined(FOR_MSW) && !defined(AMIGA)
|
||||||
FUNC(xpmCreatePixmapFromImage, int, (Display *display, Drawable d,
|
HFUNC(xpmCreatePixmapFromImage, int, (Display *display, Drawable d,
|
||||||
XImage *ximage, Pixmap *pixmap_return));
|
XImage *ximage, Pixmap *pixmap_return));
|
||||||
|
|
||||||
FUNC(xpmCreateImageFromPixmap, void, (Display *display, Pixmap pixmap,
|
HFUNC(xpmCreateImageFromPixmap, void, (Display *display, Pixmap pixmap,
|
||||||
XImage **ximage_return,
|
XImage **ximage_return,
|
||||||
unsigned int *width,
|
unsigned int *width,
|
||||||
unsigned int *height));
|
unsigned int *height));
|
||||||
|
@ -211,10 +218,10 @@ typedef struct {
|
||||||
xpmHashAtom *atomTable;
|
xpmHashAtom *atomTable;
|
||||||
} xpmHashTable;
|
} xpmHashTable;
|
||||||
|
|
||||||
FUNC(xpmHashTableInit, int, (xpmHashTable *table));
|
HFUNC(xpmHashTableInit, int, (xpmHashTable *table));
|
||||||
FUNC(xpmHashTableFree, void, (xpmHashTable *table));
|
HFUNC(xpmHashTableFree, void, (xpmHashTable *table));
|
||||||
FUNC(xpmHashSlot, xpmHashAtom *, (xpmHashTable *table, char *s));
|
HFUNC(xpmHashSlot, xpmHashAtom *, (xpmHashTable *table, char *s));
|
||||||
FUNC(xpmHashIntern, int, (xpmHashTable *table, char *tag, void *data));
|
HFUNC(xpmHashIntern, int, (xpmHashTable *table, char *tag, void *data));
|
||||||
|
|
||||||
#if defined(_MSC_VER) && defined(_M_X64)
|
#if defined(_MSC_VER) && defined(_M_X64)
|
||||||
#define HashAtomData(i) ((void *)(long long)i)
|
#define HashAtomData(i) ((void *)(long long)i)
|
||||||
|
@ -227,45 +234,45 @@ FUNC(xpmHashIntern, int, (xpmHashTable *table, char *tag, void *data));
|
||||||
|
|
||||||
/* I/O utility */
|
/* I/O utility */
|
||||||
|
|
||||||
FUNC(xpmNextString, int, (xpmData *mdata));
|
HFUNC(xpmNextString, int, (xpmData *mdata));
|
||||||
FUNC(xpmNextUI, int, (xpmData *mdata, unsigned int *ui_return));
|
HFUNC(xpmNextUI, int, (xpmData *mdata, unsigned int *ui_return));
|
||||||
FUNC(xpmGetString, int, (xpmData *mdata, char **sptr, unsigned int *l));
|
HFUNC(xpmGetString, int, (xpmData *mdata, char **sptr, unsigned int *l));
|
||||||
|
|
||||||
#define xpmGetC(mdata) \
|
#define xpmGetC(mdata) \
|
||||||
((!mdata->type || mdata->type == XPMBUFFER) ? \
|
((!mdata->type || mdata->type == XPMBUFFER) ? \
|
||||||
(*mdata->cptr++) : (getc(mdata->stream.file)))
|
(*mdata->cptr++) : (getc(mdata->stream.file)))
|
||||||
|
|
||||||
FUNC(xpmNextWord, unsigned int,
|
HFUNC(xpmNextWord, unsigned int,
|
||||||
(xpmData *mdata, char *buf, unsigned int buflen));
|
(xpmData *mdata, char *buf, unsigned int buflen));
|
||||||
FUNC(xpmGetCmt, int, (xpmData *mdata, char **cmt));
|
HFUNC(xpmGetCmt, int, (xpmData *mdata, char **cmt));
|
||||||
FUNC(xpmParseHeader, int, (xpmData *mdata));
|
HFUNC(xpmParseHeader, int, (xpmData *mdata));
|
||||||
FUNC(xpmParseValues, int, (xpmData *data, unsigned int *width,
|
HFUNC(xpmParseValues, int, (xpmData *data, unsigned int *width,
|
||||||
unsigned int *height, unsigned int *ncolors,
|
unsigned int *height, unsigned int *ncolors,
|
||||||
unsigned int *cpp, unsigned int *x_hotspot,
|
unsigned int *cpp, unsigned int *x_hotspot,
|
||||||
unsigned int *y_hotspot, unsigned int *hotspot,
|
unsigned int *y_hotspot, unsigned int *hotspot,
|
||||||
unsigned int *extensions));
|
unsigned int *extensions));
|
||||||
|
|
||||||
FUNC(xpmParseColors, int, (xpmData *data, unsigned int ncolors,
|
HFUNC(xpmParseColors, int, (xpmData *data, unsigned int ncolors,
|
||||||
unsigned int cpp, XpmColor **colorTablePtr,
|
unsigned int cpp, XpmColor **colorTablePtr,
|
||||||
xpmHashTable *hashtable));
|
xpmHashTable *hashtable));
|
||||||
|
|
||||||
FUNC(xpmParseExtensions, int, (xpmData *data, XpmExtension **extensions,
|
HFUNC(xpmParseExtensions, int, (xpmData *data, XpmExtension **extensions,
|
||||||
unsigned int *nextensions));
|
unsigned int *nextensions));
|
||||||
|
|
||||||
/* RGB utility */
|
/* RGB utility */
|
||||||
|
|
||||||
FUNC(xpmReadRgbNames, int, (const char *rgb_fname, xpmRgbName *rgbn));
|
HFUNC(xpmReadRgbNames, int, (const char *rgb_fname, xpmRgbName *rgbn));
|
||||||
FUNC(xpmGetRgbName, char *, (xpmRgbName *rgbn, int rgbn_max,
|
HFUNC(xpmGetRgbName, char *, (xpmRgbName *rgbn, int rgbn_max,
|
||||||
int red, int green, int blue));
|
int red, int green, int blue));
|
||||||
FUNC(xpmFreeRgbNames, void, (xpmRgbName *rgbn, int rgbn_max));
|
HFUNC(xpmFreeRgbNames, void, (xpmRgbName *rgbn, int rgbn_max));
|
||||||
#ifdef FOR_MSW
|
#ifdef FOR_MSW
|
||||||
FUNC(xpmGetRGBfromName,int, (char *name, int *r, int *g, int *b));
|
HFUNC(xpmGetRGBfromName,int, (char *name, int *r, int *g, int *b));
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifndef AMIGA
|
#ifndef AMIGA
|
||||||
FUNC(xpm_xynormalizeimagebits, void, (register unsigned char *bp,
|
HFUNC(xpm_xynormalizeimagebits, void, (register unsigned char *bp,
|
||||||
register XImage *img));
|
register XImage *img));
|
||||||
FUNC(xpm_znormalizeimagebits, void, (register unsigned char *bp,
|
HFUNC(xpm_znormalizeimagebits, void, (register unsigned char *bp,
|
||||||
register XImage *img));
|
register XImage *img));
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -313,7 +320,7 @@ FUNC(xpm_znormalizeimagebits, void, (register unsigned char *bp,
|
||||||
#endif /* not AMIGA */
|
#endif /* not AMIGA */
|
||||||
|
|
||||||
#ifdef NEED_STRDUP
|
#ifdef NEED_STRDUP
|
||||||
FUNC(xpmstrdup, char *, (char *s1));
|
HFUNC(xpmstrdup, char *, (char *s1));
|
||||||
#else
|
#else
|
||||||
#undef xpmstrdup
|
#undef xpmstrdup
|
||||||
#define xpmstrdup strdup
|
#define xpmstrdup strdup
|
||||||
|
@ -321,14 +328,14 @@ FUNC(xpmstrdup, char *, (char *s1));
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef NEED_STRCASECMP
|
#ifdef NEED_STRCASECMP
|
||||||
FUNC(xpmstrcasecmp, int, (char *s1, char *s2));
|
HFUNC(xpmstrcasecmp, int, (char *s1, char *s2));
|
||||||
#else
|
#else
|
||||||
#undef xpmstrcasecmp
|
#undef xpmstrcasecmp
|
||||||
#define xpmstrcasecmp strcasecmp
|
#define xpmstrcasecmp strcasecmp
|
||||||
#include <strings.h>
|
#include <strings.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
FUNC(xpmatoui, unsigned int,
|
HFUNC(xpmatoui, unsigned int,
|
||||||
(char *p, unsigned int l, unsigned int *ui_return));
|
(char *p, unsigned int l, unsigned int *ui_return));
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -66,7 +66,7 @@ xpmReadRgbNames(
|
||||||
xpmRgbName *rgb;
|
xpmRgbName *rgb;
|
||||||
|
|
||||||
/* Open the rgb text file. Abort if error. */
|
/* Open the rgb text file. Abort if error. */
|
||||||
if ((rgbf = fopen(rgb_fname, "r")) == NULL)
|
if ((rgbf = fopen(rgb_fname, "r" FOPEN_CLOEXEC)) == NULL)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
/* Loop reading each line in the file. */
|
/* Loop reading each line in the file. */
|
||||||
|
|
|
@ -32,6 +32,12 @@
|
||||||
|
|
||||||
#include "config.h"
|
#include "config.h"
|
||||||
|
|
||||||
|
/* g_pattern_spec_match_string is available in glib 2.70 and later,
|
||||||
|
to replace the deprecated g_pattern_match_string */
|
||||||
|
#ifdef HAVE_G_PATTERN_SPEC_MATCH_STRING
|
||||||
|
#define g_pattern_match_string g_pattern_spec_match_string
|
||||||
|
#endif
|
||||||
|
|
||||||
#define DEFAULT_TIMEOUT 10 /* maximum seconds for each file */
|
#define DEFAULT_TIMEOUT 10 /* maximum seconds for each file */
|
||||||
|
|
||||||
static sigjmp_buf jump_env;
|
static sigjmp_buf jump_env;
|
||||||
|
|
|
@ -33,6 +33,10 @@
|
||||||
|
|
||||||
#include "TestAllFiles.h"
|
#include "TestAllFiles.h"
|
||||||
|
|
||||||
|
#ifndef O_CLOEXEC
|
||||||
|
# define O_CLOEXEC 0
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifndef g_assert_no_errno /* defined in glib 2.66 & later */
|
#ifndef g_assert_no_errno /* defined in glib 2.66 & later */
|
||||||
#define g_assert_no_errno(n) g_assert_cmpint(n, >=, 0)
|
#define g_assert_no_errno(n) g_assert_cmpint(n, >=, 0)
|
||||||
#endif
|
#endif
|
||||||
|
@ -147,7 +151,7 @@ TestReadFileToBuffer(const gchar *filepath)
|
||||||
g_assert_nonnull(buffer);
|
g_assert_nonnull(buffer);
|
||||||
|
|
||||||
/* Read file ourselves and verify the data matches */
|
/* Read file ourselves and verify the data matches */
|
||||||
g_assert_no_errno(fd = open(filepath, O_RDONLY));
|
g_assert_no_errno(fd = open(filepath, O_RDONLY | O_CLOEXEC));
|
||||||
while ((rd = read(fd, readbuf, sizeof(readbuf))) > 0) {
|
while ((rd = read(fd, readbuf, sizeof(readbuf))) > 0) {
|
||||||
g_assert_cmpmem(b, rd, readbuf, rd);
|
g_assert_cmpmem(b, rd, readbuf, rd);
|
||||||
b += rd;
|
b += rd;
|
||||||
|
|
|
@ -38,6 +38,10 @@
|
||||||
#include "TestAllFiles.h"
|
#include "TestAllFiles.h"
|
||||||
#include "CompareXpmImage.h"
|
#include "CompareXpmImage.h"
|
||||||
|
|
||||||
|
#ifndef O_CLOEXEC
|
||||||
|
# define O_CLOEXEC 0
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifndef g_assert_no_errno /* defined in glib 2.66 & later */
|
#ifndef g_assert_no_errno /* defined in glib 2.66 & later */
|
||||||
#define g_assert_no_errno(n) g_assert_cmpint(n, >=, 0)
|
#define g_assert_no_errno(n) g_assert_cmpint(n, >=, 0)
|
||||||
#endif
|
#endif
|
||||||
|
@ -295,7 +299,7 @@ TestWriteFileFromBuffer(const gchar *filepath)
|
||||||
ssize_t rd;
|
ssize_t rd;
|
||||||
|
|
||||||
/* Read file ourselves and verify the data matches */
|
/* Read file ourselves and verify the data matches */
|
||||||
g_assert_no_errno(fd = open(newfilepath, O_RDONLY));
|
g_assert_no_errno(fd = open(newfilepath, O_RDONLY | O_CLOEXEC));
|
||||||
while ((rd = read(fd, readbuf, sizeof(readbuf))) > 0) {
|
while ((rd = read(fd, readbuf, sizeof(readbuf))) > 0) {
|
||||||
g_assert_cmpmem(b, rd, readbuf, rd);
|
g_assert_cmpmem(b, rd, readbuf, rd);
|
||||||
b += rd;
|
b += rd;
|
||||||
|
|
|
@ -23,7 +23,7 @@
|
||||||
|
|
||||||
#include "config.h"
|
#include "config.h"
|
||||||
|
|
||||||
#include "../src/XpmI.h"
|
#include "../src/rgb.c"
|
||||||
#include <glib.h>
|
#include <glib.h>
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
|
@ -730,7 +730,7 @@ XIChangeDeviceProperty(DeviceIntPtr dev, Atom property, Atom type,
|
||||||
XIDestroyDeviceProperty(prop);
|
XIDestroyDeviceProperty(prop);
|
||||||
return BadAlloc;
|
return BadAlloc;
|
||||||
}
|
}
|
||||||
new_value.size = len;
|
new_value.size = total_len;
|
||||||
new_value.type = type;
|
new_value.type = type;
|
||||||
new_value.format = format;
|
new_value.format = format;
|
||||||
|
|
||||||
|
@ -747,7 +747,7 @@ XIChangeDeviceProperty(DeviceIntPtr dev, Atom property, Atom type,
|
||||||
case PropModePrepend:
|
case PropModePrepend:
|
||||||
new_data = new_value.data;
|
new_data = new_value.data;
|
||||||
old_data = (void *) (((char *) new_value.data) +
|
old_data = (void *) (((char *) new_value.data) +
|
||||||
(prop_value->size * size_in_bytes));
|
(len * size_in_bytes));
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if (new_data)
|
if (new_data)
|
||||||
|
|
|
@ -58,8 +58,6 @@ extern void DeviceFocusEvent(DeviceIntPtr dev,
|
||||||
|
|
||||||
extern void EnterWindow(DeviceIntPtr dev, WindowPtr win, int mode);
|
extern void EnterWindow(DeviceIntPtr dev, WindowPtr win, int mode);
|
||||||
|
|
||||||
extern void LeaveWindow(DeviceIntPtr dev);
|
|
||||||
|
|
||||||
extern void CoreFocusEvent(DeviceIntPtr kbd,
|
extern void CoreFocusEvent(DeviceIntPtr kbd,
|
||||||
int type, int mode, int detail, WindowPtr pWin);
|
int type, int mode, int detail, WindowPtr pWin);
|
||||||
|
|
||||||
|
|
|
@ -410,6 +410,7 @@ typedef struct {
|
||||||
#endif
|
#endif
|
||||||
DevPrivateKeyRec gcPrivateKeyRec;
|
DevPrivateKeyRec gcPrivateKeyRec;
|
||||||
DevPrivateKeyRec winPrivateKeyRec;
|
DevPrivateKeyRec winPrivateKeyRec;
|
||||||
|
CloseScreenProcPtr CloseScreen;
|
||||||
} FbScreenPrivRec, *FbScreenPrivPtr;
|
} FbScreenPrivRec, *FbScreenPrivPtr;
|
||||||
|
|
||||||
#define fbGetScreenPrivate(pScreen) ((FbScreenPrivPtr) \
|
#define fbGetScreenPrivate(pScreen) ((FbScreenPrivPtr) \
|
||||||
|
|
|
@ -29,6 +29,7 @@
|
||||||
Bool
|
Bool
|
||||||
fbCloseScreen(ScreenPtr pScreen)
|
fbCloseScreen(ScreenPtr pScreen)
|
||||||
{
|
{
|
||||||
|
FbScreenPrivPtr screen_priv = fbGetScreenPrivate(pScreen);
|
||||||
int d;
|
int d;
|
||||||
DepthPtr depths = pScreen->allowedDepths;
|
DepthPtr depths = pScreen->allowedDepths;
|
||||||
|
|
||||||
|
@ -37,9 +38,10 @@ fbCloseScreen(ScreenPtr pScreen)
|
||||||
free(depths[d].vids);
|
free(depths[d].vids);
|
||||||
free(depths);
|
free(depths);
|
||||||
free(pScreen->visuals);
|
free(pScreen->visuals);
|
||||||
if (pScreen->devPrivate)
|
|
||||||
FreePixmap((PixmapPtr)pScreen->devPrivate);
|
pScreen->CloseScreen = screen_priv->CloseScreen;
|
||||||
return TRUE;
|
|
||||||
|
return pScreen->CloseScreen(pScreen);
|
||||||
}
|
}
|
||||||
|
|
||||||
Bool
|
Bool
|
||||||
|
@ -144,6 +146,7 @@ fbFinishScreenInit(ScreenPtr pScreen, void *pbits, int xsize, int ysize,
|
||||||
int dpix, int dpiy, int width, int bpp)
|
int dpix, int dpiy, int width, int bpp)
|
||||||
#endif
|
#endif
|
||||||
{
|
{
|
||||||
|
FbScreenPrivPtr screen_priv;
|
||||||
VisualPtr visuals;
|
VisualPtr visuals;
|
||||||
DepthPtr depths;
|
DepthPtr depths;
|
||||||
int nvisuals;
|
int nvisuals;
|
||||||
|
@ -177,8 +180,11 @@ fbFinishScreenInit(ScreenPtr pScreen, void *pbits, int xsize, int ysize,
|
||||||
rootdepth, ndepths, depths,
|
rootdepth, ndepths, depths,
|
||||||
defaultVisual, nvisuals, visuals))
|
defaultVisual, nvisuals, visuals))
|
||||||
return FALSE;
|
return FALSE;
|
||||||
/* overwrite miCloseScreen with our own */
|
|
||||||
|
screen_priv = fbGetScreenPrivate(pScreen);
|
||||||
|
screen_priv->CloseScreen = pScreen->CloseScreen;
|
||||||
pScreen->CloseScreen = fbCloseScreen;
|
pScreen->CloseScreen = fbCloseScreen;
|
||||||
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -727,13 +727,6 @@ vfbCloseScreen(ScreenPtr pScreen)
|
||||||
|
|
||||||
pScreen->CloseScreen = pvfb->closeScreen;
|
pScreen->CloseScreen = pvfb->closeScreen;
|
||||||
|
|
||||||
/*
|
|
||||||
* fb overwrites miCloseScreen, so do this here
|
|
||||||
*/
|
|
||||||
if (pScreen->devPrivate)
|
|
||||||
(*pScreen->DestroyPixmap) (pScreen->devPrivate);
|
|
||||||
pScreen->devPrivate = NULL;
|
|
||||||
|
|
||||||
return pScreen->CloseScreen(pScreen);
|
return pScreen->CloseScreen(pScreen);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -335,4 +335,7 @@ union _InternalEvent {
|
||||||
GestureEvent gesture_event;
|
GestureEvent gesture_event;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
extern void
|
||||||
|
LeaveWindow(DeviceIntPtr dev);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -397,9 +397,22 @@ miPointerWarpCursor(DeviceIntPtr pDev, ScreenPtr pScreen, int x, int y)
|
||||||
#ifdef PANORAMIX
|
#ifdef PANORAMIX
|
||||||
&& noPanoramiXExtension
|
&& noPanoramiXExtension
|
||||||
#endif
|
#endif
|
||||||
)
|
) {
|
||||||
|
DeviceIntPtr master = GetMaster(pDev, MASTER_POINTER);
|
||||||
|
/* Hack for CVE-2023-5380: if we're moving
|
||||||
|
* screens PointerWindows[] keeps referring to the
|
||||||
|
* old window. If that gets destroyed we have a UAF
|
||||||
|
* bug later. Only happens when jumping from a window
|
||||||
|
* to the root window on the other screen.
|
||||||
|
* Enter/Leave events are incorrect for that case but
|
||||||
|
* too niche to fix.
|
||||||
|
*/
|
||||||
|
LeaveWindow(pDev);
|
||||||
|
if (master)
|
||||||
|
LeaveWindow(master);
|
||||||
UpdateSpriteForScreen(pDev, pScreen);
|
UpdateSpriteForScreen(pDev, pScreen);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Synchronize the sprite with the cursor.
|
* Synchronize the sprite with the cursor.
|
||||||
|
|
|
@ -249,10 +249,10 @@ miScreenInit(ScreenPtr pScreen, void *pbits, /* pointer to screen bits */
|
||||||
pScreen->numVisuals = numVisuals;
|
pScreen->numVisuals = numVisuals;
|
||||||
pScreen->visuals = visuals;
|
pScreen->visuals = visuals;
|
||||||
if (width) {
|
if (width) {
|
||||||
|
pScreen->CloseScreen = miCloseScreen;
|
||||||
#ifdef MITSHM
|
#ifdef MITSHM
|
||||||
ShmRegisterFbFuncs(pScreen);
|
ShmRegisterFbFuncs(pScreen);
|
||||||
#endif
|
#endif
|
||||||
pScreen->CloseScreen = miCloseScreen;
|
|
||||||
}
|
}
|
||||||
/* else CloseScreen */
|
/* else CloseScreen */
|
||||||
/* QueryBestSize */
|
/* QueryBestSize */
|
||||||
|
|
|
@ -209,7 +209,7 @@ RRChangeOutputProperty(RROutputPtr output, Atom property, Atom type,
|
||||||
RRDestroyOutputProperty(prop);
|
RRDestroyOutputProperty(prop);
|
||||||
return BadAlloc;
|
return BadAlloc;
|
||||||
}
|
}
|
||||||
new_value.size = len;
|
new_value.size = total_len;
|
||||||
new_value.type = type;
|
new_value.type = type;
|
||||||
new_value.format = format;
|
new_value.format = format;
|
||||||
|
|
||||||
|
@ -226,7 +226,7 @@ RRChangeOutputProperty(RROutputPtr output, Atom property, Atom type,
|
||||||
case PropModePrepend:
|
case PropModePrepend:
|
||||||
new_data = new_value.data;
|
new_data = new_value.data;
|
||||||
old_data = (void *) (((char *) new_value.data) +
|
old_data = (void *) (((char *) new_value.data) +
|
||||||
(prop_value->size * size_in_bytes));
|
(len * size_in_bytes));
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if (new_data)
|
if (new_data)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue