According to the upstream tracker (see ${URL}): In the load_resources function (io-icns.c:63), inside the size switch (line 101), all the cases set plen or mlen to: blocklen - sizeof (IcnsBlockHeader); See lines 109, 117, 127, 134, 139, 146, 151, 158 and 163. blocklen is set in line 95: blocklen = GUINT32_FROM_BE (header->size); There are no checks on the size of blocklen and if it is set to less than sizeof (IcnsBlockHeader) (should be 8) there is an integer underflow. This is dangerous because it's value is later passed to gdk_pixbuf_loader_write (line 262) when size is 256. This allows an attacker to craft a file that will end up calling to a desired loader with a bogus size that is much larger than the actual buffer size. Reproducible: Always
Duplicates of https://bugs.gentoo.org/show_bug.cgi?id=611390
*** This bug has been marked as a duplicate of bug 611390 ***