Security Advisories (3)
CVE-2026-102504 (2026-10-01)

Imager versions before 1.037 for Perl exit the process reading a raw image with an out-of-range raw_datachannels value in i_readraw_wiol. Nothing range-checks raw_datachannels. The line buffer is sized as the image width times the channel count with no overflow check, so a negative or very large count requests an excessive allocation. When it fails, Imager's allocator calls exit(3). Passing an untrusted raw_datachannels value to Imager->read() triggers an uncatchable exit.

CVE-2026-102505 (2026-10-01)

Imager versions before 1.037 for Perl overflow a heap buffer fetching float samples from a paletted image in i_gsampf_fp. For a paletted image, getsamples() with type "float" allocates a buffer of one sample per pixel and fetches every requested channel of each pixel into it. Requesting more than one channel writes past its end. An attacker-supplied image controls the overflowing bytes through its palette.

CVE-2026-112202 (2026-10-20)

Imager::File::GIF versions before 1.006 for Perl allow out-of-bounds reads when consolidating GIF images. With `gif_consolidate => 1`, palette indices from the image are used without checking the colour table's bounds. The i_readgif_low routine reads beyond the heap allocation and copies the bytes into output pixels. The default GIF reader is not affected. The same code ships bundled in the Imager distribution. An attacker supplying a crafted GIF can disclose adjacent heap memory through the decoded output and may crash the process.

NAME

Imager::Threads - Imager and threads

SYNOPSIS

use Imager;
use threads;
Imager->preload;

threads->create(...);

DESCRIPTION

Starting from version 0.94 Imager attempts to work safely with perl's ithreads.

Previous versions stored some state in global variables, in particular the internal error stack.

However there are some limitations:

  • Imager's debug malloc isn't thread safe and will never be. Imager's debug malloc is disabled by default.

  • libtiff, which Imager uses for TIFF file support is not thread safe, Imager::File::TIFF works around this by single-threading its access to libtiff.

  • giflib, which Imager uses for GIF support is not thread safe before version 5. Imager::File::GIF works around this by single threading its access to giflib.

  • T1Lib, used by one of Imager's font drivers, is not thread safe. Imager::Font::T1 works around this by single threading access.

  • killing a thread reading or writing TIFF or GIF files, or using T1 fonts through Imager::Font::T1 may deadlock other threads when they attempt to read or write TIFF or GIF files, or work with Type 1 fonts.

  • Fill, font, color or I/O layer objects created in one thread are not valid for use in child threads. If you manage to duplicate such an object in another thread, you get to keep both pieces when it breaks.

Note that if you have another module using libtiff, giflib or t1lib it may interact with Imager's use of those libraries in a threaded environment, since there's no way to co-ordinate access to the global information libtiff, giflib and t1lib maintain.

Imager currently doesn't use threads itself, except for testing its threads support.

SEE ALSO

Imager, threads

AUTHOR

Tony Cook <tony@cpan.org>