2015-02-28 Bob Friesenhahn <bfriesen@simple.dallas.tx.us>
- www/index.rst: Update for 1.3.21 release.
- www/Changes.rst: Update for 1.3.21 release.
- NEWS.txt: Update NEWS for 1.3.21 release.
- version.sh: Bump/adjust library versioning.
2015-02-25 Bob Friesenhahn <bfriesen@simple.dallas.tx.us>
- magick/delegate.c: Fix compilation under Cygwin. Thanks to Marco Atzeri for advising us of this problem.
2015-02-24 Bob Friesenhahn <bfriesen@simple.dallas.tx.us>
- magick/error.h (ThrowReaderException): More significant exceptions (e.g. errors) should overwrite less significant exceptions (e.g. warnings) thrown earlier.
- coders/bmp.c (ReadBMPImage): Detect 32-bit integer overflows and other annoyances caused by intentionally broken files. Also, only warn if the file header claims the file is larger than it is since this is a benign issue.
- magick/blob.c (OpenBlob): Fix "magic header bytes" log message count value.
2015-02-22 Bob Friesenhahn <bfriesen@simple.dallas.tx.us>
- NEWS.txt: Updated NEWS with more changes.
- Magick++/lib/Magick++/Include.h (Magick): Add GetImageGeometry to MagickLib namespace in order to avoid a compilation problem noticed with Visual C++ 6.0.
2014-02-22 Jaroslav Fojtik <JaFojtik@seznam.cz>
- VisualMagickconfigureconfigure.cpp Fixed crash.
Renamed debug to configure_d.exe to prevent mess.
2015-02-21 Bob Friesenhahn <bfriesen@simple.dallas.tx.us>
- magick/magick.c (InitializeMagick): Invoke NTInitializeExceptionHandlers() under Windows.
- magick/nt_base.c (NTInitializeExceptionHandlers): Add a new private function which disables pop-up Windows on exceptions and registers a handler for Windows exceptions to clean up temporary files prior to program exit.
- magick/magick.c (PanicDestroyMagick): Use PurgeTemporaryFilesAsyncSafe() rather than PurgeTemporaryFiles(). (InitializeMagickSignalHandlers): Always register for SIGINT, even under Microsoft Windows.
- magick/tempfile.c (PurgeTemporaryFilesAsyncSafe): New private function to clean up temporary files prior to program exit. Async-safe so it can be safely called from a signal handler. Intentionally leaks memory.
2015-02-18 Bob Friesenhahn <bfriesen@simple.dallas.tx.us>
- magick/attribute.c (GenerateEXIFAttribute): Fix crash while parsing corrupt EXIF which was reported by Stijn Sanders on 2015-02-17.
- Magick++/lib/{Blob.cpp, Image.cpp}: Incorrect lock scope resulted in Magick++ locking not actually working to protect critical sections in spite of no detected problems with locking these past 16 years. Problem was detected using the misc-unused-raii check from clang-tidy and was reported by Hyrum Wright.
- coders/palm.c (ReadPALMImage): Add header logging to writer. Writer still seeks and overwrites its own header so logging is not entirely accurate yet.
2015-02-16 Bob Friesenhahn <bfriesen@simple.dallas.tx.us>
- libtool: Update GNU libtool to 2.4.6.
- coders/palm.c (ReadPALMImage): Fix support for transparency in PALM reader.
2015-02-15 Bob Friesenhahn <bfriesen@simple.dallas.tx.us>
- coders/palm.c (ReadPALMImage): Major re-work of PALM reader. More log message improvements. More header validation.
2015-02-14 Bob Friesenhahn <bfriesen@simple.dallas.tx.us>
- coders/palm.c (ReadPALMImage): Improve log messages. Add more header validation. Check image pixel limits. Support 'ping' mode.
2015-02-12 Bob Friesenhahn <bfriesen@simple.dallas.tx.us>
- coders/palm.c (ReadPALMImage): PALM reader now supports 1, 2, 4, 8, and 16-bit test files we were able to generate using 'pnmtopalm'. A progress monitor was added. Memory leaks in error paths were fixed.
2015-02-12 Glenn Randers-Pehrson <glennrp@simple.dallas.tx.us>
- coders/png.c: Insert "if (QuantumTick(...))" ahead of each "if (!MagickMonitorFormatted(...)".
2015-02-10 Bob Friesenhahn <bfriesen@simple.dallas.tx.us>
- coders/rla.c (ReadRLAImage): Assure that header ASCII strings are properly terminated. Resolves Coverity CID 10322.
2015-02-09 Bob Friesenhahn <bfriesen@simple.dallas.tx.us>
- magick/nt_base.h (STDERR_FILENO): Provide definitions for standard POSIX file numbers so that Visual Studio should compile. Fixes SourceForge bug #291 "STDERR_FILENO (used in magick.c) is not defined under Windows"
2015-02-08 Bob Friesenhahn <bfriesen@simple.dallas.tx.us>
- Magick++/lib/Image.cpp (Image::quiet()): Patch by Dirk Lemstra to support silencing warnings in Magick++. Adds a quiet() method which blocks (ignores) warning exceptions when passed a true argument. Warning exceptions are still generated by default.
- coders/tiff.c: Support '-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.
2015-02-07 Bob Friesenhahn <bfriesen@simple.dallas.tx.us>
- coders/tiff.c (WriteTIFFImage): Use YCbCr encoding when JPEG compression is requested for an RGB image.
2015-02-04 Bob Friesenhahn <bfriesen@simple.dallas.tx.us>
- coders/tiff.c (QuantumTransferMode): Fix reading or writing planar min-is-white or min-is-black images with an associated alpha channel.
2015-02-01 Bob Friesenhahn <bfriesen@simple.dallas.tx.us>
- coders/xpm.c (ReadXPMImage): Reading empty XPM file should not cause bad memory access.
- coders/gif.c (DecodeImage): Assure that GIF decoder does not use unitialized data.
- coders/jpeg.c (ReadJPEGImage): Verify that we support the number of output components before proceeding to decode the image.
2015-01-25 Bob Friesenhahn <bfriesen@simple.dallas.tx.us>
- coders/miff.c (ReadMIFFImage): MIFF needs to stop spinning if zlib or bzlib report an error while decompressing. Solves problem with file provided by Jodie Cunningham on 2015-01-25.
- coders/vicar.c (ReadVICARImage): Fix Vicar reader's dogged determination to continue reading when there is nothing left to read. Solves problem with file provided by Jodie Cunningham on 2015-01-25.
- magick/magick.c (PanicDestroyMagick): Replace memory allocation functions with dummy functions rather than NULL pointers. (InitializeMagickSignalHandlers): Register MagickPanicSignalHandler() for SIGSEGV. (MagickPanicSignalHandler): Produce an informative message for the user. (MagickSignalHandlerMessage): Include more detailed information from the signal handler via a common routine used by default signal handlers.
2015-01-25 Glenn Randers-Pehrson <glennrp@simple.dallas.tx.us>
- coders/bmp.c (ReadBMPImage): An attempt to address CID 10291.
2015-01-25 Bob Friesenhahn <bfriesen@simple.dallas.tx.us>
- magick/nt_base.c (Exit): Changed to return 'void'. Function can not return a value if it does not return.
- magick/error.c (DefaultFatalErrorHandler): Invoke PanicDestroyMagick() rather than DestroyMagick(). If we are really that short on memory, DestroyMagick() might not work.
- magick/magick.c (MagickPanicSignalHandler): Only use async-safe functions in signal handler. (PanicDestroyMagick): New function for emergency release of persistent resources just prior to program exit. Async-safe and does not acquire or release any heap memory.
- magick/export.c: Eliminate two 'clang' warnings.
2015-01-24 Bob Friesenhahn <bfriesen@simple.dallas.tx.us>
- coders/pdb.c (ReadPDBImage): Fix typo.
- coders/cineon.c (ReadCINEONImage): Enforce that Cineon image info channels is valid. Solves problem with file provided by Jodie Cunningham on 2015-01-24
- coders/fits.c (ReadFITSImage): Enforce valid bits-per-pixel values. Add detailed header logging. Solves problem with file provided by Jodie Cunningham on 2015-01-24
2015-01-22 Glenn Randers-Pehrson <glennrp@simple.dallas.tx.us>
- coders/png.c (ReadPNGImage): Check length of various MNG chunks before using the chunk data.
- coders/png.c (WriteOnePNGImage): Use png_error() instead of throwing an exception so cleanup in the setjmp block can happen, including unlocking the semaphore. Addresses Coverity CID 10184.
2015-01-22 Bob Friesenhahn <bfriesen@simple.dallas.tx.us>
- coders/gif.c (WriteGIFImage): Don't use an unchecked value from GetImageAttribute(), even if the access succeeded before. Resolves Coverity CID 10219.
- coders/dpx.c (StringToAttribute): Make sure that string is not accidentally shortened by one character if it occupies the full field size. (ReadDPXImage): Validate that the bits per sample claimed by the file header is a supported depth before using it further in the code. This might resolve Coverity CID 10071 "Bad shift operation". (ReadDPXImage): Check for EOF while reading forward to element data. Might solve Coverity CID 10305.
- coders/dib.c (ReadDIBImage): Resolve Coverity CID 10228 "Integer overflowed argument". (ReadDIBImage): Hopefully resolve Coverity CID 10268 "Various", which is primarily about placing too much trust in the claimed number of colors.
- coders/pnm.c (WritePNMImage): Fix overwrite of status by progress monitor. Remaining issues may lurk within. May resolve Coverity CID 10288.
- coders/pdb.c: Resolve Coverity CID 11173 "Buffer not null terminated".
2015-01-21 Bob Friesenhahn <bfriesen@simple.dallas.tx.us>
- magick/magick.c (GetMagickInfoArray): Resolve Coverity CID 10212 "Missing unlock".
- magick/colormap.c (ReplaceImageColormap): Allocate new image colormap up front in order to avoid the possibility that we are left with an image with no colormap due to memory allocation failure. If there is a memory allocation failure, then the original colormap is preserved. Resolves Coverity CID 10194 "Dereference after null check".
- magick/utility.c (MagickStripSpacesFromString): New private utility function to strip spaces from a string.
- magick/color_lookup.c (GetColorInfoArray): Resolves Coverity CID 10231 "Missing unlock" (ReadColorConfigureFile): Resolves Coverity CID 10261 "Use of untrusted scalar value" (GetColorInfo): Resolves Coverity CID 10077 "Overlapping buffer in memory copy".
2015-01-21 Glenn Randers-Pehrson <glennrp@simple.dallas.tx.us>
- coders/png.c (ReadOnePNGImage): Use png_error() instead of throwing an exception so cleanup in the setjmp block can happen, including unlocking the semaphore. Resolves Coverity CID 10232.
- coders/png.c (ReadOnePNGImage): Moved a logging statement into a block where "attribute" has been checked for NULL. Resolves Coverity CIDs 10185 and 10187.
- coders/png.c (ReadMNGImage): Fixed a cut-and-paste typo (change_delay should be change_timeout) reported by Coverity CID 10090.
2015-01-20 Bob Friesenhahn <bfriesen@simple.dallas.tx.us>
- magick/image.c (CloneImage): The definition is poor as to what a non-orphan clone should do. However, the definition surely does not include crashing the software or supplanting the original image in an image list. Clone image blob and previous/next pointers but do not supplant original image in list. Resolves Coverity CID 10155.
2015-01-18 Bob Friesenhahn <bfriesen@simple.dallas.tx.us>
- coders/dpx.c (WriteRowSamples): Ensure that callback function is always defined. Resolves Coverity CID 10122. (ReadRowSamples): Ensure that callback function is always defined. Resolves Coverity CID 10125.
- magick/random.c (InitializeMagickRandomKernel): Avoid possible double-close of file. Resolves Coverity CID 10257.
- coders/histogram.c (WriteHISTOGRAMImage): Avoid possible divide by zero exception. Resolves Coverity CID 10107.
- magick/error.c (MagickFatalError): Document that MagickFatalError() is not supposed to return (program must quit) and add GCC/Clang hints to that effect.
- magick/bit_stream.c (BitAndMasks): Avoid possible access one-beyond end of BitAndMasks array. It is not clear if there is a possible bug with 32-bit quantums. If there is a bug, it has not been noticed via testing. Resolves Coverity CID 10213.
- magick/tempfile.c (AcquireTemporaryFileDescriptor): Avoid buffer overrun in the case of an astonishingly long environment variable string. Resolves Coverity CID 10267. (AddTemporaryFileToList): Use strlcpy() rather than strlcpy(). In practice, should not make a difference. Will quiet Coverity CID 10321.
- magick/command.c (GMCommandSingle): Don't use the address of a stack allocation to update argv[0]. Removed updating argv[0] until a better design can be found. Resolves Coverity CID 10223. (GMCommandSingle): Plan B: Use static allocation from SetClientName() to both store the new command name and provide storage for argv[0].
- magick/utility.c (SystemCommand): Fix possible overwrite of memory location due to uninitialized 'end' pointer. Resolves Coverity CID 10251.
- magick/blob.c (WriteBlobFile): Was not closing file in certain error conditions. Resolves Coverity CID 10237.
- coders/cineon.c (ReadCINEONImage): Don't trust file header so much. Resolves Coverity CIDs 10079, 10310, 10325.
- coders/art.c (ReadARTImage): Fix signed vs unsigned comparison caused by earlier changes.
2014-01-17 Fojtik Jaroslav <JaFojtik@seznam.cz>
- coders/wpg.c Do not execute wpg raster read in ping mode.
2014-01-15 Fojtik Jaroslav <JaFojtik@seznam.cz>
- coders/mat.c Properly deallocating zip structures.
2015-01-14 Bob Friesenhahn <bfriesen@simple.dallas.tx.us>
- coders/sfw.c (ReadSFWImage): Fix pixel cache access errors in 'ping' mode.
2015-01-13 Bob Friesenhahn <bfriesen@simple.dallas.tx.us>
- coders/wmf.c (ReadWMFImage): Fix memory leak in 'ping' mode and some error paths.
2015-01-12 Bob Friesenhahn <bfriesen@simple.dallas.tx.us>
- coders/jbig.c (ReadJBIGImage): Fix memory leak in 'ping' mode.
- magick/delegate.c (InvokeDelegate): Fix memory leak of argument list when invoking external program via MagickSpawnVP().
2015-01-11 Bob Friesenhahn <bfriesen@simple.dallas.tx.us>
- magick/resource.c (InitializeMagickResources): Base image width and height default limits on the range of a 32-bit signed integer, even for 64-bit builds. These limits are still beyond what most computers in the world can handle. Limits can be increased by the user.
- coders/xwd.c (ReadXWDImage): Check image size limits immediately.
- coders/xc.c (ReadXCImage): Check image size limits immediately.
- coders/webp.c (ReadWEBPImage): Check image size limits immediately.
- coders/viff.c (ReadVIFFImage): Check image size limits immediately.
- coders/vicar.c (ReadVICARImage): Check image size limits immediately.
- coders/txt.c (ReadTXTImage): Check image size limits immediately.
- coders/ttf.c (ReadTTFImage): Check image size limits immediately.
- coders/tim.c (ReadTIMImage): Check image size limits immediately.
- coders/tiff.c (ReadTIFFImage): Check image size limits immediately.
- coders/tga.c (ReadTGAImage): Check image size limits immediately.
- coders/sgi.c (ReadSGIImage): Check image size limits immediately.
- coders/sct.c (ReadSCTImage): Check image size limits immediately.
- coders/rle.c (ReadRLEImage): Check image size limits immediately.
- coders/rla.c (ReadRLAImage): Check image size limits immediately.
- coders/psd.c (ReadPSDImage): Check image size limits immediately.
- coders/pnm.c (ReadPNMImage): Check image size limits immediately.
- coders/pix.c (ReadPIXImage): Check image size limits immediately.
- coders/pict.c (ReadPICTImage): Check image size limits immediately.
- coders/pdb.c (ReadPDBImage): Check image size limits immediately.
- coders/pcx.c (ReadPCXImage): Check image size limits immediately.
- coders/pcd.c (ReadPCDImage): Check image size limits immediately.
- coders/otb.c (ReadOTBImage): Check image size limits immediately.
- coders/null.c (ReadNULLImage): Check image size limits immediately.
- coders/mvg.c (ReadMVGImage): Check image size limits immediately.
- coders/mtv.c (ReadMTVImage): Check image size limits immediately.
- coders/mpc.c (ReadMPCImage): Check image size limits immediately.
- coders/miff.c (ReadMIFFImage): Check image size limits immediately.
- coders/jpeg.c (ReadJPEGImage): Check image size limits immediately.
- coders/jp2.c (ReadJP2Image): Check image size limits immediately.
- coders/jbig.c (ReadJBIGImage): Check image size limits immediately.
- coders/hdf.c (ReadHDFImage): Check image size limits immediately.
- coders/gif.c (ReadGIFImage): Check image size limits immediately.
- coders/fpx.c (ReadFPXImage): Check image size limits immediately.
- coders/fax.c (ReadFAXImage): Check image size limits immediately.
- coders/dpx.c (ReadDPXImage): Check image size limits immediately.
- coders/dps.c (ReadDPSImage): Check image size limits immediately.
- coders/dib.c (ReadDIBImage): Check image size limits immediately.
- coders/dcm.c (ReadDCMImage): Check image size limits immediately.
- coders/cut.c (ReadCUTImage): Check image size limits immediately.
- coders/cineon.c (ReadCINEONImage): Check image size limits immediately.
- coders/avs.c (ReadAVSImage): Check image size limits immediately.
- coders/art.c (ReadARTImage): Check image size limits immediately.
- coders/sun.c (ReadSUNImage): Check image size limits in advance of allocating memory for pixels.
- coders/bmp.c (ReadBMPImage): Check image size limits in advance of allocating memory for pixels.
- coders/sun.c (ReadSUNImage): There is no definition for Sun map type RMT_RAW so it can not be supported. Update DirectClass pixels directly rather using SyncImage(). Problem was reported by Jodie Cunningham.
2015-01-10 Bob Friesenhahn <bfriesen@simple.dallas.tx.us>
- coders/pict.c (ReadPICTImage): Fix PICT reader crash when reading corrupted file.
- coders/sun.c (ReadSUNImage): Sun reader was still not as robust as it should be. Now it is.
2014-01-10 Fojtik Jaroslav <JaFojtik@seznam.cz>
- coders/wpg.c Fixed reading behind EOF issue.
2015-01-09 Bob Friesenhahn <bfriesen@simple.dallas.tx.us>
- coders/dpx.c (LSBPackedU32WordToOctets): Fix typo which adds severe corruption to encoded little-endian 32-bit packed output. The good news is that since the corruption is severe, it is easily visually detected. The problem has corrupted all such (little-endian 10-bit) output since it was originally implemented on 2007-06-17 (changeset 11686, first released in GraphicsMagick 1.1.8). GraphicsMagick preserves the endianness of input DPX files by default, defaults to big-endian, and DPX files are commonly big-endian, so this problem may not have occured for many usages. Problem was reported by Steve Dabner on the GraphicsMagick discussion mailing list.
2015-01-05 Bob Friesenhahn <bfriesen@simple.dallas.tx.us>
- magick/magick.c (MagickPanicSignalHandler): Print a message in the case of signals SIGXCPU and SIGXFSZ.
- coders/bmp.c (ReadBMPImage): Don't hang in endless loop if EOF is encountered while checking for "BA" header.
- coders/icon.c (ReadIconImage): Limit icon image allocation size.
2015-01-04 Bob Friesenhahn <bfriesen@simple.dallas.tx.us>
- coders/icon.c (ReadIconImage): Removed all of the previously-existing DIB reading code from icon.c and use new "ICODIB" reader to read DIB icons, or the PNG reader to read PNG icons.
- coders/dib.c (ReadDIBImage): Added an "ICODIB" coder for internal use which reads a Windows BMP 3 DIB followed by a Windows ICO alpha mask. This allows existing DIB code to be used to read ICO directory entries.
2015-01-03 Bob Friesenhahn <bfriesen@simple.dallas.tx.us>
- coders/icon.c: The Windows ICO reader is now more robust. Still a work in progress since some files still can not be read or read incorrectly.
2015-01-01 Bob Friesenhahn <bfriesen@simple.dallas.tx.us>
- magick/resource.c (ListMagickResourceInfo): "kilo" for binary prefixes is supposed to be "Ki".
- magick/utility.c (FormatSize): "kilo" for binary prefixes is supposed to be "Ki".
2015-01-01 Glenn Randers-Pehrson <glennrp@simple.dallas.tx.us>
- coders/png.c: Use WidthResource and HeightResource instead of fixed 1-million limit for rows and columns.
2015-01-01 Bob Friesenhahn <bfriesen@simple.dallas.tx.us>
- magick/utility.c (FormatSize): Add 'i' to value range identifiers since these are all in units of 2^10 rather than 1000.
- magick/pixel_cache.c (CheckImagePixelLimits): Fix typo and produce an informative error message.
- magick/resource.c: Added support for Image width and height pixels resource limits.
- magick/resource.h (ResourceType): New resource enumerations WidthResource and HeightResource.
- magick/enum_strings.c (StringToResourceType): Added support for parsing '-limit Width' and '-limit Height'.
- magick/pixel_cache.c (CheckImagePixelLimits): New function to test image to see if it exceeds pixels limits.
- coders/viff.c (ReadVIFFImage): Make the VIFF reader robust with detecting and reporting problems.
2014-12-31 Bob Friesenhahn <bfriesen@simple.dallas.tx.us>
- Rotate Changelog for new year. Update documentation copyrights for new year.