forked from old/legacy-imlib2
IMAGE_DIMENSIONS_OK ensures that image width and height are less then 46340, so that maximum number of pixels is ~2**31. Unfortunately, there are a lot of code that allocates image data with something like malloc(w * h * sizeof(DATA32)); Obviously, on 32-bit machines this results in integer overflow, insufficient heap allocation, with [massive] out-of-bounds heap overwrite. Either X_MAX should be reduced to 32767, or (w)*(h) should be checked to not exceed ULONG_MAX/sizeof(DATA32). Security implications: *) for 32-bit machines: insufficient heap allocation and heap overwrite in many image loaders, with escalation potential to remote code execution; *) for 64-bit machines: it seems, no impact. |
||
---|---|---|
data | ||
doc | ||
m4 | ||
src | ||
.gitignore | ||
.indent.pro | ||
AUTHORS | ||
COPYING | ||
COPYING-PLAIN | ||
ChangeLog | ||
Doxyfile | ||
INSTALL | ||
Makefile.am | ||
README.ID3 | ||
README.in | ||
TODO | ||
autogen.sh | ||
configure.ac | ||
gendoc | ||
imlib2-config.in | ||
imlib2.c.in | ||
imlib2.pc.in | ||
imlib2.spec.in |
README.in
Imlib2 @VERSION@ This is the Imlib 2 library - a library that does image file loading and saving as well as rendering, manipulation, arbitrary polygon support, etc. It does ALL of these operations FAST. Imlib2 also tries to be highly intelligent about doing them, so writing naive programs can be done easily, without sacrificing speed. This is a complete rewrite over the Imlib 1.x series. The architecture is more modular, simple, and flexible. See index.html in the doc/ directory for more information. Imlib2 requires several libraries to be already installed. These are: libjpeg http://www.ijg.org/ libpng http://www.libpng.org/pub/png/libpng.html freetype 2.1.x http://www.freetype.org/ For examples of this library in use, seek: Eterm http://www.eterm.org/ (CVS version only, currently) feh http://www.linuxbrit.co.uk/feh.html geist http://www.linuxbrit.co.uk/geist.html ------------------------------------------------------------------------------ COMPILING AND INSTALLING: ./configure make (as root unless youa re installing in your users directories): make install ------------------------------------------------------------------------------ BUILDING PACKAGES: RPM: To build rpm packages: sudo rpm -ta @PACKAGE@-@VERSION@.tar.gz You will find rpm packages in your system /usr/src/redhat/* dirs (note you may not need to use sudo or root if you have your own ~/.rpmrc. see rpm documents for more details) DEB: To build deb packages: tar zvf @PACKAGE@-@VERSION@.tar.gz cd @PACKAGE@-@VERSION@ dpkg-buildpackage -us -uc -rfakeroot cd .. rm -rf @PACKAGE@-@VERSION@ You will find all the debian source, binary etc. packages put in the directory where you first untarred the source tarball.