#define PNG_BYTES_TO_CHECK 4
-
+unsigned
+i_png_lib_version(void) {
+ return png_access_version_number();
+}
static void
wiol_read_data(png_structp png_ptr, png_bytep data, png_size_t length) {
* implementation ever matches the documentation.
*
* https://sourceforge.net/tracker/?func=detail&atid=105624&aid=3314943&group_id=5624
+ * fixed in libpng 1.5.3
*/
if (width > PNG_DIM_MAX || height > PNG_DIM_MAX) {
i_push_error(0, "Image too large for PNG");
int channels,pass;
unsigned int sig_read;
i_png_read_state rs;
+ i_img_dim wmax, hmax;
+ size_t bytes;
rs.warnings = NULL;
sig_read = 0;
cleanup_read_state(&rs);
return NULL;
}
+
+ /* we do our own limit checks */
+ png_set_user_limits(png_ptr, PNG_DIM_MAX, PNG_DIM_MAX);
png_set_sig_bytes(png_ptr, sig_read);
png_read_info(png_ptr, info_ptr);
i_img *i_readpng_wiol(io_glue *ig);
undef_int i_writepng_wiol(i_img *im, io_glue *ig);
+unsigned i_png_lib_version(void);
#endif
plan tests => 39;
+diag("Library version " . Imager::File::PNG::i_png_lib_version());
+
my $green = i_color_new(0, 255, 0, 255);
my $blue = i_color_new(0, 0, 255, 255);
my $red = i_color_new(255, 0, 0, 255);