sync code with last improvements from OpenBSD

This commit is contained in:
purplerain 2023-10-26 22:50:19 +00:00
parent e1ec829e63
commit 68fa196282
Signed by: purplerain
GPG Key ID: F42C07F07E2E35B7
30 changed files with 268 additions and 1060 deletions

2
.gitignore vendored
View File

@ -1,3 +1 @@
**/obj
**/tags
**/CVS

View File

@ -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
Version: 2.13.0
@ -9,25 +9,25 @@ Archive Site: http://download.savannah.gnu.org/releases/freetype/
Package: xterm
Version: 378
Current Vers: 383
Current Vers: 385
Maintainer: Thomas E. Dickey
Archive Site: http://invisible-island.net/xterm/xterm.html
Archive Site: https://invisible-island.net/xterm/xterm.html
Package: Mesa
Version 22.3.7
Current Vers: 23.1.2
Current Vers: 23.1.7
Maintainer: Brian Paul
Archive Site: https://archive.mesa3d.org/
Package: libdrm
Version: 2.4.115
Current Vers: 2.4.115
Current Vers: 2.4.116
Maintainer: Freedesktop.org
Archive Site: https://dri.freedesktop.org/libdrm/
Package: libGLU
Version: 9.0.1
Current Vers: 9.0.2
Current Vers: 9.0.3
Maintainer: Matt Turner
Archive Site: https://archive.mesa3d.org/glu/

22
MODULES
View File

@ -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
#
@ -8,7 +8,7 @@ app/bdftopcf 1.1.1
app/beforelight 1.0.6
app/bitmap 1.1.0
app/editres 1.0.8
app/fonttosfnt 1.2.2
app/fonttosfnt 1.2.3 needs-update
app/iceauth 1.0.9
app/ico 1.0.6
app/listres 1.0.5
@ -36,7 +36,7 @@ app/xdpyinfo 1.3.4
app/xdriinfo 1.0.7
app/xedit 1.2.3
app/xev 1.2.5
app/xeyes 1.2.0
app/xeyes 1.3.0 needs-update
app/xf86dga 1.0.3
app/xfd 1.1.4
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-r128 6.12.1
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-vesa 2.6.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/sony-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/xfree86-type1 1.0.5
lib/libICE 1.1.1
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/libXau 1.0.11
lib/libXaw 1.0.15
@ -164,9 +164,9 @@ lib/libXft 2.3.8
lib/libXi 1.8.1
lib/libXinerama 1.1.5
lib/libXmu 1.1.4
lib/libXpm 3.5.16
lib/libXpm 3.5.17 needs-update
lib/libXpresent 1.0.1
lib/libXrandr 1.5.3
lib/libXrandr 1.5.4 needs-update
lib/libXrender 0.9.11
lib/libXres 1.2.2
lib/libXt 1.3.0
@ -177,7 +177,7 @@ lib/libXxf86dga 1.1.6
lib/libXxf86vm 1.1.5
lib/libfontenc 1.1.7
lib/libpciaccess 0.17
lib/libxcb 1.15
lib/libxcb 1.16 needs-update
lib/libxcvt 0.1.2
lib/libxkbfile 1.1.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-wm 0.4.2
proto/xcb-proto 1.15.2
proto/xorgproto 2023.1 needs-update
proto/xcb-proto 1.16.0 needs-update
proto/xorgproto 2023.2 needs-update
util/cf 1.0.4
util/gccmakedep 1.0.3

View File

@ -225,10 +225,10 @@
./usr/X11R6/lib/libXau.la
./usr/X11R6/lib/libXau.so.10.0
./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.la
./usr/X11R6/lib/libXaw7.so.15.0
./usr/X11R6/lib/libXaw7.so.16.0
./usr/X11R6/lib/libXcomposite.a
./usr/X11R6/lib/libXcomposite.la
./usr/X11R6/lib/libXcomposite.so.4.0
@ -267,7 +267,7 @@
./usr/X11R6/lib/libXmuu.so.6.0
./usr/X11R6/lib/libXpm.a
./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.la
./usr/X11R6/lib/libXpresent.so.1.0

View File

@ -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
@ -9,10 +9,10 @@ afterinstall:
(cd $(DESTDIR)$(LIBDIR) && ln -s libXaw7.a libXaw.a && \
chown -h $(BINOWN):$(BINGRP) libXaw.a )
# 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
(cd $(DESTDIR)$(LIBDIR) && ln -s libXaw7.so.15.0 libXaw.so.15.0 && \
chown -h $(BINOWN):$(BINGRP) libXaw.so.15.0)
(cd $(DESTDIR)$(LIBDIR) && ln -s libXaw7.so.16.0 libXaw.so.16.0 && \
chown -h $(BINOWN):$(BINGRP) libXaw.so.16.0)
.include <bsd.xorg.mk>
.include <bsd.own.mk>

View File

@ -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.

View File

@ -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
Author: Matt Turner <mattst88@gmail.com>
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
an -ansi environment.
Notes:
Fixes CVE-2004-0687 (integer overflows) and CVE-2004-0688 (stack overflows)
commit 2773a7214e282f6f673483f5233b880505947c3f
Author: Egbert Eich <eich@suse.de>
Date: Fri Apr 23 18:42:32 2004 +0000

View File

@ -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

View File

@ -1,7 +1,7 @@
# Initialize Autoconf
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])
AC_CONFIG_SRCDIR([Makefile.am])
AC_CONFIG_HEADERS([config.h])
@ -103,6 +103,9 @@ fi
AC_REQUIRE_AUX_FILE([tap-driver.sh])
XORG_ENABLE_UNIT_TESTS
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
AC_CONFIG_FILES([Makefile

View File

@ -73,6 +73,7 @@
# ifdef AMIGA
# include "amigax.h"
# else /* not AMIGA */
# include <X11/Xfuncproto.h>
# include <X11/Xlib.h>
# include <X11/Xutil.h>
# endif /* not AMIGA */
@ -275,7 +276,12 @@ typedef struct {
/* 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

View File

@ -1627,11 +1627,6 @@ AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl
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*)
# On AmigaOS with pdksh, this test takes hours, literally.
# So we just punt and use a minimum line length of 8192.

View File

@ -72,7 +72,7 @@ XpmReadFileToBuffer(
*buffer_return = NULL;
#ifndef VAX11C
fd = open(filename, O_RDONLY);
fd = open(filename, O_RDONLY | O_CLOEXEC);
#else
fd = open(filename, O_RDONLY, NULL);
#endif

View File

@ -53,7 +53,7 @@
LFUNC(OpenReadFile, int, (const char *filename, xpmData *mdata));
LFUNC(xpmDataClose, void, (xpmData *mdata));
FUNC(xpmPipeThrough, FILE*, (int fd,
HFUNC(xpmPipeThrough, FILE*, (int fd,
const char *cmd,
const char *arg1,
const char *mode));
@ -212,7 +212,7 @@ OpenReadFile(
mdata->stream.file = (stdin);
mdata->type = XPMFILE;
} else {
int fd = open(filename, O_RDONLY);
int fd = open(filename, O_RDONLY | O_CLOEXEC);
#if defined(NO_ZPIPE)
if ( fd < 0 )
return XpmOpenFailed;
@ -229,11 +229,11 @@ OpenReadFile(
return (XpmNoMemory);
strcpy(compressfile, filename);
strcpy(compressfile + len, ext = ".Z");
fd = open(compressfile, O_RDONLY);
fd = open(compressfile, O_RDONLY | O_CLOEXEC);
if ( fd < 0 )
{
strcpy(compressfile + len, ext = ".gz");
fd = open(compressfile, O_RDONLY);
fd = open(compressfile, O_RDONLY | O_CLOEXEC);
if ( fd < 0 )
{
XpmFree(compressfile);

View File

@ -45,7 +45,7 @@ XpmWriteFileFromBuffer(
char *buffer)
{
size_t fcheck, len;
FILE *fp = fopen(filename, "w");
FILE *fp = fopen(filename, "w" FOPEN_CLOEXEC);
if (!fp)
return XpmOpenFailed;

View File

@ -315,7 +315,7 @@ WriteExtensions(
#ifndef NO_ZPIPE
FUNC(xpmPipeThrough, FILE*, (int fd,
HFUNC(xpmPipeThrough, FILE*, (int fd,
const char* cmd,
const char* arg1,
const char* mode));
@ -336,7 +336,7 @@ OpenWriteFile(
#ifndef NO_ZPIPE
size_t len;
#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 )
return(XpmOpenFailed);
#ifndef NO_ZPIPE

View File

@ -103,6 +103,13 @@ extern FILE *popen();
# endif
#endif
#ifdef O_CLOEXEC
# define FOPEN_CLOEXEC "e"
#else
# define FOPEN_CLOEXEC ""
# define O_CLOEXEC 0
#endif
#define XPMMAXCMTLEN BUFSIZ
typedef struct {
unsigned int type;
@ -144,7 +151,7 @@ typedef struct {
const char *Eoa; /* string ending assignment */
} xpmDataType;
extern xpmDataType xpmDataTypes[];
extern _X_HIDDEN xpmDataType xpmDataTypes[];
/*
* 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. */
#define MAX_RGBNAMES 1024
extern const char *xpmColorKeys[];
extern _X_HIDDEN const char *xpmColorKeys[];
#define TRANSPARENT_COLOR "None" /* this must be a string! */
@ -167,31 +174,31 @@ extern const char *xpmColorKeys[];
/* XPM internal routines */
FUNC(xpmParseData, int, (xpmData *data, XpmImage *image, XpmInfo *info));
FUNC(xpmParseDataAndCreate, int, (Display *display, xpmData *data,
HFUNC(xpmParseData, int, (xpmData *data, XpmImage *image, XpmInfo *info));
HFUNC(xpmParseDataAndCreate, int, (Display *display, xpmData *data,
XImage **image_return,
XImage **shapeimage_return,
XpmImage *image, XpmInfo *info,
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));
FUNC(xpmSetInfo, void, (XpmInfo *info, XpmAttributes *attributes));
FUNC(xpmSetAttributes, void, (XpmAttributes *attributes, XpmImage *image,
HFUNC(xpmSetInfoMask, void, (XpmInfo *info, XpmAttributes *attributes));
HFUNC(xpmSetInfo, void, (XpmInfo *info, XpmAttributes *attributes));
HFUNC(xpmSetAttributes, void, (XpmAttributes *attributes, XpmImage *image,
XpmInfo *info));
#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));
FUNC(xpmCreateImageFromPixmap, void, (Display *display, Pixmap pixmap,
HFUNC(xpmCreateImageFromPixmap, void, (Display *display, Pixmap pixmap,
XImage **ximage_return,
unsigned int *width,
unsigned int *height));
@ -211,10 +218,10 @@ typedef struct {
xpmHashAtom *atomTable;
} xpmHashTable;
FUNC(xpmHashTableInit, int, (xpmHashTable *table));
FUNC(xpmHashTableFree, void, (xpmHashTable *table));
FUNC(xpmHashSlot, xpmHashAtom *, (xpmHashTable *table, char *s));
FUNC(xpmHashIntern, int, (xpmHashTable *table, char *tag, void *data));
HFUNC(xpmHashTableInit, int, (xpmHashTable *table));
HFUNC(xpmHashTableFree, void, (xpmHashTable *table));
HFUNC(xpmHashSlot, xpmHashAtom *, (xpmHashTable *table, char *s));
HFUNC(xpmHashIntern, int, (xpmHashTable *table, char *tag, void *data));
#if defined(_MSC_VER) && defined(_M_X64)
#define HashAtomData(i) ((void *)(long long)i)
@ -227,45 +234,45 @@ FUNC(xpmHashIntern, int, (xpmHashTable *table, char *tag, void *data));
/* I/O utility */
FUNC(xpmNextString, int, (xpmData *mdata));
FUNC(xpmNextUI, int, (xpmData *mdata, unsigned int *ui_return));
FUNC(xpmGetString, int, (xpmData *mdata, char **sptr, unsigned int *l));
HFUNC(xpmNextString, int, (xpmData *mdata));
HFUNC(xpmNextUI, int, (xpmData *mdata, unsigned int *ui_return));
HFUNC(xpmGetString, int, (xpmData *mdata, char **sptr, unsigned int *l));
#define xpmGetC(mdata) \
((!mdata->type || mdata->type == XPMBUFFER) ? \
(*mdata->cptr++) : (getc(mdata->stream.file)))
FUNC(xpmNextWord, unsigned int,
HFUNC(xpmNextWord, unsigned int,
(xpmData *mdata, char *buf, unsigned int buflen));
FUNC(xpmGetCmt, int, (xpmData *mdata, char **cmt));
FUNC(xpmParseHeader, int, (xpmData *mdata));
FUNC(xpmParseValues, int, (xpmData *data, unsigned int *width,
HFUNC(xpmGetCmt, int, (xpmData *mdata, char **cmt));
HFUNC(xpmParseHeader, int, (xpmData *mdata));
HFUNC(xpmParseValues, int, (xpmData *data, unsigned int *width,
unsigned int *height, unsigned int *ncolors,
unsigned int *cpp, unsigned int *x_hotspot,
unsigned int *y_hotspot, unsigned int *hotspot,
unsigned int *extensions));
FUNC(xpmParseColors, int, (xpmData *data, unsigned int ncolors,
HFUNC(xpmParseColors, int, (xpmData *data, unsigned int ncolors,
unsigned int cpp, XpmColor **colorTablePtr,
xpmHashTable *hashtable));
FUNC(xpmParseExtensions, int, (xpmData *data, XpmExtension **extensions,
HFUNC(xpmParseExtensions, int, (xpmData *data, XpmExtension **extensions,
unsigned int *nextensions));
/* RGB utility */
FUNC(xpmReadRgbNames, int, (const char *rgb_fname, xpmRgbName *rgbn));
FUNC(xpmGetRgbName, char *, (xpmRgbName *rgbn, int rgbn_max,
HFUNC(xpmReadRgbNames, int, (const char *rgb_fname, xpmRgbName *rgbn));
HFUNC(xpmGetRgbName, char *, (xpmRgbName *rgbn, int rgbn_max,
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
FUNC(xpmGetRGBfromName,int, (char *name, int *r, int *g, int *b));
HFUNC(xpmGetRGBfromName,int, (char *name, int *r, int *g, int *b));
#endif
#ifndef AMIGA
FUNC(xpm_xynormalizeimagebits, void, (register unsigned char *bp,
HFUNC(xpm_xynormalizeimagebits, void, (register unsigned char *bp,
register XImage *img));
FUNC(xpm_znormalizeimagebits, void, (register unsigned char *bp,
HFUNC(xpm_znormalizeimagebits, void, (register unsigned char *bp,
register XImage *img));
/*
@ -313,7 +320,7 @@ FUNC(xpm_znormalizeimagebits, void, (register unsigned char *bp,
#endif /* not AMIGA */
#ifdef NEED_STRDUP
FUNC(xpmstrdup, char *, (char *s1));
HFUNC(xpmstrdup, char *, (char *s1));
#else
#undef xpmstrdup
#define xpmstrdup strdup
@ -321,14 +328,14 @@ FUNC(xpmstrdup, char *, (char *s1));
#endif
#ifdef NEED_STRCASECMP
FUNC(xpmstrcasecmp, int, (char *s1, char *s2));
HFUNC(xpmstrcasecmp, int, (char *s1, char *s2));
#else
#undef xpmstrcasecmp
#define xpmstrcasecmp strcasecmp
#include <strings.h>
#endif
FUNC(xpmatoui, unsigned int,
HFUNC(xpmatoui, unsigned int,
(char *p, unsigned int l, unsigned int *ui_return));
#endif

View File

@ -66,7 +66,7 @@ xpmReadRgbNames(
xpmRgbName *rgb;
/* 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;
/* Loop reading each line in the file. */

View File

@ -32,6 +32,12 @@
#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 */
static sigjmp_buf jump_env;

View File

@ -33,6 +33,10 @@
#include "TestAllFiles.h"
#ifndef O_CLOEXEC
# define O_CLOEXEC 0
#endif
#ifndef g_assert_no_errno /* defined in glib 2.66 & later */
#define g_assert_no_errno(n) g_assert_cmpint(n, >=, 0)
#endif
@ -147,7 +151,7 @@ TestReadFileToBuffer(const gchar *filepath)
g_assert_nonnull(buffer);
/* 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) {
g_assert_cmpmem(b, rd, readbuf, rd);
b += rd;

View File

@ -38,6 +38,10 @@
#include "TestAllFiles.h"
#include "CompareXpmImage.h"
#ifndef O_CLOEXEC
# define O_CLOEXEC 0
#endif
#ifndef g_assert_no_errno /* defined in glib 2.66 & later */
#define g_assert_no_errno(n) g_assert_cmpint(n, >=, 0)
#endif
@ -295,7 +299,7 @@ TestWriteFileFromBuffer(const gchar *filepath)
ssize_t rd;
/* 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) {
g_assert_cmpmem(b, rd, readbuf, rd);
b += rd;

View File

@ -23,7 +23,7 @@
#include "config.h"
#include "../src/XpmI.h"
#include "../src/rgb.c"
#include <glib.h>
/*

View File

@ -730,7 +730,7 @@ XIChangeDeviceProperty(DeviceIntPtr dev, Atom property, Atom type,
XIDestroyDeviceProperty(prop);
return BadAlloc;
}
new_value.size = len;
new_value.size = total_len;
new_value.type = type;
new_value.format = format;
@ -747,7 +747,7 @@ XIChangeDeviceProperty(DeviceIntPtr dev, Atom property, Atom type,
case PropModePrepend:
new_data = new_value.data;
old_data = (void *) (((char *) new_value.data) +
(prop_value->size * size_in_bytes));
(len * size_in_bytes));
break;
}
if (new_data)

View File

@ -58,8 +58,6 @@ extern void DeviceFocusEvent(DeviceIntPtr dev,
extern void EnterWindow(DeviceIntPtr dev, WindowPtr win, int mode);
extern void LeaveWindow(DeviceIntPtr dev);
extern void CoreFocusEvent(DeviceIntPtr kbd,
int type, int mode, int detail, WindowPtr pWin);

View File

@ -410,6 +410,7 @@ typedef struct {
#endif
DevPrivateKeyRec gcPrivateKeyRec;
DevPrivateKeyRec winPrivateKeyRec;
CloseScreenProcPtr CloseScreen;
} FbScreenPrivRec, *FbScreenPrivPtr;
#define fbGetScreenPrivate(pScreen) ((FbScreenPrivPtr) \

View File

@ -29,6 +29,7 @@
Bool
fbCloseScreen(ScreenPtr pScreen)
{
FbScreenPrivPtr screen_priv = fbGetScreenPrivate(pScreen);
int d;
DepthPtr depths = pScreen->allowedDepths;
@ -37,9 +38,10 @@ fbCloseScreen(ScreenPtr pScreen)
free(depths[d].vids);
free(depths);
free(pScreen->visuals);
if (pScreen->devPrivate)
FreePixmap((PixmapPtr)pScreen->devPrivate);
return TRUE;
pScreen->CloseScreen = screen_priv->CloseScreen;
return pScreen->CloseScreen(pScreen);
}
Bool
@ -144,6 +146,7 @@ fbFinishScreenInit(ScreenPtr pScreen, void *pbits, int xsize, int ysize,
int dpix, int dpiy, int width, int bpp)
#endif
{
FbScreenPrivPtr screen_priv;
VisualPtr visuals;
DepthPtr depths;
int nvisuals;
@ -177,8 +180,11 @@ fbFinishScreenInit(ScreenPtr pScreen, void *pbits, int xsize, int ysize,
rootdepth, ndepths, depths,
defaultVisual, nvisuals, visuals))
return FALSE;
/* overwrite miCloseScreen with our own */
screen_priv = fbGetScreenPrivate(pScreen);
screen_priv->CloseScreen = pScreen->CloseScreen;
pScreen->CloseScreen = fbCloseScreen;
return TRUE;
}

View File

@ -727,13 +727,6 @@ vfbCloseScreen(ScreenPtr pScreen)
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);
}

View File

@ -335,4 +335,7 @@ union _InternalEvent {
GestureEvent gesture_event;
};
extern void
LeaveWindow(DeviceIntPtr dev);
#endif

View File

@ -397,8 +397,21 @@ miPointerWarpCursor(DeviceIntPtr pDev, ScreenPtr pScreen, int x, int y)
#ifdef PANORAMIX
&& noPanoramiXExtension
#endif
)
UpdateSpriteForScreen(pDev, pScreen);
) {
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);
}
}
/**

View File

@ -249,10 +249,10 @@ miScreenInit(ScreenPtr pScreen, void *pbits, /* pointer to screen bits */
pScreen->numVisuals = numVisuals;
pScreen->visuals = visuals;
if (width) {
pScreen->CloseScreen = miCloseScreen;
#ifdef MITSHM
ShmRegisterFbFuncs(pScreen);
#endif
pScreen->CloseScreen = miCloseScreen;
}
/* else CloseScreen */
/* QueryBestSize */

View File

@ -209,7 +209,7 @@ RRChangeOutputProperty(RROutputPtr output, Atom property, Atom type,
RRDestroyOutputProperty(prop);
return BadAlloc;
}
new_value.size = len;
new_value.size = total_len;
new_value.type = type;
new_value.format = format;
@ -226,7 +226,7 @@ RRChangeOutputProperty(RROutputPtr output, Atom property, Atom type,
case PropModePrepend:
new_data = new_value.data;
old_data = (void *) (((char *) new_value.data) +
(prop_value->size * size_in_bytes));
(len * size_in_bytes));
break;
}
if (new_data)