iTextSharp的zlib压缩中的IndexOutOfRangeException

时间:2014-11-17 10:09:22

标签: itextsharp zlib

我在iTextSharp的zlib实现中发现了一个非常恼人和严重的问题。很难重现,因为它取决于进入PDF的实际数据,但在某些情况下,会发生以下异常:

System.IndexOutOfRangeException: Index was outside the bounds of the array.
at System.util.zlib.Tree.d_code(Int32 dist)
at System.util.zlib.Deflate.compress_block(Int16[] ltree, Int16[] dtree)

1 个答案:

答案 0 :(得分:2)

System.util.zlib.Tree.cs中,显然没有范围检查,只是假设事情永远不会出错。添加以下(byte)演员似乎是一个解决方案:

internal static int d_code(int dist){
  return ((dist) < 256 ? _dist_code[dist] : _dist_code[256+(byte)((dist)>>7)]);
}