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::Inline - using Imager with Inline::C.

SYNOPSIS

use Inline with => 'Imager';
use Inline C => <<'EOS';
Imager some_func(Imager::Color c, Imager::Fill f) {
  Imager img = i_img_8_new(200, 200, 3);
  /* fill with color */
  i_box_filled(img, 0, 0, 199, 199, c);
  /* inner area with fill */
  i_box_cfill(img, 50, 50, 149, 149, f);

  return img;
}
EOS

DESCRIPTION

Imager hooks into Inline's with syntax to make it easier to write Inline::C code that works with Imager, you can call Imager functions without having to include headers or perform initialization.

Imager's Inline with support does the following:

  • add the installed Imager include directory to INC

  • add the Imager typemap to TYPEMAPS

  • include the headers needed by Imager C extension modules.

  • declare and initialize the Imager API function table pointer

  • filter the supplied code to replace Imager's class names with those that Inline::C can handle.

LIMITATIONS

The filtering mechanism is global, it will replace the class names even inside string constants. If you need a string matching the name of one of Imager's classes, like "Imager::Color" you will need to split it into 2 to use C's string pasting mechanism, for example: "Imager:" ":Color".

AUTHOR

Tony Cook <tonyc@cpan.org>

REVISION

$Revision$

SEE ALSO

Imager, Imager::ExtUtils, Imager::API, Imager::APIRef, samples/inline_replace_color.pl