BUGTRAQ ID: 33827
libpng是多种应用程序所使用的解析PNG图形格式的函数库。
如果应用程序耗尽内存的话,libpng库在释放数组单元之前没有正确的初始化某些指针数组,这可能导致内存破坏。
在malloc包含有N个单元的数组时:
for (i=0; i<N; i++)
malloc element[i];
如果应用程序在循环期间耗尽了内存的话,就不会初始化一些单元指针,之后Libpng会跳转到一个试图释放数组中所有单元(包括未初始化的区)的cleanup进程。
libpng库存在5种出现bug的情况。一种在png_read_png()函数中,仅有明确调用png_read_png()的应用才受影响;另一种情况为pCAL块处理器,任何没有禁止通过调用set_keep_unknown_chunks()来处理pCAL块的应用都受影响;其他三种情况为创建16位gamma表的代码,即使使用png_set_strip_16()将16位输入降为8位所有的应用块也都受这三种情况的影响,这是由libpng执行转换的次序决定的。
0
libpng libpng 1.2.x
libpng libpng 1.0.x
厂商补丁:
libpng
------
目前厂商已经发布了升级补丁以修复这个安全问题,请到厂商的主页下载:
<a href=http://libpng.sourceforge.net/ target=_blank rel=external nofollow>http://libpng.sourceforge.net/</a>
暂无评论