Log message:
Changes 1.3.21:
Security Fixes:
---------------
Annotate: Some requestable text-subsitution attributes caused a crash.
All formats: Image dimensions are checked to assure that they are within limits \
before proceeding to read the image.
BMP: Fix hang (endless loop) for certain files.
DCM: Fix crash as well as small heap over-write.
DPX: Fix crash due to DPX file reporting more elements than it has.
MNG: Validate MHDR chunk length to avoid huge memory allocation and DOS.
PCX: Fix for CVE-2014-8355. Validate file header in order to avoid buffer overun \
later.
PDB: Detect arithmetic overflows when calculating buffer sizes. Fix crash in \
writer when image width is not even multiple of 16. Fix buffer overrun with 2 \
and 4-bit PDB image files.
PNM: Validate PGM, PPM, and PAM header MaxValue parameter to avoid crash on \
poorly-formed input.
PNG: Impose a 10-million limit on dimensions when reading a PNG file to avoid \
denial of service.
PSD: Avoid problems caused by huge PSD colormap size.
PSD: Fix small stack over-write if more than 99 layers are written to PSD format.
PSD: Returns immediately if pixel limit was exceeded.
RLE: URT RLE reader is now more robust with errant files.
SUN: Header validation is now made fully robust, and arithmetic overflows in \
buffer-size calculations are detected to avoid heap overwrite.
TIFF: Fix crashes for photometrics which may delivery one or three samples per \
pixel (was assuming always three).
VIFF: Fixes to prevent buffer overflow. Validate colormap indexes.
Windows delegates: Fix unexpected argument splitting when invoking an external \
delegate program via delegates.mgk.
WPG: Fix use of NULL pointers. Fix buffer overflows.
XPM: Detect truncated row and quit with error rather than over-running a buffer.
XWD: Improve header validation. Added to UnstableCoderClass since the reader for \
this format should not be entrusted with untrustworthy input.
Bug fixes:
----------
CIN: Fix problem with text attribute values which are not NULL terminated. \
Validate sizes claimed by Cineon header.
Coverity: Fixes for many issues detected by Coverity scan (see ChangeLog).
DPX: Fix problem with text attribute values which are not NULL terminated.
DPX: Fix severe corruption of little-endian 32-bit packed output. Corruption was \
severe enough that it would have been noticed immediately.
Delegates: Fix possible memory leaks when invoking external application.
FITS: Properly validate values provided by file header.
GIF: Fix use of uninitialized data.
JBIG: Fix memory leaks.
JNG: Fix double-free error in error path.
JPEG: Verify the number of output components before attempting to decode the image.
Magick++: Image resolutionUnits() was not always returning correct value.
Magick++: Locking has not been working properly since the code was written in \
1998. Apparently the issue has not been significant enough to cause run-time \
issues.
ICO: Windows icon reader is now much more robust.
MIFF: Reader now quits with an error if zip or bzip2 stream is corrupted.
MAT: Fix memory leaks.
PALM: Reader now reads various input formats (up to version 2) correctly whereas \
it was crashing or otherwise malfunctioning before. More work remains, \
particularly in the writer.
PCX: Eliminate memory leaks in error paths.
PDB: In PDB writer, void possible under-allocation due to arthimetic overflow \
when allocating packets.
PICT: Fix PICT reader crash with corrupted file.
PNG: Fix double-free error in error path.
PNG: Fixed handling of transparency when writing indexed PNG.
PNG: Avoid reading beyond the end of a tEXt keyword.
PSD: Fix error when reading PSDs files which have no layers.
RLA: Fix possible crash due to file header.
Signal Handling: Signal handling is now more robust and handles SIGSEGV and \
other critical signals. The sole purpose of the default signal handling is to \
remove any temporary files and quit. An informative message is printed for \
signals other than SIGINT.
SUN: Sun raster reader was not completely robust. Now it is.
SWF: Fix pixel cache access errors in 'ping' mode.
Text annotation: An empty text string is no longer treated as an error.
Text annotation: Fix regression added in 1.3.19 which caused spurious drawing \
errors to be produced while rendering with text when all of the text is off the \
left-hand side of the image.
TIFF: Fix unreliable reading JBIG compressed files by forcing use of strip \
reader rather than sometimes using scanline reader (which libtiff's JBIG codec \
does not support).
TIFF: Fix reading or writing planar min-is-white or min-is-black images with an \
associated alpha channel.
WebP: WebP writer now writes truely lossless output when requested.
identify / GetImageStatistics(): Failed to compute statistics for the Black \
channel of CMYK image files.
VICAR: Fix problem with continuing to "read" data when there is no \
more data left to read.
WMF: Fix memory leaks.
WPG: Fix potential DOS due to long reads during an error condition.
XPM: Avoid strncpy() of overlapping memory. Fixed memory leaks in error paths. \
Fixed bad memory access caused by empty file.
New Features:
-------------
compose: Supports composite operator names similar to the major *Magick brand, \
without losing any any compatibility with previous naming.
ICO: Windows ICO reader now supports reading PNG-encoded files.
Magick++ Geometry: New methods limitPixels() and fillArea() to support '@' and \
'^' geometry qualifiers. This enancement breaks the ABI due to previous use of \
inline methods and no place to put the new flags.
Magick++ Image::extent(): New method to place image on sized canvas of constant \
color using gravity.
Magick++ Image::formatExpression(): New method format a string based on a format \
similar to command-line -format.
Magick++ Image::resize(): New method to resize image specifying geometry, \
filter, and blur.
Magick++ STL extentImage: New New function object to invoke image extent method.
Magick++ Image::quiet(). New method which blocks (ignores) warning exceptions \
when passed a 'true' argument.
Resource limits: Added support for image Width and Height limits. Default image \
Width and Height limits are based on the range of a 32-bit signed integer, even \
for 64-bit builds which may have sufficient numeric range to image an entire \
galaxy. Limits may be increased as desired.
TIFF: Use define tiff:ignore-tags to ignore tags in 'corrupted' files with \
unknown and invalid tags. Use to read TIFF files which otherwise can not be read \
due to errors.
TIFF: Use '-define tiff:report-warnings=true' to enable that warnings reported \
by libtiff are thrown as warning exceptions so that they may be caught or will \
be reported at the gm command-line.
Windows Exceptions: A handler is registered (due to calling InitializeMagick()) \
to capture Windows Exceptions in a similar manner to the existing POSIX signal \
handler. If an application is using the library and wants to provide it own \
Windows exception handling, then it should make any changes after invoking \
InitializeMagick().
Windows Delegate Updates/Additions:
-----------------------------------
PNG: Update bundled libpng to 1.6.16. Resolves known security issues.
FreeType: Update bundled Freetype to 2.5.4. Resolves known security issues.
WebP: Update bundled WebP to 0.4.2 release.
WebP is auto-linked in Visual Studio.
Build Changes:
WebP is not included in the build when building with Visual Studio 6 (1998 \
vintage compiler!) since it requires more modern C.
Behavior Changes:
-----------------
AVI: Support for this format is removed since the implementation was worthless.
TIFF: Now uses YCbCr encoding when JPEG compression is requested for an RGB image.
|
Log message:
Changes 1.3.20:
Special Issues:
Due to GCC bug 53967, several key agorithms (e.g. convolution) may execute much \
faster (e.g. 2-3X) for x86-64 and/or when SSE is enabled for floating point math \
(-mfpmath=sse) if the GCC option -frename-registers is used. Default 32-bit \
builds do not experience the problem since they use '387 math. It is not clear \
in what version of GCC this problem started but it was not noticed by the \
developers until the GCC 4.6 timeframe. Other compilers do not suffer from this \
bug. Please lobby the GCC project to fix this embarrassing performance bug.
Bug fixes:
Compilation: No longer undefine __attribute__ since this may be used by system \
or compiler headers and cause problems.
BMP: Alpha channel from BMP3 format was inverted.
PNG: Fix round-trip repeatability issue (due to rounding algorithm) with modern \
versions of libpng. Prefer the less accurate method which does not alter the \
image.
PNG: Fix some memory leaks in error-handling paths.
PNM: Scaling of alpha in sub-ranged pixels is fixed.
Wand API: Removed development debug fprintf which causes each drawing primitive \
to be printed to stderr.
PS, PS2, PS3, PDF: Only use resolution from image or -density if units was \
properly specified. Without units, resolution is worthless.
PS, PS2, PS3, PDF: Use resolution from image if it appears to be valid.
WebP: Fix inverted return status which caused failure to be reported instead of \
success.
Rotation clipping/shearing errors for short wide images at some angles is fixed.
-geometry: Deal with resize geometry missing width or height (e.g. '640x' or \
'x480') by substituting the missing value with one which preserves the image \
aspect ratio. This has been documented to be supported since almost the dawn of \
GraphicsMagick but was not actually supported until now.
-geometry: Support '>' and '<' qualifiers with '@' qualifier to specify if \
image should be resized if larger or lesser than given area specification.
New Features:
Wand API: MagickSetImageGravity() - New function to set image gravity.
Wand API: MagickGetImageGravity() - New function to get image gravity.
Wand API: MagickSetImageMatte() - New function to set the image matte channel \
enable flag.
Wand API: MagickGetImageMatte() - New function to read the image matte channel \
enable flag.
Wand API: MagickSetImageGeometry() - New function to set the image geometry string.
Wand API: MagickGetImageGeometry() - New function to get the image geometry string.
Wand API: MagickOperatorImageChannel() - New function to apply an operator to an \
image channel.
Magick++ API: New Image::thumbnail() method for fast image resizing, \
particularly to make thumbnails.
Core C API: Added SetLogMethod() to allow an application/library to specify a \
function to be called for logging.
Clang/LLVM: Provide support for clang/llvm attribute and builtin specifiers \
similar to that provided for GCC.
OpenMP: OpenMP native locking and thread specific data is supported via a \
configuration option (is not the default). This offers a "pure" OpenMP \
compilation mode. No real value for this compilation mode has been observed yet \
but it seems worthy to support.
Coders: Added BrokenCoderClass to mark coders which often malfunction or are not \
very useful in their current condition.
Composition: Added HardLight composition operator, which is now used by PSD and \
XCF formats, and available via command line, Magick++ API, PerlMagick API, and \
Wand API.
Composition: Added ScreenCompositePixels composition operator.
Composition: Added missing Photoshop separable compositing operations, Overlay, \
Exclusion, ColorBurn, ColorDodge, SoftLight, LinearBurn, LinearDodge, \
LinearLight, VividLight, PinLight, HardMix.
+set: Command line utilities now support +set to remove an existing image attribute.
-format: Support additional format specifiers 'g', 'A', 'C', 'D', 'G', 'H', 'M', \
'O', 'P', 'Q', 'T', 'U', 'W', 'X', and '@', similar to the major brand.
-operator: New quantum operators ThresholdBlackNegateQuantumOp and \
ThresholdWhiteNegateQuantumOp These correspond to -operator \
"Threshold-Black-Negate" and "Threshold-White-Negate".
TIFF: Now support setting the TIFF "Software" tag for users who do not \
want to admit to using GraphicsMagick.
WebP: All of the WebP encoder encoder options are now supported by -define arguments.
Feature improvements:
Pixel interpolation quality is greatly improved, with minimal impact on \
performance. Pixel interpolation now also works well given an alpha channel.
WebP: WebP support is now prepared to compile with most WebP library versions \
and supports all features except for those pertaining to "RIFF" \
container support.
Performance Improvements:
Non-integral image rotation performance has been improved by about 40%, with \
lower memory usage as well.
GradientImage: Update image is_grayscale and is_monochrome flags based on \
gradient color properties.
Windows Delegate Updates/Additions:
PNG: Libpng 1.6.12 - June 12, 2014.
JPEG: libjpeg 9a of January 19, 2014.
FreeType: FreeType 2.5.3 of March 6, 2014.
WebP: webp 0.4.0 of January 20, 2013.
zlib: zlib 1.2.8 of April 28, 2013.
Build Changes:
--without-threads no longer disables use of OpenMP. Use the already existing \
option --disable-openmp to disable OpenMP.
Makefiles: Include paths are now exceedingly pedantic to make sure that only the \
required directories are included.
VisualMagick configure: Improve configure program so that it is possible to \
select QuantumDepth, OpenMP, and 64-bit build via configure dialog boxes as well \
as options on the command line. Also automatically detects and deals with \
similarly named files in subdirectories so that WebP support can now build \
successfully.
Behavior Changes:
MultiplyCompositePixels: Multiply composition now uses SVG interpretation of how \
alpha should be handled. No longer does a simple multiply of alpha channel.
Composition: The Difference, Darken, Lighten, and HardLight composition \
operators were modified to support alpha in their computations.
PNG: Using -optimize no longer triggers palette and depth optimizations since \
their implementations have been problematic.
|
Log message:
Changes 1.3.19:
Security Fixes:
EPT: Fix crash observed when Ghostscript fails to produce useful output. This \
was particularly noticeable when Ghostscript was not installed. This crash could \
be used to cause denial of service.
PNG: With libpng 1.6.X, avoid a crash while copying a PNG with a "known \
incorrect ICC profile". This crash could be used to cause denial of \
service.
Bug fixes:
Build: Fix cross-compilation for MinGW64 on Linux build machine.
Build: configure FreeType test no longer insists that \
<freetype/freetype.h> can be included.
CMS profile: Only delete the CMS transform if it is non-null. Fixes assersion \
observed when lcms returned a null profile and GraphicsMagick attempted to \
deallocate it.
Drawing: Improve error handling logic so that drawing returns quickly on pixel \
access errors rather than plowing on ahead. This avoids problems with SVGs which \
take seemingly forever to render.
Drawing via C/C++ APIs: BevelJoin no longer causes a MVG parsing error.
EPT: Fix crash observed when Ghostscript fails to produce useful output. This \
was particularly noticeable when Ghostscript was not installed.
OpenMP: Revert use of omp_set_dynamic() since it caused performance issues when \
using GCC's GOMP implementation and the number of threads to use is specified.
EXIF profile: Support the SubjectArea EXIF tag.
MIFF writer: PseudoClass format was written incorrectly for depth greater than 8.
MIFF writer: RLE compressed format used inverted alpha from the other subformats \
and contrary to the MIFF specification.
MIFF reader: Fixes Fixes to be able to read MIFF written by ImageMagick 6.X, \
including DirectClass grayscale images (except for RLE compressed).
Mosaic: Fixed unsigned underflow problem with -mosaic when page offset is \
negative and exceeds image width or height, resulting in assertions, out of \
memory errors, or pixel cache limit errors.
PDF: Consistently initialize Image page width and height to image width and \
height. While general to all of GraphicsMagick, this change is to assure that \
the PDF writer computes page dimensioning consistently. PDF page dimensioning \
was wrong if the image had been resized with -geometry "100%".
PAM: Fix MAXVAL scaling when reading PAM images. PAM was only working correctly \
for images with 256 or 64k levels.
PNM: PGM "P2" format writer wrote bad output for 8-bit depth.
PNG: With libpng 1.6.X, avoid a crash while copying a PNG with a "known \
incorrect ICC profile".
PNG: Q8 GM build now correctly reads 16-bit PNG files.
TIFF writer: Try to avoid writing more than 32k strips per image by increasing \
rows-per-strip since some programs fail to read images with more than 32k strips \
per image.
TIM reader: PSX TIM reports 8-bit depth (rather than 16).
TTF font rendering: Improve FreeType rendering error logic so that rendering \
returns immediately on pixel access errors rather than plowing on ahead.
TTF font rendering: Support rendering UTF-8 up to 21-bit code points. Was only \
supporting 16-bit code points.
Wand API: DrawSetStrokeDashArray() / DrawGetStrokeDashArray(), fix failure to \
work properly due to this code path never being tested.
Windows Ghostscript: 64-bit GraphicsMagick no longer requires both 32-bit and \
64-bit builds of Ghostscript to be installed in order to read Postscript and PDF \
formats.
XPM reader: Reported depth now depends on the colormap rather than always \
claiming to be 16-bit.
New Features:
JPEG: Add support for writing 'XMP' profile.
PNM: As a simple non-standard extension to the standard PNM and PAM formats, \
support writing and reading 32-bit sample depth. Writing such files is only \
supported by the Q32 build although they may be read by any build.
WebP: Now supports reading and writing Google's WebP format. This feature is not \
currently supported by the Windows Visual Studio build.
|